diff --git a/CMakeLists.txt b/CMakeLists.txt
index 95667e42e9..8101f9f6e1 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -55,17 +55,17 @@ if (${RF_BOARD} STREQUAL "OAI_USRP")
find_package(Boost REQUIRED)
elseif (${RF_BOARD} STREQUAL "OAI_IRIS")
- include_directories("${OPENAIR_DIR}/sdr/IRIS/USERSPACE/LIB/")
+ include_directories("${OPENAIR_DIR}/radio/IRIS/USERSPACE/LIB/")
set(HW_SOURCE ${HW_SOURCE}
- ${OPENAIR_DIR}/sdr/IRIS/USERSPACE/LIB/iris_lib.cpp)
+ ${OPENAIR_DIR}/radio/IRIS/USERSPACE/LIB/iris_lib.cpp)
LINK_DIRECTORIES("/usr/local/lib")
set(option_HW_lib "-lSoapySDR -rdynamic -ldl")
elseif (${RF_BOARD} STREQUAL "OAI_AW2SORI")
- include_directories("${OPENAIR_DIR}/sdr/AW2SORI")
+ include_directories("${OPENAIR_DIR}/radio/AW2SORI")
set(HW_SOURCE ${HW_SOURCE}
- ${OPENAIR_DIR}/sdr/AW2SORI/ARCH/AW2SORI/oaiori.c)
+ ${OPENAIR_DIR}/radio/AW2SORI/ARCH/AW2SORI/oaiori.c)
LINK_DIRECTORIES("/usr/local/lib")
set(openair_HW_lib "-shared -fPIC -msse4 -g -ggdb -lori")
@@ -193,43 +193,56 @@ endif ()
if (CMAKE_BUILD_TYPE STREQUAL "")
set(CMAKE_BUILD_TYPE "RelWithDebInfo")
endif()
-message("CMAKE_BUILD_TYPE is ${CMAKE_BUILD_TYPE}")
+message(STATUS "CMAKE_BUILD_TYPE is ${CMAKE_BUILD_TYPE}")
add_list_string_option(CMAKE_BUILD_TYPE "RelWithDebInfo" "Choose the type of build, options are: None(CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel." Debug Release RelWithDebInfo MinSizeRel)
-Message("Architecture is ${CMAKE_SYSTEM_PROCESSOR}")
# in case /proc/cpuinfo exists we want to inspect available Intrinsics
# -so not to go always through SIMDE emulation
# -so to avoid AVX512 instructions generation by gcc
-if(EXISTS "/proc/cpuinfo")
- file(STRINGS "/proc/cpuinfo" CPUINFO REGEX flags LIMIT_COUNT 1)
- message("AVX512 is ${AVX512}")
- message("AVX2 is ${AVX2}")
- if ("${AVX512}" STREQUAL "False")
- set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -mno-avx512f -march=native -DSIMDE_X86_AVX2_NATIVE -DSIMDE_X86_AVX2_NATIVE -DSIMDE_X86_AVX512BW_NATIVE -DSIMDE_X86_AVX512F_NATIVE -DSIMDE_X86_AVX512VL_NATIVE -DSIMDE_X86_AVX_NATIVE -DSIMDE_X86_AVX_NATIVE -DSIMDE_X86_F16C_NATIVE -DSIMDE_X86_FMA_NATIVE -DSIMDE_X86_GFNI_NATIVE -DSIMDE_X86_MMX_NATIVE -DSIMDE_X86_PCLMUL_NATIVE -DSIMDE_X86_SSE2_NATIVE -DSIMDE_X86_SSE3_NATIVE -DSIMDE_X86_SSE4_1_NATIVE -DSIMDE_X86_SSE4_2_NATIVE -DSIMDE_X86_SSE_NATIVE -DSIMDE_X86_SSSE3_NATIVE -DSIMDE_X86_VPCLMULQDQ_NATIVE -DSIMDE_X86_XOP_HAVE_COM_ -DSIMDE_X86_XOP_NATIVE")
- else()
- set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -mavx512bw -march=skylake-avx512 -mtune=skylake-avx512")
- endif()
- if (CPUINFO MATCHES "avx2" AND "${AVX2}" STREQUAL "True")
- set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -DSIMDE_X86_AVX2_NATIVE -DSIMDE_X86_VPCLMULQDQ_NATIVE")
- endif()
- if (CPUINFO MATCHES "sse4_1")
- set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -DSIMDE_X86_SSE4_1_NATIVE")
- endif()
- if (CPUINFO MATCHES "sse4_2")
- set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -DSIMDE_X86_SSE4_2_NATIVE")
- endif()
- if (CPUINFO MATCHES "ssse3")
- set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -DSIMDE_X86_SSSE3_NATIVE")
- endif()
+execute_process(COMMAND uname -m OUTPUT_VARIABLE CPUARCH OUTPUT_STRIP_TRAILING_WHITESPACE)
+message(STATUS "CPUARCH ${CPUARCH}")
+if(EXISTS "/proc/cpuinfo")
+ file(STRINGS "/proc/cpuinfo" CPUFLAGS REGEX flags LIMIT_COUNT 1)
+else()
+ message(WARNING "did not find /proc/cpuinfo -- not setting any x86-specific compilation variables")
+endif()
+
+eval_boolean(AUTODETECT_AVX512 DEFINED CPUFLAGS AND CPUFLAGS MATCHES "avx512")
+add_boolean_option(AVX512 ${AUTODETECT_AVX512} "Whether AVX512 intrinsics is available on the host processor")
+
+eval_boolean(AUTODETECT_AVX2 DEFINED CPUFLAGS AND CPUFLAGS MATCHES "avx2")
+add_boolean_option(AVX2 ${AUTODETECT_AVX2} "Whether AVX2 intrinsics is available on the host processor")
+
+if(${CPUARCH} STREQUAL "x86_64" AND DEFINED CPUFLAGS)
+ # The following intrinsics are assumed to be available on any x86 system
+ # (avx, f16c, fma, gnfi, mmx, pclmul, sse, sse2, sse3, xop)
+ set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -DSIMDE_X86_AVX_NATIVE -DSIMDE_X86_AVX_NATIVE -DSIMDE_X86_F16C_NATIVE -DSIMDE_X86_FMA_NATIVE -DSIMDE_X86_GFNI_NATIVE -DSIMDE_X86_MMX_NATIVE -DSIMDE_X86_PCLMUL_NATIVE -DSIMDE_X86_SSE2_NATIVE -DSIMDE_X86_SSE3_NATIVE -DSIMDE_X86_SSE_NATIVE -DSIMDE_X86_XOP_HAVE_COM_ -DSIMDE_X86_XOP_NATIVE")
+ message(STATUS "AVX512 intrinsics are ${AVX512}")
+ if(${AVX512})
+ set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -DSIMDE_X86_AVX512BW_NATIVE -DSIMDE_X86_AVX512F_NATIVE -DSIMDE_X86_AVX512VL_NATIVE -mavx512bw -march=skylake-avx512 -mtune=skylake-avx512")
+ else()
+ set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -mno-avx512f -march=native")
+ endif()
+ message(STATUS "AVX2 intrinsics are ${AVX2}")
+ if(${AVX2})
+ set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -DSIMDE_X86_AVX2_NATIVE -DSIMDE_X86_VPCLMULQDQ_NATIVE")
+ endif()
+ if (CPUINFO MATCHES "sse4_1")
+ set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -DSIMDE_X86_SSE4_1_NATIVE")
+ endif()
+ if(CPUINFO MATCHES "sse4_2")
+ set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -DSIMDE_X86_SSE4_2_NATIVE")
+ endif()
+ if(CPUINFO MATCHES "ssse3")
+ set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -DSIMDE_X86_SSSE3_NATIVE")
+ endif()
+elseif(${CPUARCH} NOT STREQUAL "x86_64")
+ message(FATAL_ERROR "Cannot compile for CPU architecture ${CPUARCH}")
endif()
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -fno-var-tracking-assignments -march=native")
-Message("C_FLAGS_PROCESSOR is ${C_FLAGS_PROCESSOR}")
-
-#
# add autotools definitions that were maybe used!
-
add_definitions("-DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_FCNTL_H=1 -DHAVE_ARPA_INET_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_STRERROR=1 -DHAVE_SOCKET=1 -DHAVE_MEMSET=1 -DHAVE_GETTIMEOFDAY=1 -DHAVE_STDLIB_H=1 -DHAVE_MALLOC=1 -DHAVE_LIBSCTP")
set(commonOpts "-pipe -Wno-packed-bitfield-compat -fPIC -Wall -fno-strict-aliasing -rdynamic")
@@ -276,7 +289,7 @@ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -ggdb2 -Wl,-rpath -Wl,${C
# set a flag for changes in the source code
# these changes are related to hardcoded path to include .h files
set(debugOpt "-ggdb2 -DMALLOC_CHECK_=3 -fno-delete-null-pointer-checks")
-set(CMAKE_C_FLAGS_DEBUG "${debugOpt} -O0")
+set(CMAKE_C_FLAGS_DEBUG "${debugOpt} -Og")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${debugOpt} -O2")
set(CMAKE_C_FLAGS_RELEASE "-O3")
@@ -290,7 +303,6 @@ set(GIT_COMMIT_DATE "UNKNOWN")
find_package(Git)
if(GIT_FOUND)
- message("git found: ${GIT_EXECUTABLE}")
# Get the current working branch
execute_process(
COMMAND git rev-parse --abbrev-ref HEAD
@@ -752,53 +764,53 @@ set (SHLIB_LOADER_SOURCES
######################################################################
set(HWLIB_USRP_SOURCE
- ${OPENAIR_DIR}/sdr/USRP/USERSPACE/LIB/usrp_lib.cpp
+ ${OPENAIR_DIR}/radio/USRP/USERSPACE/LIB/usrp_lib.cpp
)
add_library(oai_usrpdevif MODULE ${HWLIB_USRP_SOURCE} )
target_include_directories(oai_usrpdevif PRIVATE
- "${OPENAIR_DIR}/sdr/USRP/USERSPACE/LIB/"
+ "${OPENAIR_DIR}/radio/USRP/USERSPACE/LIB/"
${Boost_INCLUDE_DIR}
)
target_link_libraries(oai_usrpdevif uhd)
-include_directories("${OPENAIR_DIR}/sdr/BLADERF/USERSPACE/LIB/")
+include_directories("${OPENAIR_DIR}/radio/BLADERF/USERSPACE/LIB/")
set(HWLIB_BLADERF_SOURCE
- ${OPENAIR_DIR}/sdr/BLADERF/USERSPACE/LIB/bladerf_lib.c
+ ${OPENAIR_DIR}/radio/BLADERF/USERSPACE/LIB/bladerf_lib.c
)
add_library(oai_bladerfdevif MODULE ${HWLIB_BLADERF_SOURCE} )
target_link_libraries(oai_bladerfdevif bladeRF)
-include_directories("${OPENAIR_DIR}/sdr/LMSSDR/USERSPACE/LIB/")
+include_directories("${OPENAIR_DIR}/radio/LMSSDR/USERSPACE/LIB/")
set(HWLIB_LMSSDR_SOURCE
- ${OPENAIR_DIR}/sdr/LMSSDR/USERSPACE/LIB/lms_lib.cpp
+ ${OPENAIR_DIR}/radio/LMSSDR/USERSPACE/LIB/lms_lib.cpp
)
add_library(oai_lmssdrdevif MODULE ${HWLIB_LMSSDR_SOURCE} )
target_include_directories(oai_lmssdrdevif PRIVATE /usr/local/include/lime)
target_link_libraries(oai_lmssdrdevif LimeSuite )
-include_directories("${OPENAIR_DIR}/sdr/ETHERNET/USERSPACE/LIB/")
+include_directories("${OPENAIR_DIR}/radio/ETHERNET/USERSPACE/LIB/")
set(TPLIB_ETHERNET_SOURCE
- ${OPENAIR_DIR}/sdr/ETHERNET/USERSPACE/LIB/ethernet_lib.c
- ${OPENAIR_DIR}/sdr/ETHERNET/USERSPACE/LIB/eth_udp.c
- ${OPENAIR_DIR}/sdr/ETHERNET/USERSPACE/LIB/eth_raw.c
+ ${OPENAIR_DIR}/radio/ETHERNET/USERSPACE/LIB/ethernet_lib.c
+ ${OPENAIR_DIR}/radio/ETHERNET/USERSPACE/LIB/eth_udp.c
+ ${OPENAIR_DIR}/radio/ETHERNET/USERSPACE/LIB/eth_raw.c
)
add_library(oai_eth_transpro MODULE ${TPLIB_ETHERNET_SOURCE} )
-include_directories("${OPENAIR_DIR}/sdr/AW2SORI/")
+include_directories("${OPENAIR_DIR}/radio/AW2SORI/")
link_directories("/usr/local/lib")
set(HWLIB_AW2SORI_SOURCE
- ${OPENAIR_DIR}/sdr/AW2SORI/oaiori.c
+ ${OPENAIR_DIR}/radio/AW2SORI/oaiori.c
)
add_library(aw2sori_transpro MODULE ${HWLIB_AW2SORI_SOURCE})
target_compile_options(aw2sori_transpro PRIVATE -shared -fPIC -msse4 -g -ggdb -DLITE_COMPILATION)
target_link_libraries(aw2sori_transpro libori.so)
-include_directories("${OPENAIR_DIR}/sdr/IRIS/USERSPACE/LIB/")
+include_directories("${OPENAIR_DIR}/radio/IRIS/USERSPACE/LIB/")
set(option_HWIRISLIB_lib "-l SoapySDR")
set(HWLIB_IRIS_SOURCE
- ${OPENAIR_DIR}/sdr/IRIS/USERSPACE/LIB/iris_lib.cpp
+ ${OPENAIR_DIR}/radio/IRIS/USERSPACE/LIB/iris_lib.cpp
)
add_library(oai_irisdevif MODULE ${HWLIB_IRIS_SOURCE})
target_include_directories(oai_irisdevif PRIVATE /usr/local/lib/SoapySDR/modules0.7/)
@@ -811,11 +823,11 @@ target_link_libraries(oai_irisdevif SoapySDR)
include_directories ("/usr/include/dpdk")
set(HWLIB_BENETEL_4G_SOURCE
- ${OPENAIR_DIR}/sdr/ETHERNET/benetel/4g/benetel.c
- ${OPENAIR_DIR}/sdr/ETHERNET/benetel/4g/shared_buffers.c
- ${OPENAIR_DIR}/sdr/ETHERNET/benetel/4g/low.c
- ${OPENAIR_DIR}/sdr/ETHERNET/benetel/4g/low_dpdk.c
- ${OPENAIR_DIR}/sdr/ETHERNET/benetel/4g/dpdk_driver.c
+ ${OPENAIR_DIR}/radio/ETHERNET/benetel/4g/benetel.c
+ ${OPENAIR_DIR}/radio/ETHERNET/benetel/4g/shared_buffers.c
+ ${OPENAIR_DIR}/radio/ETHERNET/benetel/4g/low.c
+ ${OPENAIR_DIR}/radio/ETHERNET/benetel/4g/low_dpdk.c
+ ${OPENAIR_DIR}/radio/ETHERNET/benetel/4g/dpdk_driver.c
)
add_library(benetel_4g MODULE ${HWLIB_BENETEL_4G_SOURCE} )
@@ -829,11 +841,11 @@ TARGET_LINK_LIBRARIES(benetel_4g pthread dl rt m numa)
######################################################################
set(HWLIB_BENETEL_5G_SOURCE
- ${OPENAIR_DIR}/sdr/ETHERNET/benetel/5g/benetel.c
- ${OPENAIR_DIR}/sdr/ETHERNET/benetel/5g/shared_buffers.c
- ${OPENAIR_DIR}/sdr/ETHERNET/benetel/5g/low.c
- ${OPENAIR_DIR}/sdr/ETHERNET/benetel/5g/low_dpdk.c
- ${OPENAIR_DIR}/sdr/ETHERNET/benetel/5g/dpdk_driver.c
+ ${OPENAIR_DIR}/radio/ETHERNET/benetel/5g/benetel.c
+ ${OPENAIR_DIR}/radio/ETHERNET/benetel/5g/shared_buffers.c
+ ${OPENAIR_DIR}/radio/ETHERNET/benetel/5g/low.c
+ ${OPENAIR_DIR}/radio/ETHERNET/benetel/5g/low_dpdk.c
+ ${OPENAIR_DIR}/radio/ETHERNET/benetel/5g/dpdk_driver.c
)
add_library(benetel_5g MODULE ${HWLIB_BENETEL_5G_SOURCE} )
@@ -870,7 +882,7 @@ endif ()
##########################################################
-include_directories ("${OPENAIR_DIR}/sdr/COMMON")
+include_directories ("${OPENAIR_DIR}/radio/COMMON")
##############################################################
# ???!!! TO BE DOCUMENTED OPTIONS !!!???
@@ -1035,7 +1047,7 @@ include_directories("${OPENAIR3_DIR}/ocp-gtpu")
include_directories("${OPENAIR3_DIR}/M3AP")
include_directories("${OPENAIR3_DIR}/MME_APP")
include_directories("${OPENAIR_DIR}/targets/COMMON")
-include_directories("${OPENAIR_DIR}/sdr/COMMON")
+include_directories("${OPENAIR_DIR}/radio/COMMON")
include_directories("${OPENAIR2_DIR}/ENB_APP/CONTROL_MODULES/PHY")
include_directories("${OPENAIR2_DIR}/ENB_APP/CONTROL_MODULES/MAC")
include_directories("${OPENAIR2_DIR}/ENB_APP/CONTROL_MODULES/RRC")
@@ -2112,12 +2124,6 @@ include_directories("${OPENAIR1_DIR}/SCHED_NR_UE")
# CN libs
##########################
-add_library(CN_UTILS
- ${OPENAIR3_DIR}/UTILS/conversions.c
- ${OPENAIR3_DIR}/UTILS/enum_string.c
- ${OPENAIR3_DIR}/UTILS/mcc_mnc_itu.c
- )
-
add_library (GTPV1U
${NR_RRC_DIR}/rrc_gNB_GTPV1U.c
${RRC_DIR}/rrc_eNB_GTPV1U.c
@@ -2539,15 +2545,15 @@ target_link_libraries(nrscope ${XFORMS_LIBRARIES})
add_library(rfsimulator MODULE
- ${OPENAIR_DIR}/sdr/rfsimulator/simulator.c
- ${OPENAIR_DIR}/sdr/rfsimulator/apply_channelmod.c
- ${OPENAIR_DIR}/sdr/rfsimulator/new_channel_sim.c
+ ${OPENAIR_DIR}/radio/rfsimulator/simulator.c
+ ${OPENAIR_DIR}/radio/rfsimulator/apply_channelmod.c
+ ${OPENAIR_DIR}/radio/rfsimulator/new_channel_sim.c
${OPENAIR1_DIR}/PHY/TOOLS/signal_energy.c
)
target_link_libraries(rfsimulator SIMU_COMMON ${ATLAS_LIBRARIES})
add_library(oai_iqplayer MODULE
- ${OPENAIR_DIR}/sdr/iqplayer/iqplayer_lib.c
+ ${OPENAIR_DIR}/radio/iqplayer/iqplayer_lib.c
)
set(CMAKE_MODULE_PATH "${OPENAIR_DIR}/cmake_targets/tools/MODULES" "${CMAKE_MODULE_PATH}")
@@ -2608,7 +2614,7 @@ add_executable(nfapi_test
)
add_executable(replay_node
- ${OPENAIR_DIR}/sdr/rfsimulator/stored_node.c
+ ${OPENAIR_DIR}/radio/rfsimulator/stored_node.c
)
target_link_libraries (replay_node minimal_lib)
@@ -2633,10 +2639,10 @@ add_executable(lte-softmodem
${OPENAIR_DIR}/executables/softmodem-common.c
${OPENAIR2_DIR}/ENB_APP/NB_IoT_interface.c
${OPENAIR1_DIR}/SIMULATION/TOOLS/taus.c
- ${OPENAIR_TARGETS}/COMMON/create_tasks.c
- ${OPENAIR_TARGETS}/COMMON/create_tasks_mbms.c
- ${OPENAIR_DIR}/sdr/COMMON/common_lib.c
- ${OPENAIR_DIR}/sdr/COMMON/record_player.c
+ ${OPENAIR_DIR}/executables/create_tasks.c
+ ${OPENAIR_DIR}/executables/create_tasks_mbms.c
+ ${OPENAIR_DIR}/radio/COMMON/common_lib.c
+ ${OPENAIR_DIR}/radio/COMMON/record_player.c
${OPENAIR2_DIR}/RRC/NAS/nas_config.c
${OPENAIR2_DIR}/RRC/NAS/rb_config.c
${OPENAIR2_DIR}/F1AP/dummy_enb.c
@@ -2673,10 +2679,10 @@ add_executable(ocp-enb
${OPENAIR_DIR}/executables/transport_split.c
${OPENAIR2_DIR}/ENB_APP/NB_IoT_interface.c
${OPENAIR1_DIR}/SIMULATION/TOOLS/taus.c
- ${OPENAIR_TARGETS}/COMMON/create_tasks.c
- ${OPENAIR_TARGETS}/COMMON/create_tasks_mbms.c
- ${OPENAIR_DIR}/sdr/COMMON/common_lib.c
- ${OPENAIR_DIR}/sdr/COMMON/record_player.c
+ ${OPENAIR_DIR}/executables/create_tasks.c
+ ${OPENAIR_DIR}/executables/create_tasks_mbms.c
+ ${OPENAIR_DIR}/radio/COMMON/common_lib.c
+ ${OPENAIR_DIR}/radio/COMMON/record_player.c
${OPENAIR2_DIR}/RRC/NAS/nas_config.c
${OPENAIR2_DIR}/RRC/NAS/rb_config.c
${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/netlink_init.c
@@ -2704,8 +2710,8 @@ target_link_libraries (ocp-enb ${LIBXML2_LIBRARIES} pthread m CONFIG_LIB rt cryp
add_executable(oairu
${OPENAIR_TARGETS}/RT/USER/lte-ru.c
${OPENAIR_TARGETS}/RT/USER/ru_control.c
- ${OPENAIR_DIR}/sdr/COMMON/common_lib.c
- ${OPENAIR_DIR}/sdr/COMMON/record_player.c
+ ${OPENAIR_DIR}/radio/COMMON/common_lib.c
+ ${OPENAIR_DIR}/radio/COMMON/record_player.c
${OPENAIR_DIR}/executables/softmodem-common.c
${OPENAIR_DIR}/openair1/SCHED/phy_procedures_lte_common.c
${OPENAIR_DIR}/executables/main_ru.c
@@ -2729,9 +2735,9 @@ add_executable(lte-uesoftmodem
${OPENAIR_TARGETS}/RT/USER/lte-ue.c
${OPENAIR_TARGETS}/RT/USER/lte-uesoftmodem.c
${OPENAIR_DIR}/executables/softmodem-common.c
- ${OPENAIR_TARGETS}/COMMON/create_tasks_ue.c
- ${OPENAIR_DIR}/sdr/COMMON/common_lib.c
- ${OPENAIR_DIR}/sdr/COMMON/record_player.c
+ ${OPENAIR_DIR}/executables/create_tasks_ue.c
+ ${OPENAIR_DIR}/radio/COMMON/common_lib.c
+ ${OPENAIR_DIR}/radio/COMMON/record_player.c
${OPENAIR2_DIR}/RRC/NAS/nas_config.c
${OPENAIR2_DIR}/RRC/NAS/rb_config.c
${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/netlink_init.c
@@ -2776,8 +2782,8 @@ add_executable(nr-softmodem
${OPENAIR_DIR}/executables/nr-softmodem.c
${OPENAIR_DIR}/executables/softmodem-common.c
${OPENAIR1_DIR}/SIMULATION/TOOLS/taus.c
- ${OPENAIR_DIR}/sdr/COMMON/common_lib.c
- ${OPENAIR_DIR}/sdr/COMMON/record_player.c
+ ${OPENAIR_DIR}/radio/COMMON/common_lib.c
+ ${OPENAIR_DIR}/radio/COMMON/record_player.c
${OPENAIR2_DIR}/RRC/NAS/nas_config.c
${OPENAIR2_DIR}/RRC/NAS/rb_config.c
${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/netlink_init.c
@@ -2821,8 +2827,8 @@ add_executable(nr-uesoftmodem
${OPENAIR_DIR}/executables/nr-ue.c
${OPENAIR_DIR}/executables/softmodem-common.c
${OPENAIR1_DIR}/SIMULATION/TOOLS/taus.c
- ${OPENAIR_DIR}/sdr/COMMON/common_lib.c
- ${OPENAIR_DIR}/sdr/COMMON/record_player.c
+ ${OPENAIR_DIR}/radio/COMMON/common_lib.c
+ ${OPENAIR_DIR}/radio/COMMON/record_player.c
${OPENAIR2_DIR}/RRC/NAS/nas_config.c
${OPENAIR2_DIR}/LAYER2/NR_MAC_COMMON/nr_mac_common.c
${OPENAIR2_DIR}/RRC/NAS/rb_config.c
@@ -2875,7 +2881,7 @@ target_link_libraries (dlsim_tm4
add_executable(rftest
${OPENAIR_DIR}/openair1/PHY/TOOLS/calibration_test.c
${OPENAIR_DIR}/openair1/PHY/TOOLS/calibration_scope.c
- ${OPENAIR_DIR}/sdr/COMMON/common_lib.c
+ ${OPENAIR_DIR}/radio/COMMON/common_lib.c
${OPENAIR_DIR}/executables/softmodem-common.c
${SHLIB_LOADER_SOURCES}
)
diff --git a/ci-scripts/cls_amarisoft_ue.py b/ci-scripts/cls_amarisoft_ue.py
index 367bfaac3f..9f4976792d 100644
--- a/ci-scripts/cls_amarisoft_ue.py
+++ b/ci-scripts/cls_amarisoft_ue.py
@@ -61,7 +61,7 @@ class AS_UE:
def KillASUE(self):
mySSH = sshconnection.SSHConnection()
mySSH.open(self.HostIPAddress, self.HostUsername, self.HostPassword)
- mySSH.command('killall --signal SIGKILL lteue-avx2', '#', 5)
+ mySSH.command('killall --signal SIGKILL lteue-avx2', '\$', 5)
mySSH.close()
def RunScenario(self):
@@ -70,10 +70,10 @@ class AS_UE:
logging.debug("Deleting old artifacts :")
cmd='rm -rf ' + self.Ping + ' ' + self.UELog
- mySSH.command(cmd,'#',5)
+ mySSH.command(cmd, '\$',5)
logging.debug("Running scenario :")
cmd='echo $USER; nohup '+self.Cmd + ' ' + self.Config + ' &'
- mySSH.command(cmd,'#',5)
+ mySSH.command(cmd, '\$',5)
mySSH.close()
diff --git a/ci-scripts/cls_containerize.py b/ci-scripts/cls_containerize.py
index 5cf6b76b38..e3893b8179 100644
--- a/ci-scripts/cls_containerize.py
+++ b/ci-scripts/cls_containerize.py
@@ -81,7 +81,7 @@ def CreateWorkspace(sshSession, sourcePath, ranRepository, ranCommitID, ranTarge
if ranTargetBranch == '':
ranTargetBranch = 'develop'
logging.debug(f'Merging with the target branch: {ranTargetBranch}')
- sshSession.command(f'git merge --ff origin/{ranTargetBranch} -m "Temporary merge for CI"', '\$', 5)
+ sshSession.command(f'git merge --ff origin/{ranTargetBranch} -m "Temporary merge for CI"', '\$', 30)
def CopyLogsToExecutor(sshSession, sourcePath, log_name, scpIp, scpUser, scpPw):
sshSession.command(f'cd {sourcePath}/cmake_targets', '\$', 5)
@@ -208,6 +208,7 @@ class Containerize():
self.imageToCopy = ''
self.registrySvrId = ''
self.testSvrId = ''
+ self.imageToPull = []
#checkers from xml
self.ran_checkers={}
@@ -547,72 +548,194 @@ class Containerize():
HTML.CreateHtmlTestRow('commit ' + tag, 'OK', CONST.ALL_PROCESSES_OK)
HTML.CreateHtmlNextTabHeaderTestRow(collectInfo, allImagesSize)
- def Copy_Image_to_Test_Server(self, HTML):
- imageTag = 'develop'
- if (self.ranAllowMerge):
- imageTag = 'ci-temp'
+ def ImageTagToUse(self, imageName):
+ shortCommit = self.ranCommitID[0:8]
+ if self.ranAllowMerge:
+ tagToUse = f'{self.ranBranch}-{shortCommit}'
+ else:
+ tagToUse = f'develop-{shortCommit}'
+ fullTag = f'porcepix.sboai.cs.eurecom.fr/{imageName}:{tagToUse}'
+ return fullTag
- lSsh = SSH.SSHConnection()
- # Going to the Docker Registry server
+ def Push_Image_to_Local_Registry(self, HTML):
if self.registrySvrId == '0':
lIpAddr = self.eNBIPAddress
lUserName = self.eNBUserName
lPassWord = self.eNBPassword
+ lSourcePath = self.eNBSourceCodePath
elif self.registrySvrId == '1':
lIpAddr = self.eNB1IPAddress
lUserName = self.eNB1UserName
lPassWord = self.eNB1Password
+ lSourcePath = self.eNB1SourceCodePath
elif self.registrySvrId == '2':
lIpAddr = self.eNB2IPAddress
lUserName = self.eNB2UserName
lPassWord = self.eNB2Password
- lSsh.open(lIpAddr, lUserName, lPassWord)
- lSsh.command('docker save ' + self.imageToCopy + ':' + imageTag + ' | gzip --fast > ' + self.imageToCopy + '-' + imageTag + '.tar.gz', '\$', 60)
- ret = lSsh.copyin(lIpAddr, lUserName, lPassWord, '~/' + self.imageToCopy + '-' + imageTag + '.tar.gz', '.')
- if ret != 0:
- HTML.CreateHtmlTestRow('N/A', 'KO', CONST.ALL_PROCESSES_OK)
- self.exitStatus = 1
- return False
- lSsh.command('rm ' + self.imageToCopy + '-' + imageTag + '.tar.gz', '\$', 60)
- if lSsh.getBefore().count('cannot remove'):
- HTML.CreateHtmlTestRow('file not created by docker save', 'KO', CONST.ALL_PROCESSES_OK)
- self.exitStatus = 1
- return False
- lSsh.close()
+ lSourcePath = self.eNB2SourceCodePath
+ if lIpAddr == '' or lUserName == '' or lPassWord == '' or lSourcePath == '':
+ HELP.GenericHelp(CONST.Version)
+ sys.exit('Insufficient Parameter')
+ logging.debug('Pushing images from server: ' + lIpAddr)
+ mySSH = SSH.SSHConnection()
+ mySSH.open(lIpAddr, lUserName, lPassWord)
- # Going to the Test Server
+ mySSH.command('docker login -u oaicicd -p oaicicd porcepix.sboai.cs.eurecom.fr', '\$', 5)
+ if re.search('Login Succeeded', mySSH.getBefore()) is None:
+ msg = 'Could not log into local registry'
+ logging.error(msg)
+ mySSH.close()
+ HTML.CreateHtmlTestRow(msg, 'KO', CONST.ALL_PROCESSES_OK)
+ return False
+
+ orgTag = 'develop'
+ if self.ranAllowMerge:
+ orgTag = 'ci-temp'
+ imageNames = ['oai-enb', 'oai-gnb', 'oai-lte-ue', 'oai-nr-ue', 'oai-lte-ru']
+ for image in imageNames:
+ tagToUse = self.ImageTagToUse(image)
+ mySSH.command(f'docker image tag {image}:{orgTag} {tagToUse}', '\$', 5)
+ mySSH.command(f'docker push {tagToUse}', '\$', 120)
+ if re.search(': digest:', mySSH.getBefore()) is None:
+ logging.debug(mySSH.getBefore())
+ msg = f'Could not push {image} to local registry : {tagToUse}'
+ logging.error(msg)
+ mySSH.close()
+ HTML.CreateHtmlTestRow(msg, 'KO', CONST.ALL_PROCESSES_OK)
+ return False
+ mySSH.command(f'docker rmi {tagToUse} {image}:{orgTag}', '\$', 30)
+
+ mySSH.command('docker logout porcepix.sboai.cs.eurecom.fr', '\$', 5)
+ if re.search('Removing login credentials', mySSH.getBefore()) is None:
+ msg = 'Could not log off from local registry'
+ logging.error(msg)
+ mySSH.close()
+ HTML.CreateHtmlTestRow(msg, 'KO', CONST.ALL_PROCESSES_OK)
+ return False
+
+ mySSH.close()
+ HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK)
+ return True
+
+ def Pull_Image_from_Local_Registry(self, HTML):
+ # This method can be called either onto a remote server (different from python executor)
+ # or directly on the python executor (ie lIpAddr == 'none')
if self.testSvrId == '0':
lIpAddr = self.eNBIPAddress
lUserName = self.eNBUserName
lPassWord = self.eNBPassword
+ lSourcePath = self.eNBSourceCodePath
elif self.testSvrId == '1':
lIpAddr = self.eNB1IPAddress
lUserName = self.eNB1UserName
lPassWord = self.eNB1Password
+ lSourcePath = self.eNB1SourceCodePath
elif self.testSvrId == '2':
lIpAddr = self.eNB2IPAddress
lUserName = self.eNB2UserName
lPassWord = self.eNB2Password
- lSsh.open(lIpAddr, lUserName, lPassWord)
- lSsh.copyout(lIpAddr, lUserName, lPassWord, './' + self.imageToCopy + '-' + imageTag + '.tar.gz', '~')
- # copyout has no return code and will quit if something fails
- lSsh.command('docker rmi ' + self.imageToCopy + ':' + imageTag, '\$', 10)
- lSsh.command('docker load < ' + self.imageToCopy + '-' + imageTag + '.tar.gz', '\$', 60)
- if lSsh.getBefore().count('o such file') or lSsh.getBefore().count('invalid tar header'):
- logging.debug(lSsh.getBefore())
- HTML.CreateHtmlTestRow('problem during docker load', 'KO', CONST.ALL_PROCESSES_OK)
- self.exitStatus = 1
- return False
- lSsh.command('rm ' + self.imageToCopy + '-' + imageTag + '.tar.gz', '\$', 60)
- if lSsh.getBefore().count('cannot remove'):
- HTML.CreateHtmlTestRow('file not copied during scp?', 'KO', CONST.ALL_PROCESSES_OK)
- self.exitStatus = 1
- return False
- lSsh.close()
+ lSourcePath = self.eNB2SourceCodePath
+ if lIpAddr == '' or lUserName == '' or lPassWord == '' or lSourcePath == '':
+ HELP.GenericHelp(CONST.Version)
+ sys.exit('Insufficient Parameter')
+ if lIpAddr != 'none':
+ logging.debug('Pulling images onto server: ' + lIpAddr)
+ mySSH = SSH.SSHConnection()
+ mySSH.open(lIpAddr, lUserName, lPassWord)
+ else:
+ logging.debug('Pulling images locally')
- if os.path.isfile('./' + self.imageToCopy + '-' + imageTag + '.tar.gz'):
- os.remove('./' + self.imageToCopy + '-' + imageTag + '.tar.gz')
+ cmd = 'docker login -u oaicicd -p oaicicd porcepix.sboai.cs.eurecom.fr'
+ if lIpAddr != 'none':
+ mySSH.command(cmd, '\$', 5)
+ response = mySSH.getBefore()
+ else:
+ logging.info(cmd)
+ response = subprocess.check_output(cmd, shell=True, universal_newlines=True, stderr=subprocess.STDOUT)
+ if re.search('Login Succeeded', response) is None:
+ msg = 'Could not log into local registry'
+ logging.error(msg)
+ if lIpAddr != 'none':
+ mySSH.close()
+ HTML.CreateHtmlTestRow(msg, 'KO', CONST.ALL_PROCESSES_OK)
+ return False
+ for image in self.imageToPull:
+ tagToUse = self.ImageTagToUse(image)
+ cmd = f'docker pull {tagToUse}'
+ if lIpAddr != 'none':
+ mySSH.command(cmd, '\$', 120)
+ response = mySSH.getBefore()
+ else:
+ logging.info(cmd)
+ response = subprocess.check_output(cmd, shell=True, universal_newlines=True)
+ if re.search('Status: Downloaded newer image for |Status: Image is up to date for', response) is None:
+ logging.debug(response)
+ msg = f'Could not pull {image} from local registry : {tagToUse}'
+ logging.error(msg)
+ if lIpAddr != 'none':
+ mySSH.close()
+ HTML.CreateHtmlTestRow('msg', 'KO', CONST.ALL_PROCESSES_OK)
+ return False
+
+ cmd = 'docker logout porcepix.sboai.cs.eurecom.fr'
+ if lIpAddr != 'none':
+ mySSH.command(cmd, '\$', 5)
+ response = mySSH.getBefore()
+ else:
+ logging.info(cmd)
+ response = subprocess.check_output(cmd, shell=True, universal_newlines=True)
+ if re.search('Removing login credentials', response) is None:
+ msg = 'Could not log off from local registry'
+ logging.error(msg)
+ mySSH.close()
+ HTML.CreateHtmlTestRow(msg, 'KO', CONST.ALL_PROCESSES_OK)
+ return False
+
+ if lIpAddr != 'none':
+ mySSH.close()
+ HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK)
+ return True
+
+ def Clean_Test_Server_Images(self, HTML):
+ # This method can be called either onto a remote server (different from python executor)
+ # or directly on the python executor (ie lIpAddr == 'none')
+ if self.testSvrId == '0':
+ lIpAddr = self.eNBIPAddress
+ lUserName = self.eNBUserName
+ lPassWord = self.eNBPassword
+ lSourcePath = self.eNBSourceCodePath
+ elif self.testSvrId == '1':
+ lIpAddr = self.eNB1IPAddress
+ lUserName = self.eNB1UserName
+ lPassWord = self.eNB1Password
+ lSourcePath = self.eNB1SourceCodePath
+ elif self.testSvrId == '2':
+ lIpAddr = self.eNB2IPAddress
+ lUserName = self.eNB2UserName
+ lPassWord = self.eNB2Password
+ lSourcePath = self.eNB2SourceCodePath
+ if lIpAddr == '' or lUserName == '' or lPassWord == '' or lSourcePath == '':
+ HELP.GenericHelp(CONST.Version)
+ sys.exit('Insufficient Parameter')
+ if lIpAddr != 'none':
+ logging.debug('Removing test images from server: ' + lIpAddr)
+ mySSH = SSH.SSHConnection()
+ mySSH.open(lIpAddr, lUserName, lPassWord)
+ else:
+ logging.debug('Removing test images locally')
+
+ imageNames = ['oai-enb', 'oai-gnb', 'oai-lte-ue', 'oai-nr-ue', 'oai-lte-ru']
+ for image in imageNames:
+ cmd = f'docker rmi {self.ImageTagToUse(image)} || true'
+ if lIpAddr != 'none':
+ mySSH.command(cmd, '\$', 5)
+ else:
+ logging.info(cmd)
+ subprocess.run(cmd, shell=True, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
+
+ if lIpAddr != 'none':
+ mySSH.close()
HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK)
return True
@@ -639,16 +762,15 @@ class Containerize():
mySSH = SSH.SSHConnection()
mySSH.open(lIpAddr, lUserName, lPassWord)
-
+
CreateWorkspace(mySSH, lSourcePath, self.ranRepository, self.ranCommitID, self.ranTargetBranch, self.ranAllowMerge)
mySSH.command('cd ' + lSourcePath + '/' + self.yamlPath[self.eNB_instance], '\$', 5)
mySSH.command('cp docker-compose.yml ci-docker-compose.yml', '\$', 5)
- imageTag = 'develop'
- if (self.ranAllowMerge):
- imageTag = 'ci-temp'
- mySSH.command('sed -i -e "s/image: oai-enb:latest/image: oai-enb:' + imageTag + '/" ci-docker-compose.yml', '\$', 2)
- mySSH.command('sed -i -e "s/image: oai-gnb:latest/image: oai-gnb:' + imageTag + '/" ci-docker-compose.yml', '\$', 2)
+ imagesList = ['oai-enb', 'oai-gnb']
+ for image in imagesList:
+ imageToUse = self.ImageTagToUse(image)
+ mySSH.command(f'sed -i -e "s#image: {image}:latest#image: {imageToUse}#" ci-docker-compose.yml', '\$', 2)
localMmeIpAddr = EPC.MmeIPAddress
mySSH.command('sed -i -e "s/CI_MME_IP_ADDR/' + localMmeIpAddr + '/" ci-docker-compose.yml', '\$', 2)
# if self.flexranCtrlDeployed:
@@ -672,6 +794,8 @@ class Containerize():
healthyNb = 0
startingNb = 0
containerName = ''
+ usedImage = ''
+ imageInfo = ''
if result is not None:
containerName = result.group('container_name')
time.sleep(5)
@@ -686,6 +810,20 @@ class Containerize():
else:
time.sleep(10)
cnt += 1
+ mySSH.command('docker inspect --format="ImageUsed: {{.Config.Image}}" ' + containerName, '\$', 5)
+ for stdoutLine in mySSH.getBefore().split('\n'):
+ if stdoutLine.count('ImageUsed: porcepix'):
+ usedImage = stdoutLine.replace('ImageUsed: porcepix', 'porcepix').strip()
+ logging.debug('Used image is ' + usedImage)
+ if usedImage != '':
+ mySSH.command('docker image inspect --format "* Size = {{.Size}} bytes\n* Creation = {{.Created}}\n* Id = {{.Id}}" ' + usedImage, '\$', 5, silent=True)
+ for stdoutLine in mySSH.getBefore().split('\n'):
+ if re.search('Size = [0-9]', stdoutLine) is not None:
+ imageInfo += stdoutLine.strip() + '\n'
+ if re.search('Creation = [0-9]', stdoutLine) is not None:
+ imageInfo += stdoutLine.strip() + '\n'
+ if re.search('Id = sha256', stdoutLine) is not None:
+ imageInfo += stdoutLine.strip() + '\n'
logging.debug(' -- ' + str(healthyNb) + ' healthy container(s)')
logging.debug(' -- ' + str(unhealthyNb) + ' unhealthy container(s)')
logging.debug(' -- ' + str(startingNb) + ' still starting container(s)')
@@ -715,11 +853,24 @@ class Containerize():
mySSH.copyin(lIpAddr, lUserName, lPassWord, logfilename, '.')
mySSH.close()
+ html_queue = SimpleQueue()
+ html_cell = '
\n'
+ if usedImage != '':
+ html_cell += f'Used Image = {usedImage} :\n'
+ html_cell += imageInfo
+ else:
+ html_cell += 'Could not retrieve used image info!\n'
if status:
- HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK)
+ html_cell += '\nHealthy deployment!\n'
+ else:
+ html_cell += '\nUnhealthy deployment! -- Check logs for reason!\n'
+ html_cell += ''
+ html_queue.put(html_cell)
+ if status:
+ HTML.CreateHtmlTestRowQueue('N/A', 'OK', CONST.ENB_PROCESS_OK, html_queue)
else:
self.exitStatus = 1
- HTML.CreateHtmlTestRow('N/A', 'KO', CONST.ALL_PROCESSES_OK)
+ HTML.CreateHtmlTestRowQueue('N/A', 'KO', CONST.ENB_PROCESS_OK, html_queue)
def UndeployObject(self, HTML, RAN):
@@ -800,33 +951,40 @@ class Containerize():
def DeployGenObject(self, HTML, RAN, UE):
self.exitStatus = 0
- logging.info('\u001B[1m Checking Services to deploy\u001B[0m')
+ logging.debug('\u001B[1m Checking Services to deploy\u001B[0m')
cmd = 'cd ' + self.yamlPath[0] + ' && docker-compose config --services'
- logging.debug(cmd)
+ logging.info(cmd)
try:
listServices = subprocess.check_output(cmd, shell=True, universal_newlines=True)
except Exception as e:
self.exitStatus = 1
HTML.CreateHtmlTestRow('SVC not Found', 'KO', CONST.ALL_PROCESSES_OK)
return
+ displayUsedTag = False
for reqSvc in self.services[0].split(' '):
res = re.search(reqSvc, listServices)
if res is None:
logging.error(reqSvc + ' not found in specified docker-compose')
self.exitStatus = 1
+ res = re.search('oai-gnb|oai-nr-ue|oai-cu|oai-du|oai_enb|oai_ue', reqSvc)
+ if res is not None:
+ displayUsedTag = True
if (self.exitStatus == 1):
HTML.CreateHtmlTestRow('SVC not Found', 'KO', CONST.ALL_PROCESSES_OK)
return
- if (self.ranAllowMerge):
- cmd = 'cd ' + self.yamlPath[0] + ' && sed -e "s@develop@ci-temp@" docker-compose.y*ml > docker-compose-ci.yml'
- else:
- cmd = 'cd ' + self.yamlPath[0] + ' && sed -e "s@develop@develop@" docker-compose.y*ml > docker-compose-ci.yml'
- logging.debug(cmd)
- subprocess.run(cmd, shell=True)
+ cmd = 'cd ' + self.yamlPath[0] + ' && cp docker-compose.y*ml docker-compose-ci.yml'
+ imageNames = ['oai-enb', 'oai-gnb', 'oai-lte-ue', 'oai-nr-ue', 'oai-lte-ru']
+ for image in imageNames:
+ tagToUse = self.ImageTagToUse(image)
+ cmd = f'cd {self.yamlPath[0]} && sed -i -e "s@{image}:develop@{tagToUse}@" docker-compose-ci.yml'
+ subprocess.run(cmd, shell=True)
+ if displayUsedTag:
+ tagToUse = self.ImageTagToUse('oai-xxx')
+ logging.info(f'\u001B[1m Using Image Tag: {tagToUse}\u001B[0m')
cmd = 'cd ' + self.yamlPath[0] + ' && docker-compose -f docker-compose-ci.yml up -d ' + self.services[0]
- logging.debug(cmd)
+ logging.info(cmd)
try:
deployStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=100)
except Exception as e:
@@ -835,7 +993,7 @@ class Containerize():
HTML.CreateHtmlTestRow('Could not deploy', 'KO', CONST.ALL_PROCESSES_OK)
return
- logging.info('\u001B[1m Checking if all deployed healthy\u001B[0m')
+ logging.debug('\u001B[1m Checking if all deployed healthy\u001B[0m')
cmd = 'cd ' + self.yamlPath[0] + ' && docker-compose -f docker-compose-ci.yml ps -a'
count = 0
healthy = 0
@@ -930,7 +1088,7 @@ class Containerize():
cmd += ' -w /tmp/capture_'
ymlPath = self.yamlPath[0].split('/')
cmd += ymlPath[1] + '.pcap > /tmp/tshark.log 2>&1 &'
- logging.debug(cmd)
+ logging.info(cmd)
networkNames = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=10)
self.tsharkStarted = True
@@ -939,22 +1097,23 @@ class Containerize():
ymlPath = self.yamlPath[0].split('/')
logPath = '../cmake_targets/log/' + ymlPath[1]
- if (self.ranAllowMerge):
- cmd = 'cd ' + self.yamlPath[0] + ' && sed -e "s@develop@ci-temp@" docker-compose.y*ml > docker-compose-ci.yml'
- else:
- cmd = 'cd ' + self.yamlPath[0] + ' && sed -e "s@develop@develop@" docker-compose.y*ml > docker-compose-ci.yml'
- logging.debug(cmd)
+ cmd = 'cd ' + self.yamlPath[0] + ' && cp docker-compose.y*ml docker-compose-ci.yml'
subprocess.run(cmd, shell=True)
+ imageNames = ['oai-enb', 'oai-gnb', 'oai-lte-ue', 'oai-nr-ue', 'oai-lte-ru']
+ for image in imageNames:
+ tagToUse = self.ImageTagToUse(image)
+ cmd = f'cd {self.yamlPath[0]} && sed -i -e "s@{image}:develop@{tagToUse}@" docker-compose-ci.yml'
+ subprocess.run(cmd, shell=True)
# check which containers are running for log recovery later
cmd = 'cd ' + self.yamlPath[0] + ' && docker-compose -f docker-compose-ci.yml ps --all'
- logging.debug(cmd)
+ logging.info(cmd)
deployStatusLogs = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=30)
# Stop the containers to shut down objects
logging.debug('\u001B[1m Stopping containers \u001B[0m')
cmd = 'cd ' + self.yamlPath[0] + ' && docker-compose -f docker-compose-ci.yml stop'
- logging.debug(cmd)
+ logging.info(cmd)
try:
deployStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=100)
except Exception as e:
@@ -976,16 +1135,16 @@ class Containerize():
anyLogs = True
cName = res.group('container_name')
cmd = 'cd ' + self.yamlPath[0] + ' && docker logs ' + cName + ' > ' + cName + '.log 2>&1'
- logging.debug(cmd)
+ logging.info(cmd)
subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=30)
if re.search('magma-mme', cName) is not None:
cmd = 'cd ' + self.yamlPath[0] + ' && docker cp -L ' + cName + ':/var/log/mme.log ' + cName + '-full.log'
- logging.debug(cmd)
+ logging.info(cmd)
subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=30)
fullStatus = True
if anyLogs:
cmd = 'mkdir -p '+ logPath + ' && cp ' + self.yamlPath[0] + '/*.log ' + logPath
- logging.debug(cmd)
+ logging.info(cmd)
deployStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=10)
# Analyzing log file(s)!
@@ -1035,25 +1194,25 @@ class Containerize():
HTML.CreateHtmlTestRow('UE log Analysis', 'OK', CONST.ALL_PROCESSES_OK)
cmd = 'rm ' + self.yamlPath[0] + '/*.log'
- logging.debug(cmd)
+ logging.info(cmd)
deployStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=10)
if self.tsharkStarted:
self.tsharkStarted = True
ymlPath = self.yamlPath[0].split('/')
cmd = 'sudo chmod 666 /tmp/capture_' + ymlPath[1] + '.pcap'
- logging.debug(cmd)
+ logging.info(cmd)
copyStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=10)
cmd = 'cp /tmp/capture_' + ymlPath[1] + '.pcap ' + logPath
- logging.debug(cmd)
+ logging.info(cmd)
copyStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=10)
cmd = 'sudo rm /tmp/capture_' + ymlPath[1] + '.pcap'
- logging.debug(cmd)
+ logging.info(cmd)
copyStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=10)
self.tsharkStarted = False
logging.debug('\u001B[1m Undeploying \u001B[0m')
cmd = 'cd ' + self.yamlPath[0] + ' && docker-compose -f docker-compose-ci.yml down'
- logging.debug(cmd)
+ logging.info(cmd)
try:
deployStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=100)
except Exception as e:
@@ -1066,7 +1225,7 @@ class Containerize():
self.deployedContainers = []
# Cleaning any created tmp volume
cmd = 'docker volume prune --force || true'
- logging.debug(cmd)
+ logging.info(cmd)
deployStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=100)
if fullStatus:
@@ -1074,7 +1233,7 @@ class Containerize():
logging.info('\u001B[1m Undeploying OAI Object(s) PASS\u001B[0m')
else:
HTML.CreateHtmlTestRow('n/a', 'KO', CONST.ALL_PROCESSES_OK)
- logging.info('\u001B[1m Undeploying OAI Object(s) FAIL\u001B[0m')
+ logging.error('\u001B[1m Undeploying OAI Object(s) FAIL\u001B[0m')
def StatsFromGenObject(self, HTML):
self.exitStatus = 0
@@ -1083,7 +1242,7 @@ class Containerize():
# if the containers are running, recover the logs!
cmd = 'cd ' + self.yamlPath[0] + ' && docker-compose -f docker-compose-ci.yml ps --all'
- logging.debug(cmd)
+ logging.info(cmd)
deployStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=30)
cmd = 'docker stats --no-stream --format "table {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.MemPerc}}" '
anyLogs = False
@@ -1099,7 +1258,7 @@ class Containerize():
cmd += res.group('container_name') + ' '
message = ''
if anyLogs:
- logging.debug(cmd)
+ logging.info(cmd)
stats = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=30)
for statLine in stats.split('\n'):
logging.debug(statLine)
@@ -1119,7 +1278,7 @@ class Containerize():
cmd = 'docker exec ' + self.pingContName + ' /bin/bash -c "ping ' + self.pingOptions + '" 2>&1 | tee ' + logPath + '/ping_' + HTML.testCase_id + '.log || true'
- logging.debug(cmd)
+ logging.info(cmd)
deployStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=100)
result = re.search(', (?P[0-9\.]+)% packet loss, time [0-9\.]+ms', deployStatus)
@@ -1176,9 +1335,9 @@ class Containerize():
logging.error('\u001B[1;37;41m ping test FAIL -- ' + message + ' \u001B[0m')
HTML.CreateHtmlTestRowQueue(self.pingOptions, 'KO', 1, html_queue)
# Automatic undeployment
- logging.debug('----------------------------------------')
- logging.debug('\u001B[1m Starting Automatic undeployment \u001B[0m')
- logging.debug('----------------------------------------')
+ logging.warning('----------------------------------------')
+ logging.warning('\u001B[1m Starting Automatic undeployment \u001B[0m')
+ logging.warning('----------------------------------------')
HTML.testCase_id = 'AUTO-UNDEPLOY'
HTML.desc = 'Automatic Un-Deployment'
self.UndeployGenObject(HTML, RAN, UE)
@@ -1194,23 +1353,23 @@ class Containerize():
# Start the server process
cmd = 'docker exec -d ' + self.svrContName + ' /bin/bash -c "nohup iperf ' + self.svrOptions + ' > /tmp/iperf_server.log 2>&1" || true'
- logging.debug(cmd)
+ logging.info(cmd)
serverStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=10)
time.sleep(5)
# Start the client process
cmd = 'docker exec ' + self.cliContName + ' /bin/bash -c "iperf ' + self.cliOptions + '" 2>&1 | tee '+ logPath + '/iperf_client_' + HTML.testCase_id + '.log || true'
- logging.debug(cmd)
+ logging.info(cmd)
clientStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=100)
# Stop the server process
cmd = 'docker exec ' + self.svrContName + ' /bin/bash -c "pkill iperf" || true'
- logging.debug(cmd)
+ logging.info(cmd)
serverStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=10)
time.sleep(5)
cmd = 'docker cp ' + self.svrContName + ':/tmp/iperf_server.log '+ logPath + '/iperf_server_' + HTML.testCase_id + '.log'
- logging.debug(cmd)
+ logging.info(cmd)
serverStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=30)
# Analyze client output
diff --git a/ci-scripts/cls_log_mgt.py b/ci-scripts/cls_log_mgt.py
index f1dbf6b8ec..a78eee5a33 100644
--- a/ci-scripts/cls_log_mgt.py
+++ b/ci-scripts/cls_log_mgt.py
@@ -35,11 +35,6 @@ import re
import subprocess
import sshconnection
-logging.basicConfig(
- level=logging.DEBUG,
- format="[%(asctime)s] %(name)s:%(levelname)s: %(message)s"
-)
-
class Log_Mgt:
def __init__(self,Username, IPAddress,Password,Path):
diff --git a/ci-scripts/cls_oai_html.py b/ci-scripts/cls_oai_html.py
index 536f2ff49e..48123f52ad 100644
--- a/ci-scripts/cls_oai_html.py
+++ b/ci-scripts/cls_oai_html.py
@@ -33,6 +33,7 @@
#-----------------------------------------------------------
import sys # arg
import re # reg
+import fileinput
import logging
import os
import time
@@ -102,9 +103,9 @@ class HTMLManagement():
def CreateHtmlHeader(self, ADBIPAddress):
if (not self.htmlHeaderCreated):
- logging.debug('\u001B[1m----------------------------------------\u001B[0m')
- logging.debug('\u001B[1m Creating HTML header \u001B[0m')
- logging.debug('\u001B[1m----------------------------------------\u001B[0m')
+ logging.info('\u001B[1m----------------------------------------\u001B[0m')
+ logging.info('\u001B[1m Creating HTML header \u001B[0m')
+ logging.info('\u001B[1m----------------------------------------\u001B[0m')
self.htmlFile = open('test_results.html', 'w')
self.htmlFile.write('\n')
self.htmlFile.write('\n')
@@ -195,7 +196,10 @@ class HTMLManagement():
self.htmlFile.write(' \n')
count = 0
while (count < self.nbTestXMLfiles):
- pillMsg = ' - '
pillMsg += '__STATE_' + self.htmlTabNames[count] + '__'
@@ -269,6 +273,15 @@ class HTMLManagement():
def CreateHtmlFooter(self, passStatus):
if (os.path.isfile('test_results.html')):
+ # Tagging the 1st tab as active so it is automatically opened.
+ firstTabFound = False
+ for line in fileinput.FileInput("test_results.html", inplace=1):
+ if re.search('tab-pane fade', line) and not firstTabFound:
+ firstTabFound = True
+ print(line.replace('tab-pane fade', 'tab-pane fade in active'), end ='')
+ else:
+ print(line, end ='')
+
self.htmlFile = open('test_results.html', 'a')
self.htmlFile.write('\n')
self.htmlFile.write(' \n')
diff --git a/ci-scripts/cls_oaicitest.py b/ci-scripts/cls_oaicitest.py
index d3f4191c02..f0cf43ef27 100644
--- a/ci-scripts/cls_oaicitest.py
+++ b/ci-scripts/cls_oaicitest.py
@@ -44,10 +44,6 @@ import datetime
import signal
import statistics as stat
from multiprocessing import Process, Lock, SimpleQueue
-logging.basicConfig(
- level=logging.DEBUG,
- format="[%(asctime)s] %(name)s:%(levelname)s: %(message)s"
-)
#import our libs
import helpreadme as HELP
@@ -263,10 +259,10 @@ class OaiCiTest():
if self.ranAllowMerge:
if self.ranTargetBranch == '':
if (self.ranBranch != 'develop') and (self.ranBranch != 'origin/develop'):
- SSH.command('git merge --ff origin/develop -m "Temporary merge for CI"', '\$', 5)
+ SSH.command('git merge --ff origin/develop -m "Temporary merge for CI"', '\$', 30)
else:
logging.debug('Merging with the target branch: ' + self.ranTargetBranch)
- SSH.command('git merge --ff origin/' + self.ranTargetBranch + ' -m "Temporary merge for CI"', '\$', 5)
+ SSH.command('git merge --ff origin/' + self.ranTargetBranch + ' -m "Temporary merge for CI"', '\$', 30)
SSH.command('source oaienv', '\$', 5)
SSH.command('cd cmake_targets', '\$', 5)
SSH.command('mkdir -p log', '\$', 5)
@@ -1665,7 +1661,7 @@ class OaiCiTest():
logging.debug("Ping analysis from Amarisoft scenario")
path,ping_log_file = os.path.split(Module_UE.Ping)
SSH.open(Module_UE.HostIPAddress, Module_UE.HostUsername, Module_UE.HostPassword)
- SSH.command('cat ' + Module_UE.Ping, '\#', 5)
+ SSH.command('cat ' + Module_UE.Ping, '\$', 5)
else:
ping_status=-1
@@ -3128,7 +3124,7 @@ class OaiCiTest():
fileCheck = re.search('enb_', str(RAN.eNBLogFiles[0]))
if fileCheck is not None:
SSH.copyin(RAN.eNBIPAddress, RAN.eNBUserName, RAN.eNBPassword, RAN.eNBSourceCodePath + '/cmake_targets/' + RAN.eNBLogFiles[0], '.')
- logStatus = RAN.AnalyzeLogFile_eNB(RAN.eNBLogFiles[0])
+ logStatus = RAN.AnalyzeLogFile_eNB(RAN.eNBLogFiles[0],HTML, RAN.ran_checkers)
if logStatus < 0:
result = logStatus
RAN.eNBLogFiles[0]=''
@@ -3937,7 +3933,7 @@ class OaiCiTest():
sys.exit(1)
def ShowTestID(self):
- logging.debug('\u001B[1m----------------------------------------\u001B[0m')
- logging.debug('\u001B[1mTest ID:' + self.testCase_id + '\u001B[0m')
- logging.debug('\u001B[1m' + self.desc + '\u001B[0m')
- logging.debug('\u001B[1m----------------------------------------\u001B[0m')
+ logging.info('\u001B[1m----------------------------------------\u001B[0m')
+ logging.info('\u001B[1mTest ID:' + self.testCase_id + '\u001B[0m')
+ logging.info('\u001B[1m' + self.desc + '\u001B[0m')
+ logging.info('\u001B[1m----------------------------------------\u001B[0m')
diff --git a/ci-scripts/cls_physim.py b/ci-scripts/cls_physim.py
index 14abd9116e..5efbc25aae 100644
--- a/ci-scripts/cls_physim.py
+++ b/ci-scripts/cls_physim.py
@@ -180,10 +180,10 @@ class PhySim:
if (self.ranAllowMerge):
if self.ranTargetBranch == '':
if (self.ranBranch != 'develop') and (self.ranBranch != 'origin/develop'):
- mySSH.command('git merge --ff origin/develop -m "Temporary merge for CI"', '\$', 5)
+ mySSH.command('git merge --ff origin/develop -m "Temporary merge for CI"', '\$', 30)
else:
logging.info('Merging with the target branch: ' + self.ranTargetBranch)
- mySSH.command('git merge --ff origin/' + self.ranTargetBranch + ' -m "Temporary merge for CI"', '\$', 5)
+ mySSH.command('git merge --ff origin/' + self.ranTargetBranch + ' -m "Temporary merge for CI"', '\$', 30)
#build
mySSH.command('source oaienv', '\$', 5)
diff --git a/ci-scripts/cls_physim1.py b/ci-scripts/cls_physim1.py
index e664353fa4..20d2481c56 100644
--- a/ci-scripts/cls_physim1.py
+++ b/ci-scripts/cls_physim1.py
@@ -108,10 +108,10 @@ class PhySim:
imageTag = "ci-temp"
if self.ranTargetBranch == '':
if (self.ranBranch != 'develop') and (self.ranBranch != 'origin/develop'):
- mySSH.command('git merge --ff origin/develop -m "Temporary merge for CI"', '\$', 5)
+ mySSH.command('git merge --ff origin/develop -m "Temporary merge for CI"', '\$', 30)
else:
logging.debug('Merging with the target branch: ' + self.ranTargetBranch)
- mySSH.command('git merge --ff origin/' + self.ranTargetBranch + ' -m "Temporary merge for CI"', '\$', 5)
+ mySSH.command('git merge --ff origin/' + self.ranTargetBranch + ' -m "Temporary merge for CI"', '\$', 30)
else:
imageTag = "develop"
diff --git a/ci-scripts/cls_static_code_analysis.py b/ci-scripts/cls_static_code_analysis.py
index 131f2d72bc..ee3f1bbebf 100644
--- a/ci-scripts/cls_static_code_analysis.py
+++ b/ci-scripts/cls_static_code_analysis.py
@@ -123,10 +123,10 @@ class StaticCodeAnalysis():
if (self.ranAllowMerge):
if self.ranTargetBranch == '':
if (self.ranBranch != 'develop') and (self.ranBranch != 'origin/develop'):
- mySSH.command('git merge --ff origin/develop -m "Temporary merge for CI"', '\$', 5)
+ mySSH.command('git merge --ff origin/develop -m "Temporary merge for CI"', '\$', 30)
else:
logging.debug('Merging with the target branch: ' + self.ranTargetBranch)
- mySSH.command('git merge --ff origin/' + self.ranTargetBranch + ' -m "Temporary merge for CI"', '\$', 5)
+ mySSH.command('git merge --ff origin/' + self.ranTargetBranch + ' -m "Temporary merge for CI"', '\$', 30)
mySSH.command('docker image rm oai-cppcheck:bionic oai-cppcheck:focal || true', '\$', 60)
mySSH.command('sed -e "s@xenial@bionic@" ci-scripts/docker/Dockerfile.cppcheck.xenial > ci-scripts/docker/Dockerfile.cppcheck.bionic', '\$', 6)
@@ -281,11 +281,11 @@ class StaticCodeAnalysis():
argToPass = '--build-arg MERGE_REQUEST=true --build-arg SRC_BRANCH=' + self.ranBranch
if self.ranTargetBranch == '':
if (self.ranBranch != 'develop') and (self.ranBranch != 'origin/develop'):
- mySSH.command('git merge --ff origin/develop -m "Temporary merge for CI"', '\$', 5)
+ mySSH.command('git merge --ff origin/develop -m "Temporary merge for CI"', '\$', 30)
argToPass += ' --build-arg TARGET_BRANCH=develop '
else:
logging.debug('Merging with the target branch: ' + self.ranTargetBranch)
- mySSH.command('git merge --ff origin/' + self.ranTargetBranch + ' -m "Temporary merge for CI"', '\$', 5)
+ mySSH.command('git merge --ff origin/' + self.ranTargetBranch + ' -m "Temporary merge for CI"', '\$', 30)
argToPass += ' --build-arg TARGET_BRANCH=' + self.ranTargetBranch + ' '
mySSH.command('docker image rm oai-formatting-check:latest || true', '\$', 60)
diff --git a/ci-scripts/conf_files/episci/episci_nr-ue.nfapi.conf b/ci-scripts/conf_files/episci/episci_nr-ue.nfapi.conf
index 22ffb4cd3d..58bcca6e3c 100644
--- a/ci-scripts/conf_files/episci/episci_nr-ue.nfapi.conf
+++ b/ci-scripts/conf_files/episci/episci_nr-ue.nfapi.conf
@@ -17,29 +17,16 @@ nssai_sst=222;
nssai_sd=123;
}
-L1s = (
+MACRLCs = (
{
- num_cc = 1;
- tr_n_preference = "nfapi";
- local_n_if_name = "ens3";
- remote_n_address = "127.0.0.1"; //Proxy IP
- local_n_address = "127.0.0.1";
- local_n_portc = 50600;
- remote_n_portc = 50601;
- local_n_portd = 50610;
- remote_n_portd = 50611;
- }
-);
-
-RUs = (
- {
- local_rf = "yes"
- nb_tx = 1
- nb_rx = 1
- att_tx = 90
- att_rx = 0;
- bands = [7,38,42,43];
- max_pdschReferenceSignalPower = -27;
- max_rxgain = 125;
- }
+ num_cc = 1;
+ tr_n_preference = "nfapi";
+ local_n_if_name = "ens3";
+ remote_n_address = "127.0.0.1"; //Proxy IP
+ local_n_address = "127.0.0.1";
+ local_n_portc = 50600;
+ remote_n_portc = 50601;
+ local_n_portd = 50610;
+ remote_n_portd = 50611;
+ }
);
diff --git a/ci-scripts/conf_files/episci/episci_gnb.band78.sa.fr1.106PRB.usrpn310.conf b/ci-scripts/conf_files/episci/gnb_band78.sa.fr1.106PRB.2x2.l2sim.conf
similarity index 92%
rename from ci-scripts/conf_files/episci/episci_gnb.band78.sa.fr1.106PRB.usrpn310.conf
rename to ci-scripts/conf_files/episci/gnb_band78.sa.fr1.106PRB.2x2.l2sim.conf
index 016f1e9b1f..71bb34cb31 100644
--- a/ci-scripts/conf_files/episci/episci_gnb.band78.sa.fr1.106PRB.usrpn310.conf
+++ b/ci-scripts/conf_files/episci/gnb_band78.sa.fr1.106PRB.2x2.l2sim.conf
@@ -17,6 +17,9 @@ gNBs =
////////// Physical parameters:
+ pdsch_AntennaPorts_XP = 2;
+ pusch_AntennaPorts = 2;
+ do_CSIRS = 1;
min_rxtxtime = 6;
pdcch_ConfigSIB1 = (
{
@@ -218,13 +221,13 @@ security = {
log_config :
{
- global_log_level ="info";
- hw_log_level ="info";
- phy_log_level ="info";
- mac_log_level ="info";
- rlc_log_level ="info";
- pdcp_log_level ="info";
- rrc_log_level ="info";
- ngap_log_level ="debug";
+ global_log_level ="analysis";
+ hw_log_level ="analysis";
+ phy_log_level ="analysis";
+ mac_log_level ="analysis";
+ rlc_log_level ="analysis";
+ pdcp_log_level ="analysis";
+ rrc_log_level ="analysis";
+ ngap_log_level ="analysis";
};
diff --git a/ci-scripts/conf_files/episci/proxy_nr-ue.nfapi.conf b/ci-scripts/conf_files/episci/proxy_nr-ue.nfapi.conf
index b6c0e9b5a1..d3309e1f03 100644
--- a/ci-scripts/conf_files/episci/proxy_nr-ue.nfapi.conf
+++ b/ci-scripts/conf_files/episci/proxy_nr-ue.nfapi.conf
@@ -17,29 +17,17 @@ nssai_sst=1;
nssai_sd=1;
}
-L1s = (
+MACRLCs = (
{
- num_cc = 1;
- tr_n_preference = "nfapi";
- local_n_if_name = "lo:";
- remote_n_address = "127.0.0.1"; //Proxy IP
- local_n_address = "127.0.0.1";
- local_n_portc = 50600;
- remote_n_portc = 50601;
- local_n_portd = 50610;
- remote_n_portd = 50611;
- }
+ num_cc = 1;
+ tr_n_preference = "nfapi";
+ local_n_if_name = "lo:";
+ remote_n_address = "127.0.0.1"; //Proxy IP
+ local_n_address = "127.0.0.1";
+ local_n_portc = 50600;
+ remote_n_portc = 50601;
+ local_n_portd = 50610;
+ remote_n_portd = 50611;
+ }
);
-RUs = (
- {
- local_rf = "yes"
- nb_tx = 1
- nb_rx = 1
- att_tx = 90
- att_rx = 0;
- bands = [7,38,42,43];
- max_pdschReferenceSignalPower = -27;
- max_rxgain = 125;
- }
-);
diff --git a/ci-scripts/main.py b/ci-scripts/main.py
index eb9e60a83e..c56c376b7f 100644
--- a/ci-scripts/main.py
+++ b/ci-scripts/main.py
@@ -70,7 +70,7 @@ import subprocess
from multiprocessing import Process, Lock, SimpleQueue
logging.basicConfig(
level=logging.DEBUG,
- format="[%(asctime)s] %(name)s:%(levelname)s: %(message)s"
+ format="[%(asctime)s] %(levelname)8s: %(message)s"
)
@@ -84,7 +84,7 @@ logging.basicConfig(
def CheckClassValidity(xml_class_list,action,id):
if action not in xml_class_list:
- logging.debug('ERROR: test-case ' + id + ' has unlisted class ' + action + ' ##CHECK xml_class_list.yml')
+ logging.error('test-case ' + id + ' has unlisted class ' + action + ' ##CHECK xml_class_list.yml')
resp=False
else:
resp=True
@@ -199,6 +199,14 @@ def GetParametersFromXML(action):
else:
RAN.eNB_serverId[RAN.eNB_instance]=eNB_serverId
+ #retx checkers
+ string_field=test.findtext('d_retx_th')
+ if (string_field is not None):
+ RAN.ran_checkers['d_retx_th'] = [float(x) for x in string_field.split(',')]
+ string_field=test.findtext('u_retx_th')
+ if (string_field is not None):
+ RAN.ran_checkers['u_retx_th'] = [float(x) for x in string_field.split(',')]
+
#local variable air_interface
air_interface = test.findtext('air_interface')
if (air_interface is None) or (air_interface.lower() not in ['nr','lte','ocp']):
@@ -328,14 +336,14 @@ def GetParametersFromXML(action):
CiTestObj.iperf_profile = 'balanced'
else:
if CiTestObj.iperf_profile != 'balanced' and CiTestObj.iperf_profile != 'unbalanced' and CiTestObj.iperf_profile != 'single-ue':
- logging.debug('ERROR: test-case has wrong profile ' + CiTestObj.iperf_profile)
+ logging.error('test-case has wrong profile ' + CiTestObj.iperf_profile)
CiTestObj.iperf_profile = 'balanced'
CiTestObj.iperf_options = test.findtext('iperf_options')
if (CiTestObj.iperf_options is None):
CiTestObj.iperf_options = 'check'
else:
if CiTestObj.iperf_options != 'check' and CiTestObj.iperf_options != 'sink':
- logging.debug('ERROR: test-case has wrong option ' + CiTestObj.iperf_options)
+ logging.error('test-case has wrong option ' + CiTestObj.iperf_options)
CiTestObj.iperf_options = 'check'
elif action == 'IdleSleep':
@@ -372,6 +380,11 @@ def GetParametersFromXML(action):
if (string_field is not None):
EPC.mmeConfFile = string_field
+ elif action == 'Initialize_HSS' or action == 'Initialize_SPGW':
+ pass
+ elif action == 'Terminate_HSS' or action == 'Terminate_MME' or action == 'Terminate_SPGW':
+ pass
+
elif action == 'Deploy_EPC':
string_field = test.findtext('parameters')
if (string_field is not None):
@@ -401,6 +414,12 @@ def GetParametersFromXML(action):
string_field = test.findtext('yaml_path')
if (string_field is not None):
CONTAINERS.yamlPath[CONTAINERS.eNB_instance] = string_field
+ string_field=test.findtext('d_retx_th')
+ if (string_field is not None):
+ CONTAINERS.ran_checkers['d_retx_th'] = [float(x) for x in string_field.split(',')]
+ string_field=test.findtext('u_retx_th')
+ if (string_field is not None):
+ CONTAINERS.ran_checkers['u_retx_th'] = [float(x) for x in string_field.split(',')]
elif action == 'DeployGenObject' or action == 'UndeployGenObject' or action == 'StatsFromGenObject':
string_field=test.findtext('yaml_path')
@@ -444,17 +463,6 @@ def GetParametersFromXML(action):
if (string_field is not None):
CONTAINERS.cliOptions = string_field
- elif action == 'Copy_Image_to_Test':
- string_field = test.findtext('image_name')
- if (string_field is not None):
- CONTAINERS.imageToCopy = string_field
- string_field = test.findtext('registry_svr_id')
- if (string_field is not None):
- CONTAINERS.registrySvrId = string_field
- string_field = test.findtext('test_svr_id')
- if (string_field is not None):
- CONTAINERS.testSvrId = string_field
-
elif action == 'Run_LDPCTest' or action == 'Run_NRulsimTest':
ldpc.runargs = test.findtext('physim_run_args')
@@ -464,8 +472,27 @@ def GetParametersFromXML(action):
elif action == 'Cppcheck_Analysis':
pass
+ elif action == 'Push_Local_Registry':
+ string_field = test.findtext('registry_svr_id')
+ if (string_field is not None):
+ CONTAINERS.registrySvrId = string_field
+
+ elif action == 'Pull_Local_Registry':
+ string_field = test.findtext('test_svr_id')
+ if (string_field is not None):
+ CONTAINERS.testSvrId = string_field
+ CONTAINERS.imageToPull.clear()
+ string_field = test.findtext('images_to_pull')
+ if (string_field is not None):
+ CONTAINERS.imageToPull = string_field.split()
+
+ elif action == 'Clean_Test_Server_Images':
+ string_field = test.findtext('test_svr_id')
+ if (string_field is not None):
+ CONTAINERS.testSvrId = string_field
+
else:
- logging.error(f"unknown action {action}")
+ logging.warning(f"unknown action {action} from option-parsing point-of-view")
#check if given test is in list
@@ -617,7 +644,7 @@ elif re.match('^LogCollecteNB$', mode, re.IGNORECASE):
sys.exit('Insufficient Parameter')
if RAN.eNBIPAddress == 'none':
cmd = 'zip -r enb.log.' + RAN.BuildId + '.zip cmake_targets/log'
- logging.debug(cmd)
+ logging.info(cmd)
zipStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=60)
sys.exit(0)
RAN.LogCollecteNB()
@@ -683,17 +710,17 @@ elif re.match('^InitiateHtml$', mode, re.IGNORECASE):
HTML.htmlNb_CATM_Modules=len(CiTestObj.CatMDevices)
HTML.CreateHtmlHeader(CiTestObj.ADBIPAddress)
elif re.match('^FinalizeHtml$', mode, re.IGNORECASE):
- logging.debug('\u001B[1m----------------------------------------\u001B[0m')
- logging.debug('\u001B[1m Creating HTML footer \u001B[0m')
- logging.debug('\u001B[1m----------------------------------------\u001B[0m')
+ logging.info('\u001B[1m----------------------------------------\u001B[0m')
+ logging.info('\u001B[1m Creating HTML footer \u001B[0m')
+ logging.info('\u001B[1m----------------------------------------\u001B[0m')
CiTestObj.RetrieveSystemVersion('eNB',HTML,RAN)
CiTestObj.RetrieveSystemVersion('UE',HTML,RAN)
HTML.CreateHtmlFooter(CiTestObj.finalStatus)
elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re.IGNORECASE):
- logging.debug('\u001B[1m----------------------------------------\u001B[0m')
- logging.debug('\u001B[1m Starting Scenario: ' + CiTestObj.testXMLfiles[0] + '\u001B[0m')
- logging.debug('\u001B[1m----------------------------------------\u001B[0m')
+ logging.info('\u001B[1m----------------------------------------\u001B[0m')
+ logging.info('\u001B[1m Starting Scenario: ' + CiTestObj.testXMLfiles[0] + '\u001B[0m')
+ logging.info('\u001B[1m----------------------------------------\u001B[0m')
if re.match('^TesteNB$', mode, re.IGNORECASE):
if RAN.eNBIPAddress == '' or RAN.ranRepository == '' or RAN.ranBranch == '' or RAN.eNBUserName == '' or RAN.eNBPassword == '' or RAN.eNBSourceCodePath == '' or EPC.IPAddress == '' or EPC.UserName == '' or EPC.Password == '' or EPC.Type == '' or EPC.SourceCodePath == '' or CiTestObj.ADBIPAddress == '' or CiTestObj.ADBUserName == '' or CiTestObj.ADBPassword == '':
HELP.GenericHelp(CONST.Version)
@@ -736,7 +763,7 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re
HTML.testUnstable = True
CiTestObj.testMinStableId = xmlRoot.findtext('TestMinId',default='999999')
HTML.testMinStableId = CiTestObj.testMinStableId
- logging.debug('Test is tagged as Unstable -- starting from TestID ' + str(CiTestObj.testMinStableId))
+ logging.warning('Test is tagged as Unstable -- starting from TestID ' + str(CiTestObj.testMinStableId))
all_tests=xmlRoot.findall('testCase')
exclusion_tests=exclusion_tests.split()
@@ -747,10 +774,10 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re
for test in exclusion_tests:
if (not re.match('^[0-9]{6}$', test) and
not re.match('^[0-9]{1,5}\+$', test)):
- logging.debug('ERROR: exclusion test is invalidly formatted: ' + test)
+ logging.error('exclusion test is invalidly formatted: ' + test)
sys.exit(1)
else:
- logging.debug(test)
+ logging.info(test)
#check that requested tests are well formatted
#(6 digits or less than 6 digits followed by +)
@@ -758,9 +785,9 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re
for test in requested_tests:
if (re.match('^[0-9]{6}$', test) or
re.match('^[0-9]{1,5}\+$', test)):
- logging.debug('INFO: test group/case requested: ' + test)
+ logging.info('test group/case requested: ' + test)
else:
- logging.debug('ERROR: requested test is invalidly formatted: ' + test)
+ logging.error('requested test is invalidly formatted: ' + test)
sys.exit(1)
if (EPC.IPAddress != '') and (EPC.IPAddress != 'none'):
CiTestObj.CheckFlexranCtrlInstallation(RAN,EPC,CONTAINERS)
@@ -771,9 +798,9 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re
todo_tests=[]
for test in requested_tests:
if (test_in_list(test, exclusion_tests)):
- logging.debug('INFO: test will be skipped: ' + test)
+ logging.info('test will be skipped: ' + test)
else:
- #logging.debug('INFO: test will be run: ' + test)
+ #logging.info('test will be run: ' + test)
todo_tests.append(test)
signal.signal(signal.SIGUSR1, receive_signal)
@@ -937,8 +964,16 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re
CONTAINERS.BuildImage(HTML)
elif action == 'Build_Proxy':
CONTAINERS.BuildProxy(HTML)
- elif action == 'Copy_Image_to_Test':
- success = CONTAINERS.Copy_Image_to_Test_Server(HTML)
+ elif action == 'Push_Local_Registry':
+ success = CONTAINERS.Push_Image_to_Local_Registry(HTML)
+ if not success:
+ RAN.prematureExit = True
+ elif action == 'Pull_Local_Registry':
+ success = CONTAINERS.Pull_Image_from_Local_Registry(HTML)
+ if not success:
+ RAN.prematureExit = True
+ elif action == 'Clean_Test_Server_Images':
+ success = CONTAINERS.Clean_Test_Server_Images(HTML)
if not success:
RAN.prematureExit = True
elif action == 'Deploy_Object':
@@ -973,23 +1008,25 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re
RAN.prematureExit = True
elif action == 'StatsFromGenObject':
CONTAINERS.StatsFromGenObject(HTML)
+ elif action == 'Push_Images_To_Test_Servers':
+ logging.debug('To be implemented')
else:
sys.exit('Invalid class (action) from xml')
if RAN.prematureExit:
if CiTestObj.testCase_id == CiTestObj.testMinStableId:
- logging.debug('Scenario has reached minimal stability point')
+ logging.warning('Scenario has reached minimal stability point')
CiTestObj.testStabilityPointReached = True
HTML.testStabilityPointReached = True
CiTestObj.FailReportCnt += 1
if CiTestObj.FailReportCnt == CiTestObj.repeatCounts[0] and RAN.prematureExit:
- logging.debug('Scenario failed ' + str(CiTestObj.FailReportCnt) + ' time(s)')
+ logging.error('\u001B[1;37;41mScenario failed ' + str(CiTestObj.FailReportCnt) + ' time(s)\u001B[0m')
HTML.CreateHtmlTabFooter(False)
if CiTestObj.testUnstable and (CiTestObj.testStabilityPointReached or CiTestObj.testMinStableId == '999999'):
- logging.debug('Scenario has reached minimal stability point -- Not a Failure')
+ logging.warning('\u001B[1;30;43mScenario has reached minimal stability point -- Not a Failure\u001B[0m')
else:
sys.exit('Failed Scenario')
else:
- logging.info('Scenario passed after ' + str(CiTestObj.FailReportCnt) + ' time(s)')
+ logging.info('\u001B[1;37;42mScenario passed after ' + str(CiTestObj.FailReportCnt) + ' time(s)\u001B[0m')
HTML.CreateHtmlTabFooter(True)
elif re.match('^LoadParams$', mode, re.IGNORECASE):
pass
diff --git a/ci-scripts/ran.py b/ci-scripts/ran.py
index 1d81862647..7a50a12231 100644
--- a/ci-scripts/ran.py
+++ b/ci-scripts/ran.py
@@ -97,7 +97,8 @@ class RANManagement():
self.eNB_Trace = '' #if 'yes', Tshark will be launched at initialization
self.eNB_Stats = '' #if 'yes', Statistics Monitor will be launched at initialization
self.USRPIPAddress = ''
-
+ #checkers from xml
+ self.ran_checkers={}
#-----------------------------------------------------------
@@ -202,10 +203,10 @@ class RANManagement():
if (self.ranAllowMerge):
if self.ranTargetBranch == '':
if (self.ranBranch != 'develop') and (self.ranBranch != 'origin/develop'):
- mySSH.command('git merge --ff origin/develop -m "Temporary merge for CI"', '\$', 5)
+ mySSH.command('git merge --ff origin/develop -m "Temporary merge for CI"', '\$', 30)
else:
logging.debug('Merging with the target branch: ' + self.ranTargetBranch)
- mySSH.command('git merge --ff origin/' + self.ranTargetBranch + ' -m "Temporary merge for CI"', '\$', 5)
+ mySSH.command('git merge --ff origin/' + self.ranTargetBranch + ' -m "Temporary merge for CI"', '\$', 30)
logging.debug(mySSH.getBefore()) # print what git said when merging/checking out
mySSH.command('source oaienv', '\$', 5)
mySSH.command('cd cmake_targets', '\$', 5)
@@ -680,7 +681,7 @@ class RANManagement():
mySSH.close()
mySSH.copyin(lIpAddr, lUserName, lPassWord, lSourcePath + '/cmake_targets/' + extracted_log_file, '.')
logging.debug('\u001B[1m Analyzing eNB replay logfile \u001B[0m')
- logStatus = self.AnalyzeLogFile_eNB(extracted_log_file, HTML)
+ logStatus = self.AnalyzeLogFile_eNB(extracted_log_file, HTML, self.ran_checkers)
HTML.CreateHtmlTestRow(self.runtime_stats, 'OK', CONST.ALL_PROCESSES_OK)
self.eNBLogFiles[int(self.eNB_instance)] = ''
else:
@@ -713,7 +714,7 @@ class RANManagement():
#
mySSH.copyout(self.eNBIPAddress, self.eNBUserName, self.eNBPassword, './' + fileToAnalyze, self.eNBSourceCodePath + '/cmake_targets/')
logging.debug('\u001B[1m Analyzing ' + nodeB_prefix + 'NB logfile \u001B[0m ' + fileToAnalyze)
- logStatus = self.AnalyzeLogFile_eNB(fileToAnalyze, HTML)
+ logStatus = self.AnalyzeLogFile_eNB(fileToAnalyze, HTML, self.ran_checkers)
if (logStatus < 0):
HTML.CreateHtmlTestRow('N/A', 'KO', logStatus)
#display rt stats for gNB only
@@ -747,6 +748,25 @@ class RANManagement():
mySSH.command('echo ' + self.eNBPassword + ' | sudo -S rm enb*.log core* enb_*record.raw enb_*.pcap gnb_*.pcap enb_*txt physim_*.log *stats.log *monitor.pickle *monitor*.png ping*.log* iperf*.log log/*/*.log log/*/*.pcap', '\$', 15)
mySSH.close()
+ def _analyzeUeRetx(self, rounds, checkers, regex):
+ if len(rounds) == 0 or len(checkers) == 0:
+ logging.warning(f'warning: rounds={rounds} checkers={checkers}')
+ return []
+
+ perc = list(0 for i in checkers) # results in %
+ stats = list(False for i in checkers) # status if succeeded
+ tmp = re.match(regex, rounds)
+ if tmp is None:
+ logging.error('_analyzeUeRetx: did not match regex for DL retx analysis')
+ return stats
+ retx_data = [float(x) for x in tmp.groups()]
+ for i in range(0, len(perc)):
+ #case where numerator > denumerator with denum ==0 is disregarded, cannot hapen in principle, will lead to 0%
+ perc[i] = 0 if (retx_data[i] == 0) else 100 * retx_data[i + 1] / retx_data[i]
+ #treating % > 100 , % > requirement
+ stats[i] = perc[i] < 100 and perc[i] <= checkers[i]
+ return stats
+
def AnalyzeLogFile_eNB(self, eNBlogFile, HTML, checkers={}):
if (not os.path.isfile('./' + eNBlogFile)):
return -1
@@ -808,8 +828,7 @@ class RANManagement():
gnb_markers ={'SgNBReleaseRequestAcknowledge': [],'FAILURE': [], 'scgFailureInformationNR-r15': [], 'SgNBReleaseRequest': [], 'Detected UL Failure on PUSCH':[]}
nodeB_prefix_found = False
RealTimeProcessingIssue = False
- DLRetxIssue = False
- ULRetxIssue = False
+ retx_status = {}
nrRrcRcfgComplete = 0
harqFeedbackPast = 0
showedByeMsg = False # last line is Bye. -> stopped properly
@@ -992,7 +1011,8 @@ class RANManagement():
rnti = result.group(1)
#remove 1- all useless char before relevant info (ulsch or dlsch) 2- trailing char
- dlsch_ulsch_stats[rnti+k]=re.sub(r'^.*\]\s+', r'' , line.rstrip())
+ if not rnti in dlsch_ulsch_stats: dlsch_ulsch_stats[rnti] = {}
+ dlsch_ulsch_stats[rnti][k]=re.sub(r'^.*\]\s+', r'' , line.rstrip())
result = re.search('Received NR_RRCReconfigurationComplete from UE', str(line))
if result is not None:
@@ -1138,51 +1158,20 @@ class RANManagement():
htmleNBFailureMsg += htmlMsg
#ulsch and dlsch statistics and checkers
- #print statistics into html
- if len(dlsch_ulsch_stats)!=0: #check if dictionary is not empty
- #for each dictionary key, generate the msg for html as information
+ for ue in dlsch_ulsch_stats:
+ dlulstat = dlsch_ulsch_stats[ue]
+ #print statistics into html
statMsg=''
- for key in dlsch_ulsch_stats:
- statMsg += dlsch_ulsch_stats[key] + '\n'
- logging.debug(dlsch_ulsch_stats[key])
+ for key in dlulstat:
+ statMsg += dlulstat[key] + '\n'
+ logging.debug(dlulstat[key])
htmleNBFailureMsg += statMsg
- #checker
- if (len(dlsch_ulsch_stats)!=0) and (len(checkers)!=0):
- if 'd_retx_th' in checkers:
- dlsch_checker_status = list(0 for i in checkers['d_retx_th'])#status 0 / -1
- d_perc_retx = list(0 for i in checkers['d_retx_th'])#results in %
-
- if 'u_retx_th' in checkers:
- ulsch_checker_status = list(0 for i in checkers['u_retx_th'])
- u_perc_retx = list(0 for i in checkers['u_retx_th'])
-
- #ul and dl retransmissions checkers
- #NOTICE: DL and UL regex are different
-
- if ('dlsch_rounds' in dlsch_ulsch_stats) and ('d_retx_th' in checkers):
- tmp=re.match(r'^.*dlsch_rounds\s+(\d+)\/(\d+)\/(\d+)\/(\d+),\s+dlsch_errors\s+(\d+)',dlsch_ulsch_stats['dlsch_rounds'])
- if tmp is not None :
- #captures the different groups from the regex
- retx_data=[float(x) for x in tmp.groups()]
- for i in range(0,len(d_perc_retx)):
- #case where numerator > denumerator with denum ==0 is disregarded, cannot hapen in principle, will lead to 0%
- d_perc_retx[i] = 0 if (retx_data[i] == 0) else 100*retx_data[i+1]/retx_data[i]
- #treating % > 100 , % > requirement
- if (d_perc_retx[i] > 100) or (d_perc_retx[i] > checkers['d_retx_th'][i]): dlsch_checker_status[i] = -1
- if -1 in dlsch_checker_status:
- DLRetxIssue = True
-
- if ('ulsch_rounds' in dlsch_ulsch_stats) and ('u_retx_th' in checkers):
- tmp=re.match(r'^.*ulsch_rounds\s+(\d+)\/(\d+)\/(\d+)\/(\d+),\s+.*,\s+ulsch_errors\s+(\d+)',dlsch_ulsch_stats['ulsch_rounds'])
- if tmp is not None :
- retx_data=[float(x) for x in tmp.groups()]
- for i in range(0,len(d_perc_retx)):
- u_perc_retx[i] = 0 if (retx_data[i] == 0) else 100*retx_data[i+1]/retx_data[i]
- if (u_perc_retx[i] > 100) or (u_perc_retx[i] > checkers['u_retx_th'][i]): ulsch_checker_status[i] = -1
- if -1 in ulsch_checker_status:
- ULRetxIssue = True
-
+ retx_status[ue] = {}
+ dlcheckers = [] if 'd_retx_th' not in checkers else checkers['d_retx_th']
+ retx_status[ue]['dl'] = self._analyzeUeRetx(dlulstat['dlsch_rounds'], dlcheckers, r'^.*dlsch_rounds\s+(\d+)\/(\d+)\/(\d+)\/(\d+),\s+dlsch_errors\s+(\d+)')
+ ulcheckers = [] if 'u_retx_th' not in checkers else checkers['u_retx_th']
+ retx_status[ue]['ul'] = self._analyzeUeRetx(dlulstat['ulsch_rounds'], ulcheckers, r'^.*ulsch_rounds\s+(\d+)\/(\d+)\/(\d+)\/(\d+),\s+.*,\s+ulsch_errors\s+(\d+)')
#real time statistics
@@ -1243,21 +1232,15 @@ class RANManagement():
logging.debug(statMsg)
htmleNBFailureMsg += htmlMsg
- if DLRetxIssue:
- retx_checker_status_str = ''
- for status in dlsch_checker_status : retx_checker_status_str+=str(status)+ ' '
- logging.debug('\u001B[1;37;41m ' + nodeB_prefix + 'NB ended with too many retransmissions / errors issue in DL ! \u001B[0m')
- logging.debug('\u001B[1;37;41m Status : ' + retx_checker_status_str + ' \u001B[0m')
- htmleNBFailureMsg += 'Fail due to retransmissions / errors issue in DL, status : ' + retx_checker_status_str + '\n'
- global_status = CONST.ENB_RETX_ISSUE
-
- if ULRetxIssue:
- retx_checker_status_str = ''
- for status in ulsch_checker_status : retx_checker_status_str+=str(status)+ ' '
- logging.debug('\u001B[1;37;41m ' + nodeB_prefix + 'NB ended with too many retransmissions / errors issue in UL ! \u001B[0m')
- logging.debug('\u001B[1;37;41m Status : ' + retx_checker_status_str + ' \u001B[0m')
- htmleNBFailureMsg += 'Fail due to retransmissions / errors issue in UL, status : ' + retx_checker_status_str + '\n'
- global_status = CONST.ENB_RETX_ISSUE
+ for ue in retx_status:
+ msg = f"retransmissions for UE {ue}: DL {retx_status[ue]['dl']} UL {retx_status[ue]['ul']}"
+ if False in retx_status[ue]['dl'] or False in retx_status[ue]['ul']:
+ msg = 'Failure: ' + msg
+ logging.error(f'\u001B[1;37;41m {msg}\u001B[0m')
+ htmleNBFailureMsg += f'{msg}\n'
+ global_status = CONST.ENB_RETX_ISSUE
+ else:
+ logging.debug(msg)
if RealTimeProcessingIssue:
logging.debug('\u001B[1;37;41m ' + nodeB_prefix + 'NB ended with real time processing issue! \u001B[0m')
diff --git a/ci-scripts/sshconnection.py b/ci-scripts/sshconnection.py
index 0946ce0f34..5115136dda 100644
--- a/ci-scripts/sshconnection.py
+++ b/ci-scripts/sshconnection.py
@@ -56,7 +56,7 @@ class SSHConnection():
self.picocom_closure = True
def open(self, ipaddress, username, password):
- prompt = "#" if username == "root" else "\$"
+ prompt = "\$"
count = 0
connect_status = False
while count < 4:
@@ -74,7 +74,7 @@ class SSHConnection():
count = 10
connect_status = True
else:
- logging.debug('self.sshresponse = ' + str(self.sshresponse))
+ logging.warning('self.sshresponse = ' + str(self.sshresponse))
elif self.sshresponse == 1:
self.ssh.sendline(password)
self.sshresponse = self.ssh.expect([prompt, 'Permission denied', 'password:', pexpect.EOF, pexpect.TIMEOUT])
@@ -82,7 +82,7 @@ class SSHConnection():
count = 10
connect_status = True
else:
- logging.debug('self.sshresponse = ' + str(self.sshresponse))
+ logging.warning('self.sshresponse = ' + str(self.sshresponse))
elif self.sshresponse == 2:
# We directly ended up on the remote server because of pubkey auth
count = 10
@@ -91,8 +91,8 @@ class SSHConnection():
self.sshresponse = self.ssh.expect([prompt])
else:
# debug output
- logging.debug(str(self.ssh.before))
- logging.debug('self.sshresponse = ' + str(self.sshresponse))
+ logging.warning(str(self.ssh.before))
+ logging.warning('self.sshresponse = ' + str(self.sshresponse))
# adding a tempo when failure
if not connect_status:
time.sleep(1)
@@ -108,7 +108,7 @@ class SSHConnection():
def cde_check_value(self, commandline, expected, timeout):
- logging.debug(commandline)
+ logging.info(commandline)
self.ssh.timeout = timeout
self.ssh.sendline(commandline)
expected.append(pexpect.EOF)
@@ -118,7 +118,7 @@ class SSHConnection():
def command(self, commandline, expectedline, timeout, silent=False, resync=False):
if not silent:
- logging.debug(commandline)
+ logging.info(commandline)
self.ssh.timeout = timeout
# Nasty patch when pexpect output is out of sync.
# Much pronounced when running back-to-back-back oc commands
@@ -133,27 +133,27 @@ class SSHConnection():
if self.sshresponse == 0:
return 0
elif self.sshresponse == 1:
- logging.debug('\u001B[1;37;41m Unexpected EOF \u001B[0m')
- logging.debug('Expected Line : ' + expectedline)
- logging.debug(str(self.ssh.before))
+ logging.error('\u001B[1;37;41m Unexpected EOF \u001B[0m')
+ logging.error('Expected Line : ' + expectedline)
+ logging.error(str(self.ssh.before))
sys.exit(self.sshresponse)
elif self.sshresponse == 2:
- logging.debug('\u001B[1;37;41m Unexpected TIMEOUT \u001B[0m')
- logging.debug('Expected Line : ' + expectedline)
+ logging.error('\u001B[1;37;41m Unexpected TIMEOUT \u001B[0m')
+ logging.error('Expected Line : ' + expectedline)
result = re.search('ping |iperf |picocom', str(commandline))
if result is None:
- logging.debug(str(self.ssh.before))
+ logging.warning(str(self.ssh.before))
sys.exit(self.sshresponse)
else:
return -1
else:
- logging.debug('\u001B[1;37;41m Unexpected Others \u001B[0m')
- logging.debug('Expected Line : ' + expectedline)
+ logging.error('\u001B[1;37;41m Unexpected Others \u001B[0m')
+ logging.error('Expected Line : ' + expectedline)
sys.exit(self.sshresponse)
def command2(self, commandline, timeout, silent=False):
if not silent:
- logging.debug(commandline)
+ logging.info(commandline)
self.cmd2Results = ''
noHistoryCmd = 'unset HISTFILE; ' + commandline
myHost = self.username + '@' + self.ipaddress
@@ -165,7 +165,7 @@ class SSHConnection():
def command3(self, commandline, timeout, silent=False):
if not silent:
- logging.debug(commandline)
+ logging.info(commandline)
self.cmd2Results = ''
noHistoryCmd = 'unset HISTFILE; ' + commandline
myHost = self.username + '@' + self.ipaddress
@@ -186,14 +186,14 @@ class SSHConnection():
pass
elif self.sshresponse == 1:
if not self.picocom_closure:
- logging.debug('\u001B[1;37;41m Unexpected TIMEOUT during closing\u001B[0m')
+ logging.warning('\u001B[1;37;41m Unexpected TIMEOUT during closing\u001B[0m')
else:
- logging.debug('\u001B[1;37;41m Unexpected Others during closing\u001B[0m')
+ logging.warning('\u001B[1;37;41m Unexpected Others during closing\u001B[0m')
def copyin(self, ipaddress, username, password, source, destination):
count = 0
copy_status = False
- logging.debug('scp -r '+ username + '@' + ipaddress + ':' + source + ' ' + destination)
+ logging.info('scp -r '+ username + '@' + ipaddress + ':' + source + ' ' + destination)
while count < 10:
scp_spawn = pexpect.spawn('scp -r '+ username + '@' + ipaddress + ':' + source + ' ' + destination, timeout = 100)
scp_response = scp_spawn.expect(['Are you sure you want to continue connecting (yes/no)?', 'password:', pexpect.EOF, pexpect.TIMEOUT])
@@ -206,7 +206,7 @@ class SSHConnection():
count = 10
copy_status = True
else:
- logging.debug('1 - scp_response = ' + str(scp_response))
+ logging.warning('1 - scp_response = ' + str(scp_response))
elif scp_response == 1:
scp_spawn.sendline(password)
scp_response = scp_spawn.expect(['\$', 'Permission denied', 'password:', pexpect.EOF, pexpect.TIMEOUT])
@@ -214,12 +214,12 @@ class SSHConnection():
count = 10
copy_status = True
else:
- logging.debug('2 - scp_response = ' + str(scp_response))
+ logging.warning('2 - scp_response = ' + str(scp_response))
elif scp_response == 2:
count = 10
copy_status = True
else:
- logging.debug('3 - scp_response = ' + str(scp_response))
+ logging.warning('3 - scp_response = ' + str(scp_response))
# adding a tempo when failure
if not copy_status:
time.sleep(1)
@@ -232,7 +232,7 @@ class SSHConnection():
def copyout(self, ipaddress, username, password, source, destination):
count = 0
copy_status = False
- logging.debug('scp -r ' + source + ' ' + username + '@' + ipaddress + ':' + destination)
+ logging.info('scp -r ' + source + ' ' + username + '@' + ipaddress + ':' + destination)
while count < 4:
scp_spawn = pexpect.spawn('scp -r ' + source + ' ' + username + '@' + ipaddress + ':' + destination, timeout = 100)
scp_response = scp_spawn.expect(['Are you sure you want to continue connecting (yes/no)?', 'password:', pexpect.EOF, pexpect.TIMEOUT])
@@ -245,7 +245,7 @@ class SSHConnection():
count = 10
copy_status = True
else:
- logging.debug('1 - scp_response = ' + str(scp_response))
+ logging.warning('1 - scp_response = ' + str(scp_response))
elif scp_response == 1:
scp_spawn.sendline(password)
scp_response = scp_spawn.expect(['\$', 'Permission denied', 'password:', pexpect.EOF, pexpect.TIMEOUT])
@@ -253,12 +253,12 @@ class SSHConnection():
count = 10
copy_status = True
else:
- logging.debug('2 - scp_response = ' + str(scp_response))
+ logging.warning('2 - scp_response = ' + str(scp_response))
elif scp_response == 2:
count = 10
copy_status = True
else:
- logging.debug('3 - scp_response = ' + str(scp_response))
+ logging.warning('3 - scp_response = ' + str(scp_response))
# adding a tempo when failure
if not copy_status:
time.sleep(1)
diff --git a/ci-scripts/xml_class_list.yml b/ci-scripts/xml_class_list.yml
index 6497fd3020..a191bd3332 100755
--- a/ci-scripts/xml_class_list.yml
+++ b/ci-scripts/xml_class_list.yml
@@ -40,7 +40,6 @@
- IdleSleep
- Perform_X2_Handover
- Build_Image
- - Copy_Image_to_Test
- Deploy_Object
- Undeploy_Object
- Cppcheck_Analysis
@@ -51,3 +50,6 @@
- IperfFromContainer
- StatsFromGenObject
- LicenceAndFormattingCheck
+ - Push_Local_Registry
+ - Pull_Local_Registry
+ - Clean_Test_Server_Images
diff --git a/ci-scripts/xml_files/container_4g_l2sim_proxy.xml b/ci-scripts/xml_files/container_4g_l2sim_proxy.xml
index c378ce8905..153cfffda6 100644
--- a/ci-scripts/xml_files/container_4g_l2sim_proxy.xml
+++ b/ci-scripts/xml_files/container_4g_l2sim_proxy.xml
@@ -36,7 +36,7 @@
1
1
True
- 56cfdc0
+ a6169d8
diff --git a/ci-scripts/xml_files/container_4g_l2sim_tdd.xml b/ci-scripts/xml_files/container_4g_l2sim_tdd.xml
index 3ac32e1989..419ede8cbb 100644
--- a/ci-scripts/xml_files/container_4g_l2sim_tdd.xml
+++ b/ci-scripts/xml_files/container_4g_l2sim_tdd.xml
@@ -26,6 +26,7 @@
wrench
1
+ 111111
100001
000000
000001
@@ -42,6 +43,13 @@
+
+ Pull_Local_Registry
+ Pull Images from Local Registry
+ 0
+ oai-enb oai-lte-ue
+
+
DeployGenObject
Deploy Cassandra Database
diff --git a/ci-scripts/xml_files/container_4g_l2sim_tdd_down.xml b/ci-scripts/xml_files/container_4g_l2sim_tdd_down.xml
index ec0f2523e2..011c3dbf6a 100644
--- a/ci-scripts/xml_files/container_4g_l2sim_tdd_down.xml
+++ b/ci-scripts/xml_files/container_4g_l2sim_tdd_down.xml
@@ -26,6 +26,7 @@
trash
100002
+ 222222
@@ -35,4 +36,10 @@
yaml_files/4g_l2sim_fdd
+
+ Clean_Test_Server_Images
+ Clean Test Images on Test Server
+ 0
+
+
diff --git a/ci-scripts/xml_files/container_4g_rfsim_fdd_05MHz.xml b/ci-scripts/xml_files/container_4g_rfsim_fdd_05MHz.xml
index a598b2bdc1..a776b85c2c 100644
--- a/ci-scripts/xml_files/container_4g_rfsim_fdd_05MHz.xml
+++ b/ci-scripts/xml_files/container_4g_rfsim_fdd_05MHz.xml
@@ -25,6 +25,7 @@
Monolithic eNB - FDD 05MHz
wrench
+ 111111
100011
000011
000001
@@ -42,6 +43,13 @@
+
+ Pull_Local_Registry
+ Pull Images from Local Registry
+ 0
+ oai-enb oai-lte-ue
+
+
DeployGenObject
Deploy Cassandra Database
@@ -74,7 +82,7 @@
DeployGenObject
Deploy OAI 4G eNB RF sim (FDD 05MHz)
yaml_files/4g_rfsimulator_fdd_05MHz
- enb
+ oai_enb0
8
@@ -97,7 +105,7 @@
PingFromContainer
Ping LTE-UE from Traffic-Gen
- rfsim4g-trf-gen
+ rfsim4g-trf-gen
-c 20 12.0.0.2
5
diff --git a/ci-scripts/xml_files/container_4g_rfsim_fdd_05MHz_down.xml b/ci-scripts/xml_files/container_4g_rfsim_fdd_05MHz_down.xml
index 1c3b1d5a7c..068a4063f4 100644
--- a/ci-scripts/xml_files/container_4g_rfsim_fdd_05MHz_down.xml
+++ b/ci-scripts/xml_files/container_4g_rfsim_fdd_05MHz_down.xml
@@ -26,6 +26,7 @@
trash
100011
+ 222222
@@ -35,4 +36,10 @@
yaml_files/4g_rfsimulator_fdd_05MHz
+
+ Clean_Test_Server_Images
+ Clean Test Images on Test Server
+ 0
+
+
diff --git a/ci-scripts/xml_files/container_4g_rfsim_fdd_05MHz_noS1.xml b/ci-scripts/xml_files/container_4g_rfsim_fdd_05MHz_noS1.xml
index 07ea358ad5..e70d954a22 100644
--- a/ci-scripts/xml_files/container_4g_rfsim_fdd_05MHz_noS1.xml
+++ b/ci-scripts/xml_files/container_4g_rfsim_fdd_05MHz_noS1.xml
@@ -25,6 +25,7 @@
Monolithic eNB - FDD 05MHz - noS1
wrench
+ 111111
100011
000013
000001
@@ -38,6 +39,13 @@
+
+ Pull_Local_Registry
+ Pull Images from Local Registry
+ 0
+ oai-enb oai-lte-ue
+
+
IdleSleep
Sleep
@@ -54,7 +62,7 @@
DeployGenObject
Deploy OAI 4G eNB RF sim (FDD 05MHz)
yaml_files/4g_rfsimulator_fdd_05MHz_noS1
- enb
+ oai_enb0
1
@@ -77,7 +85,7 @@
PingFromContainer
Ping LTE-UE from eNB
- rfsim4g-oai-enb
+ rfsim4g-oai-enb
-I oaitun_enb1 -c 20 10.0.1.2
5
diff --git a/ci-scripts/xml_files/container_4g_rfsim_fdd_05MHz_noS1_down.xml b/ci-scripts/xml_files/container_4g_rfsim_fdd_05MHz_noS1_down.xml
index 6db1dfd9de..f528ae0c21 100644
--- a/ci-scripts/xml_files/container_4g_rfsim_fdd_05MHz_noS1_down.xml
+++ b/ci-scripts/xml_files/container_4g_rfsim_fdd_05MHz_noS1_down.xml
@@ -26,6 +26,7 @@
trash
100011
+ 222222
@@ -35,4 +36,10 @@
yaml_files/4g_rfsimulator_fdd_05MHz_noS1
+
+ Clean_Test_Server_Images
+ Clean Test Images on Test Server
+ 0
+
+
diff --git a/ci-scripts/xml_files/container_4g_rfsim_fdd_10MHz.xml b/ci-scripts/xml_files/container_4g_rfsim_fdd_10MHz.xml
index 29acfa3b09..6b88816c4a 100644
--- a/ci-scripts/xml_files/container_4g_rfsim_fdd_10MHz.xml
+++ b/ci-scripts/xml_files/container_4g_rfsim_fdd_10MHz.xml
@@ -25,6 +25,7 @@
Monolithic eNB - FDD 10MHz
wrench
+ 111111
100011
000011
000001
@@ -42,6 +43,13 @@
+
+ Pull_Local_Registry
+ Pull Images from Local Registry
+ 0
+ oai-enb oai-lte-ue
+
+
DeployGenObject
Deploy Cassandra Database
@@ -74,7 +82,7 @@
DeployGenObject
Deploy OAI 4G eNB RF sim (FDD 10MHz)
yaml_files/4g_rfsimulator_fdd_10MHz
- enb
+ oai_enb0
8
@@ -97,7 +105,7 @@
PingFromContainer
Ping LTE-UE from Traffic-Gen
- rfsim4g-trf-gen
+ rfsim4g-trf-gen
-c 20 12.0.0.2
5
diff --git a/ci-scripts/xml_files/container_4g_rfsim_fdd_10MHz_down.xml b/ci-scripts/xml_files/container_4g_rfsim_fdd_10MHz_down.xml
index 7d03d56ff4..37295911a5 100644
--- a/ci-scripts/xml_files/container_4g_rfsim_fdd_10MHz_down.xml
+++ b/ci-scripts/xml_files/container_4g_rfsim_fdd_10MHz_down.xml
@@ -26,6 +26,7 @@
trash
100011
+ 222222
@@ -35,4 +36,10 @@
yaml_files/4g_rfsimulator_fdd_10MHz
+
+ Clean_Test_Server_Images
+ Clean Test Images on Test Server
+ 0
+
+
diff --git a/ci-scripts/xml_files/container_4g_rfsim_fdd_20MHz.xml b/ci-scripts/xml_files/container_4g_rfsim_fdd_20MHz.xml
index 74f712ebda..e33554c8ce 100644
--- a/ci-scripts/xml_files/container_4g_rfsim_fdd_20MHz.xml
+++ b/ci-scripts/xml_files/container_4g_rfsim_fdd_20MHz.xml
@@ -25,6 +25,7 @@
Monolithic eNB - FDD 20MHz
wrench
+ 111111
100011
000011
000001
@@ -42,6 +43,13 @@
+
+ Pull_Local_Registry
+ Pull Images from Local Registry
+ 0
+ oai-enb oai-lte-ue
+
+
DeployGenObject
Deploy Cassandra Database
@@ -74,7 +82,7 @@
DeployGenObject
Deploy OAI 4G eNB RF sim (FDD 20MHz)
yaml_files/4g_rfsimulator_fdd_20MHz
- enb
+ oai_enb0
8
@@ -97,7 +105,7 @@
PingFromContainer
Ping LTE-UE from Traffic-Gen
- rfsim4g-trf-gen
+ rfsim4g-trf-gen
-c 20 12.0.0.2
5
diff --git a/ci-scripts/xml_files/container_4g_rfsim_fdd_20MHz_down.xml b/ci-scripts/xml_files/container_4g_rfsim_fdd_20MHz_down.xml
index 0a721c5091..2017aec636 100644
--- a/ci-scripts/xml_files/container_4g_rfsim_fdd_20MHz_down.xml
+++ b/ci-scripts/xml_files/container_4g_rfsim_fdd_20MHz_down.xml
@@ -26,6 +26,7 @@
trash
100011
+ 222222
@@ -35,4 +36,10 @@
yaml_files/4g_rfsimulator_fdd_20MHz
+
+ Clean_Test_Server_Images
+ Clean Test Images on Test Server
+ 0
+
+
diff --git a/ci-scripts/xml_files/container_4g_rfsim_tdd_05MHz.xml b/ci-scripts/xml_files/container_4g_rfsim_tdd_05MHz.xml
index 7a29e50f39..c39679e063 100644
--- a/ci-scripts/xml_files/container_4g_rfsim_tdd_05MHz.xml
+++ b/ci-scripts/xml_files/container_4g_rfsim_tdd_05MHz.xml
@@ -24,8 +24,9 @@
rfsim-4glte-tdd05mhz
Monolithic eNB - TDD 05MHz
wrench
- 1
+ 1
+ 111111
100011
000011
000001
@@ -43,6 +44,13 @@
+
+ Pull_Local_Registry
+ Pull Images from Local Registry
+ 0
+ oai-enb oai-lte-ue
+
+
DeployGenObject
Deploy Cassandra Database
@@ -75,7 +83,7 @@
DeployGenObject
Deploy OAI 4G eNB RF sim (TDD 05MHz)
yaml_files/4g_rfsimulator_tdd_05MHz
- enb
+ oai_enb0
7
@@ -98,7 +106,7 @@
PingFromContainer
Ping LTE-UE from Traffic-Gen
- rfsim4g-trf-gen
+ rfsim4g-trf-gen
-c 20 12.0.0.2
5
diff --git a/ci-scripts/xml_files/container_4g_rfsim_tdd_05MHz_down.xml b/ci-scripts/xml_files/container_4g_rfsim_tdd_05MHz_down.xml
index 7e27bac73c..7e526d4f48 100644
--- a/ci-scripts/xml_files/container_4g_rfsim_tdd_05MHz_down.xml
+++ b/ci-scripts/xml_files/container_4g_rfsim_tdd_05MHz_down.xml
@@ -26,6 +26,7 @@
trash
100011
+ 222222
@@ -35,4 +36,10 @@
yaml_files/4g_rfsimulator_tdd_05MHz
+
+ Clean_Test_Server_Images
+ Clean Test Images on Test Server
+ 0
+
+
diff --git a/ci-scripts/xml_files/container_5g_f1_rfsim.xml b/ci-scripts/xml_files/container_5g_f1_rfsim.xml
index 61157f72df..8a7549da91 100644
--- a/ci-scripts/xml_files/container_5g_f1_rfsim.xml
+++ b/ci-scripts/xml_files/container_5g_f1_rfsim.xml
@@ -25,6 +25,7 @@
CU-DU F1 split
wrench
+ 111111
100021
000020
000021
@@ -38,6 +39,13 @@
+
+ Pull_Local_Registry
+ Pull Images from Local Registry
+ 0
+ oai-gnb oai-nr-ue
+
+
DeployGenObject
Deploy MySql Database
@@ -89,7 +97,7 @@
PingFromContainer
Ping NR-UE from ext-dn
- rfsim5g-oai-ext-dn
+ rfsim5g-oai-ext-dn
-c 20 12.1.1.2
5
@@ -116,8 +124,8 @@
UndeployGenObject
Undeploy all OAI 5G stack
yaml_files/5g_f1_rfsimulator
- 5,0,0,0
- 5,0,0,0
+ 1,0,0,0
+ 1,0,0,0
diff --git a/ci-scripts/xml_files/container_5g_f1_rfsim_down.xml b/ci-scripts/xml_files/container_5g_f1_rfsim_down.xml
index bb640381cf..e083286a09 100644
--- a/ci-scripts/xml_files/container_5g_f1_rfsim_down.xml
+++ b/ci-scripts/xml_files/container_5g_f1_rfsim_down.xml
@@ -26,6 +26,7 @@
trash
100022
+ 222222
@@ -35,4 +36,10 @@
yaml_files/5g_f1_rfsimulator
+
+ Clean_Test_Server_Images
+ Clean Test Images on Test Server
+ 0
+
+
diff --git a/ci-scripts/xml_files/container_5g_fdd_rfsim.xml b/ci-scripts/xml_files/container_5g_fdd_rfsim.xml
index 578d5f221f..e1dc8f0d60 100644
--- a/ci-scripts/xml_files/container_5g_fdd_rfsim.xml
+++ b/ci-scripts/xml_files/container_5g_fdd_rfsim.xml
@@ -26,6 +26,7 @@
wrench
1
+ 111111
100011
000010
000011
@@ -39,6 +40,13 @@
+
+ Pull_Local_Registry
+ Pull Images from Local Registry
+ 0
+ oai-gnb oai-nr-ue
+
+
DeployGenObject
Deploy MySql Database
@@ -82,7 +90,7 @@
PingFromContainer
Ping NR-UE from ext-dn
- rfsim5g-oai-ext-dn
+ rfsim5g-oai-ext-dn
-c 20 12.1.1.2
5
@@ -109,8 +117,8 @@
UndeployGenObject
Undeploy all OAI 5G stack
yaml_files/5g_fdd_rfsimulator
- 5,0,0,0
- 5,0,0,0
+ 1,0,0,0
+ 1,0,0,0
diff --git a/ci-scripts/xml_files/container_5g_fdd_rfsim_down.xml b/ci-scripts/xml_files/container_5g_fdd_rfsim_down.xml
index 12648ca750..a2cae33f4c 100644
--- a/ci-scripts/xml_files/container_5g_fdd_rfsim_down.xml
+++ b/ci-scripts/xml_files/container_5g_fdd_rfsim_down.xml
@@ -26,6 +26,7 @@
trash
100012
+ 222222
@@ -35,4 +36,10 @@
yaml_files/5g_fdd_rfsimulator
+
+ Clean_Test_Server_Images
+ Clean Test Images on Test Server
+ 0
+
+
diff --git a/ci-scripts/xml_files/container_5g_l2sim_tdd.xml b/ci-scripts/xml_files/container_5g_l2sim_tdd.xml
index cc3c1ae391..e2631d6e05 100644
--- a/ci-scripts/xml_files/container_5g_l2sim_tdd.xml
+++ b/ci-scripts/xml_files/container_5g_l2sim_tdd.xml
@@ -26,6 +26,7 @@
wrench
1
+ 111111
100001
000000
000001
@@ -40,6 +41,13 @@
+
+ Pull_Local_Registry
+ Pull Images from Local Registry
+ 0
+ oai-gnb oai-nr-ue
+
+
DeployGenObject
Deploy MySql Database
@@ -98,6 +106,8 @@
UndeployGenObject
Undeploy all OAI 5G stack
yaml_files/5g_l2sim_tdd
+ 20,50,100,100
+ 0,0,0,0
diff --git a/ci-scripts/xml_files/container_5g_l2sim_tdd_down.xml b/ci-scripts/xml_files/container_5g_l2sim_tdd_down.xml
index d3630cd905..906ce7aa81 100644
--- a/ci-scripts/xml_files/container_5g_l2sim_tdd_down.xml
+++ b/ci-scripts/xml_files/container_5g_l2sim_tdd_down.xml
@@ -26,6 +26,7 @@
trash
100002
+ 222222
@@ -35,4 +36,10 @@
yaml_files/5g_l2sim_tdd
+
+ Clean_Test_Server_Images
+ Clean Test Images on Test Server
+ 0
+
+
diff --git a/ci-scripts/xml_files/container_5g_rfsim.xml b/ci-scripts/xml_files/container_5g_rfsim.xml
index 5ad400ecc1..b43265a8b4 100644
--- a/ci-scripts/xml_files/container_5g_rfsim.xml
+++ b/ci-scripts/xml_files/container_5g_rfsim.xml
@@ -26,6 +26,7 @@
wrench
1
+ 111111
100001
000000
000001
@@ -42,6 +43,13 @@
+
+ Pull_Local_Registry
+ Pull Images from Local Registry
+ 0
+ oai-gnb oai-nr-ue
+
+
DeployGenObject
Deploy MySql Database
@@ -93,7 +101,7 @@
PingFromContainer
Ping NR-UE from ext-dn
- rfsim5g-oai-ext-dn
+ rfsim5g-oai-ext-dn
-c 20 12.1.1.2
5
@@ -109,7 +117,7 @@
PingFromContainer
Ping Second NR-UE from ext-dn
- rfsim5g-oai-ext-dn
+ rfsim5g-oai-ext-dn
-c 20 12.1.1.3
5
@@ -136,8 +144,8 @@
UndeployGenObject
Undeploy all OAI 5G stack
yaml_files/5g_rfsimulator
- 5,0,0,0
- 5,0,0,0
+ 1,0,0,0
+ 1,0,0,0
diff --git a/ci-scripts/xml_files/container_5g_rfsim_down.xml b/ci-scripts/xml_files/container_5g_rfsim_down.xml
index 028ff61864..a2f048a7f4 100644
--- a/ci-scripts/xml_files/container_5g_rfsim_down.xml
+++ b/ci-scripts/xml_files/container_5g_rfsim_down.xml
@@ -26,6 +26,7 @@
trash
100002
+ 222222
@@ -35,4 +36,10 @@
yaml_files/5g_rfsimulator
+
+ Clean_Test_Server_Images
+ Clean Test Images on Test Server
+ 0
+
+
diff --git a/ci-scripts/xml_files/container_image_build.xml b/ci-scripts/xml_files/container_image_build.xml
index e7eabc0794..7684e0f997 100644
--- a/ci-scripts/xml_files/container_image_build.xml
+++ b/ci-scripts/xml_files/container_image_build.xml
@@ -26,6 +26,7 @@
wrench
000001
+ 000010
@@ -38,4 +39,10 @@
True
+
+ Push_Local_Registry
+ Push Images to Local Registry
+ 0
+
+
diff --git a/ci-scripts/xml_files/container_l2sim_proxy.xml b/ci-scripts/xml_files/container_l2sim_proxy.xml
index f32658daca..e4fe9be275 100644
--- a/ci-scripts/xml_files/container_l2sim_proxy.xml
+++ b/ci-scripts/xml_files/container_l2sim_proxy.xml
@@ -36,7 +36,7 @@
1
1
True
- 56cfdc0
+ a6169d8
diff --git a/ci-scripts/xml_files/container_lte_b200_fdd_05Mhz_tm1.xml b/ci-scripts/xml_files/container_lte_b200_fdd_05Mhz_tm1.xml
new file mode 100644
index 0000000000..28b70f103f
--- /dev/null
+++ b/ci-scripts/xml_files/container_lte_b200_fdd_05Mhz_tm1.xml
@@ -0,0 +1,168 @@
+
+
+ test-05-tm1
+ Test-05MHz-TM1
+ tasks
+
+111110
+040101
+030101
+000001
+040301 000001 040501 040603 040604 040605 040606 040607 040641 040642 040643 040644 040401 040201
+030201
+
+
+
+
+ Pull_Local_Registry
+ Pull Images from Local Registry
+ 0
+ oai-enb
+
+
+
+ Deploy_Object
+ Deploy eNB (FDD/Band7/5MHz/B200) in a container
+ ci-scripts/yaml_files/lte_b200_fdd_05Mhz_tm1
+ 0
+ 0
+
+
+
+ IdleSleep
+ Sleep
+ 5
+
+
+
+ Undeploy_Object
+ Undeploy eNB
+ ci-scripts/yaml_files/lte_b200_fdd_05Mhz_tm1
+ 0
+ 0
+
+
+
+ Initialize_UE
+ Initialize UE
+
+
+
+ Terminate_UE
+ Terminate UE
+
+
+
+ Attach_UE
+ Attach UE
+
+
+
+ Detach_UE
+ Detach UE
+
+
+
+ Ping
+ ping (5MHz - 20 sec)
+ -c 20
+ 5
+
+
+
+ Iperf
+ iperf (5MHz - DL/15Mbps/UDP)(30 sec)(balanced profile)
+ -u -b 15M -t 30 -i 1
+ 50
+ balanced
+
+
+
+ Iperf
+ iperf (5MHz - DL/15Mbps/UDP)(30 sec)(single-ue profile)
+ -u -b 15M -t 30 -i 1
+ 50
+ single-ue
+
+
+
+ Iperf
+ iperf (5MHz - DL/15Mbps/UDP)(30 sec)(unbalanced profile)
+ -u -b 15M -t 30 -i 1
+ 50
+ unbalanced
+
+
+
+ Iperf
+ iperf (5MHz - DL/TCP)(30 sec)(single-ue profile)
+ -t 30 -i 1 -fm
+ 50
+ single-ue
+
+
+
+ Iperf
+ iperf (5MHz - DL/TCP)(30 sec)(balanced profile)
+ -t 30 -i 1 -fm
+ 50
+ balanced
+
+
+
+ Iperf
+ iperf (5MHz - UL/9Mbps/UDP)(30 sec)(balanced profile)
+ -u -b 9M -t 30 -i 1 -R
+ 50
+ balanced
+
+
+
+ Iperf
+ iperf (5MHz - UL/9Mbps/UDP)(30 sec)(single-ue profile)
+ -u -b 9M -t 30 -i 1 -R
+ 50
+ single-ue
+
+
+
+ Iperf
+ iperf (5MHz - UL/TCP)(30 sec)(single-ue profile)
+ -t 30 -i 1 -fm -R
+ 50
+ single-ue
+
+
+
+ Iperf
+ iperf (5MHz - UL/TCP)(30 sec)(balanced profile)
+ -t 30 -i 1 -fm -R
+ 50
+ balanced
+
+
+
+
diff --git a/ci-scripts/xml_files/container_nsa_b200_quectel.xml b/ci-scripts/xml_files/container_nsa_b200_quectel.xml
index 51e6668cf0..3734c91229 100644
--- a/ci-scripts/xml_files/container_nsa_b200_quectel.xml
+++ b/ci-scripts/xml_files/container_nsa_b200_quectel.xml
@@ -26,9 +26,10 @@
tasks
1
+ 111110
+ 111111
000001
010002
- 030000
030101
000001
030102
@@ -49,6 +50,20 @@
+
+ Pull_Local_Registry
+ Pull Images from Local Registry
+ 0
+ oai-enb
+
+
+
+ Pull_Local_Registry
+ Pull Images from Local Registry
+ 1
+ oai-gnb
+
+
Initialize_UE
Initialize Quectel
@@ -62,14 +77,6 @@
idefix
-
- Copy_Image_to_Test
- Copy gNB image to test server
- oai-gnb
- 0
- 1
-
-
Deploy_Object
Deploy eNB (FDD/Band7/5MHz/B200) in a container
@@ -180,6 +187,8 @@
ci-scripts/yaml_files/nsa_b200_gnb
1
1
+ 1,100,100,100
+ 1,100,100,100
diff --git a/ci-scripts/xml_files/container_nsa_b200_terminate.xml b/ci-scripts/xml_files/container_nsa_b200_terminate.xml
index 4b446988cd..a766fb7bcb 100644
--- a/ci-scripts/xml_files/container_nsa_b200_terminate.xml
+++ b/ci-scripts/xml_files/container_nsa_b200_terminate.xml
@@ -28,6 +28,8 @@
030202
030201
+ 222220
+ 222221
@@ -47,5 +49,17 @@
1
+
+ Clean_Test_Server_Images
+ Clean Test Images on Test Server
+ 0
+
+
+
+ Clean_Test_Server_Images
+ Clean Test Images on Test Server
+ 1
+
+
diff --git a/ci-scripts/xml_files/container_sa_b200_quectel.xml b/ci-scripts/xml_files/container_sa_b200_quectel.xml
index 7f0475629d..016a3f34ec 100644
--- a/ci-scripts/xml_files/container_sa_b200_quectel.xml
+++ b/ci-scripts/xml_files/container_sa_b200_quectel.xml
@@ -26,8 +26,8 @@
tasks
1
+ 111111
010002
- 030000
030101
000001
010000
@@ -47,6 +47,13 @@
-->
+
+ Pull_Local_Registry
+ Pull Images from Local Registry
+ 0
+ oai-gnb
+
+
Initialize_UE
Initialize Quectel
@@ -60,14 +67,6 @@
idefix
-
- Copy_Image_to_Test
- Copy gNB image to test server
- oai-gnb
- 1
- 0
-
-
Deploy_Object
Deploy gNB (TDD/Band78/40MHz/B200) in a container
@@ -162,6 +161,8 @@
ci-scripts/yaml_files/sa_b200_gnb
0
0
+ 1,100,100,100
+ 1,100,100,100
diff --git a/ci-scripts/xml_files/container_sa_b200_terminate.xml b/ci-scripts/xml_files/container_sa_b200_terminate.xml
index 5a2b6bd454..8e7e0eff44 100644
--- a/ci-scripts/xml_files/container_sa_b200_terminate.xml
+++ b/ci-scripts/xml_files/container_sa_b200_terminate.xml
@@ -27,6 +27,7 @@
1
030201
+ 222222
@@ -39,4 +40,10 @@
sa-test
+
+ Clean_Test_Server_Images
+ Clean Test Images on Test Server
+ 0
+
+
diff --git a/ci-scripts/xml_files/enb_usrp210_band7_test_05mhz_tm1.xml b/ci-scripts/xml_files/enb_usrp210_band7_test_05mhz_tm1.xml
deleted file mode 100644
index 2fe0e17611..0000000000
--- a/ci-scripts/xml_files/enb_usrp210_band7_test_05mhz_tm1.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-
-
- test-05-tm1
- Test-05MHz-TM1
- tasks
-
- 030201
- 040101
- 030101 040301 040501 040603 040604 040605 040606 040607 040641 040642 040643 040644 040401 040201 030201
-
-
-
-
- Initialize_eNB
- Initialize eNB (FDD/Band7/5MHz)
- -O ci-scripts/conf_files/enb.band7.tm1.25PRB.usrpb210.conf --log_config.global_log_options level,nocolor,time
-
-
-
- Terminate_eNB
- Terminate eNB
-
-
-
- Initialize_UE
- Initialize UE
-
-
-
- Terminate_UE
- Terminate UE
-
-
-
- Attach_UE
- Attach UE
-
-
-
- Detach_UE
- Detach UE
-
-
-
- Ping
- ping (5MHz - 20 sec)
- -c 20
- 5
-
-
-
- Iperf
- iperf (5MHz - DL/15Mbps/UDP)(30 sec)(balanced profile)
- -u -b 15M -t 30 -i 1
- 50
- balanced
-
-
-
- Iperf
- iperf (5MHz - DL/15Mbps/UDP)(30 sec)(single-ue profile)
- -u -b 15M -t 30 -i 1
- 50
- single-ue
-
-
-
- Iperf
- iperf (5MHz - DL/15Mbps/UDP)(30 sec)(unbalanced profile)
- -u -b 15M -t 30 -i 1
- 50
- unbalanced
-
-
-
- Iperf
- iperf (5MHz - DL/TCP)(30 sec)(single-ue profile)
- -t 30 -i 1 -fm
- 50
- single-ue
-
-
-
- Iperf
- iperf (5MHz - DL/TCP)(30 sec)(balanced profile)
- -t 30 -i 1 -fm
- 50
- balanced
-
-
-
- Iperf
- iperf (5MHz - UL/9Mbps/UDP)(30 sec)(balanced profile)
- -u -b 9M -t 30 -i 1 -R
- 50
- balanced
-
-
-
- Iperf
- iperf (5MHz - UL/9Mbps/UDP)(30 sec)(single-ue profile)
- -u -b 9M -t 30 -i 1 -R
- 50
- single-ue
-
-
-
- Iperf
- iperf (5MHz - UL/TCP)(30 sec)(single-ue profile)
- -t 30 -i 1 -fm -R
- 50
- single-ue
-
-
-
- Iperf
- iperf (5MHz - UL/TCP)(30 sec)(balanced profile)
- -t 30 -i 1 -fm -R
- 50
- balanced
-
-
-
diff --git a/ci-scripts/xml_files/fr1_sa_quectel.xml b/ci-scripts/xml_files/fr1_sa_quectel.xml
index 9f2661f5c6..cc44bdf051 100644
--- a/ci-scripts/xml_files/fr1_sa_quectel.xml
+++ b/ci-scripts/xml_files/fr1_sa_quectel.xml
@@ -143,6 +143,8 @@
0
0
nr
+ 5,50,100,100
+ 5,50,100,100
diff --git a/ci-scripts/xml_files/fr1_sa_quectel_162prb.xml b/ci-scripts/xml_files/fr1_sa_quectel_162prb.xml
index f43347d7b6..776486013d 100644
--- a/ci-scripts/xml_files/fr1_sa_quectel_162prb.xml
+++ b/ci-scripts/xml_files/fr1_sa_quectel_162prb.xml
@@ -133,6 +133,8 @@
0
0
nr
+ 5,50,100,100
+ 5,50,100,100
diff --git a/ci-scripts/xml_files/fr1_sa_quectel_stages.xml b/ci-scripts/xml_files/fr1_sa_quectel_stages.xml
index f5a07d7589..20225b0a1a 100644
--- a/ci-scripts/xml_files/fr1_sa_quectel_stages.xml
+++ b/ci-scripts/xml_files/fr1_sa_quectel_stages.xml
@@ -169,6 +169,8 @@
0
0
nr
+ 5,50,100,100
+ 5,50,100,100
diff --git a/ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz/README.md b/ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz/README.md
index d146c8abec..d134ffc824 100644
--- a/ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz/README.md
+++ b/ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz/README.md
@@ -146,7 +146,7 @@ rfsim4g-trf-gen /bin/bash -c ip route add ... Up (healthy)
## 2.3. Deploy OAI eNB in RF simulator mode ##
```bash
-$ docker-compose up -d enb
+$ docker-compose up -d oai_enb0
Creating rfsim4g-oai-enb ... done
```
diff --git a/ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz/docker-compose.yml b/ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz/docker-compose.yml
index a260857a34..b44e09e454 100644
--- a/ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz/docker-compose.yml
+++ b/ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz/docker-compose.yml
@@ -179,7 +179,7 @@ services:
timeout: 5s
retries: 5
- enb:
+ oai_enb0:
image: oai-enb:develop
privileged: true
container_name: rfsim4g-oai-enb
diff --git a/ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz_noS1/docker-compose.yml b/ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz_noS1/docker-compose.yml
index 6e3916b8ca..e0a059222f 100644
--- a/ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz_noS1/docker-compose.yml
+++ b/ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz_noS1/docker-compose.yml
@@ -1,7 +1,7 @@
version: '3.8'
services:
- enb:
+ oai_enb0:
image: oai-enb:develop
privileged: true
container_name: rfsim4g-oai-enb
diff --git a/ci-scripts/yaml_files/4g_rfsimulator_fdd_10MHz/docker-compose.yml b/ci-scripts/yaml_files/4g_rfsimulator_fdd_10MHz/docker-compose.yml
index 3f63953b0e..730cedd720 100644
--- a/ci-scripts/yaml_files/4g_rfsimulator_fdd_10MHz/docker-compose.yml
+++ b/ci-scripts/yaml_files/4g_rfsimulator_fdd_10MHz/docker-compose.yml
@@ -179,7 +179,7 @@ services:
timeout: 5s
retries: 5
- enb:
+ oai_enb0:
image: oai-enb:develop
privileged: true
container_name: rfsim4g-oai-enb
diff --git a/ci-scripts/yaml_files/4g_rfsimulator_fdd_20MHz/docker-compose.yml b/ci-scripts/yaml_files/4g_rfsimulator_fdd_20MHz/docker-compose.yml
index 1165400273..c1ea936f58 100644
--- a/ci-scripts/yaml_files/4g_rfsimulator_fdd_20MHz/docker-compose.yml
+++ b/ci-scripts/yaml_files/4g_rfsimulator_fdd_20MHz/docker-compose.yml
@@ -179,7 +179,7 @@ services:
timeout: 5s
retries: 5
- enb:
+ oai_enb0:
image: oai-enb:develop
privileged: true
container_name: rfsim4g-oai-enb
diff --git a/ci-scripts/yaml_files/4g_rfsimulator_tdd_05MHz/docker-compose.yml b/ci-scripts/yaml_files/4g_rfsimulator_tdd_05MHz/docker-compose.yml
index 86f6c80b59..f497709221 100644
--- a/ci-scripts/yaml_files/4g_rfsimulator_tdd_05MHz/docker-compose.yml
+++ b/ci-scripts/yaml_files/4g_rfsimulator_tdd_05MHz/docker-compose.yml
@@ -179,7 +179,7 @@ services:
timeout: 5s
retries: 5
- enb:
+ oai_enb0:
image: oai-enb:develop
privileged: true
container_name: rfsim4g-oai-enb
diff --git a/ci-scripts/yaml_files/lte_b200_fdd_05Mhz_tm1/docker-compose.yml b/ci-scripts/yaml_files/lte_b200_fdd_05Mhz_tm1/docker-compose.yml
new file mode 100644
index 0000000000..e7309df77c
--- /dev/null
+++ b/ci-scripts/yaml_files/lte_b200_fdd_05Mhz_tm1/docker-compose.yml
@@ -0,0 +1,43 @@
+version: '3.8'
+
+services:
+ enb_mono_fdd:
+ image: oai-enb:latest
+ privileged: true
+ container_name: lte-b200-enb-fdd-05Mhz-tm1
+ environment:
+ USE_FDD_MONO: 'yes'
+ USE_B2XX: 'yes'
+ ENB_NAME: eNB-in-docker
+ MCC: '208'
+ MNC: '92'
+ MNC_LENGTH: 2
+ TAC: 1
+ UTRA_BAND_ID: 7
+ DL_FREQUENCY_IN_MHZ: 2680
+ UL_FREQUENCY_OFFSET_IN_MHZ: 120
+ NID_CELL: 0
+ NB_PRB: 25
+ ENABLE_MEASUREMENT_REPORTS: 'no'
+ ENABLE_X2: 'no'
+ MME_S1C_IP_ADDRESS: 172.21.18.48
+ ENB_S1C_IF_NAME: eth0
+ ENB_S1C_IP_ADDRESS: 172.21.18.46
+ ENB_S1U_IF_NAME: eth0
+ ENB_S1U_IP_ADDRESS: 172.21.18.46
+ ENB_X2_IP_ADDRESS: 172.21.18.46
+ RRC_INACTIVITY_THRESHOLD: 30
+ FLEXRAN_ENABLED: 'no'
+ FLEXRAN_INTERFACE_NAME: eth0
+ FLEXRAN_IPV4_ADDRESS: 172.21.18.48
+ THREAD_PARALLEL_CONFIG: PARALLEL_SINGLE_THREAD
+ USE_ADDITIONAL_OPTIONS: --log_config.global_log_options level,nocolor,time,line_num,function
+ volumes:
+ - /dev:/dev
+ network_mode: "host"
+ healthcheck:
+ # pgrep does NOT work
+ test: /bin/bash -c "ps aux | grep -v grep | grep -c softmodem"
+ interval: 10s
+ timeout: 5s
+ retries: 5
diff --git a/cmake_targets/build_oai b/cmake_targets/build_oai
index ea74b87bb0..7bff788fd8 100755
--- a/cmake_targets/build_oai
+++ b/cmake_targets/build_oai
@@ -53,8 +53,6 @@ BUILD_COVERITY_SCAN=0
DISABLE_HARDWARE_DEPENDENCY="False"
CMAKE_BUILD_TYPE="RelWithDebInfo"
CMAKE_CMD="$CMAKE"
-AVX512="True"
-AVX2="True"
BUILD_ECLIPSE=0
NR="False"
OPTIONAL_LIBRARIES="telnetsrv enbscope uescope nrscope"
@@ -159,7 +157,7 @@ Options:
--noavx512
Disable AVX512 intrinsics whatever processor capability is
--noavx2
- Disable AVX2 intrinsics if processor supports it or use SIMDE emulation
+ Disable AVX2 intrinsics whatever processor capability is
-k | --skip-shared-libraries
Skip build for shared libraries to reduce compilation time when building frequently for debugging purposes
--ninja
@@ -394,11 +392,11 @@ function main() {
fi
shift 2;;
--noavx512)
- AVX512="False"
+ CMAKE_CMD="$CMAKE_CMD -DAVX512=OFF"
echo_info "Disabling AVX512 instructions"
shift 1;;
--noavx2)
- AVX2="False"
+ CMAKE_CMD="$CMAKE_CMD -DAVX2=OFF"
echo_info "Disabling AVX2 instructions"
shift 1;;
-k | --skip-shared-libraries)
@@ -559,23 +557,9 @@ function main() {
if [[ ${#CMAKE_C_FLAGS[@]} > 0 ]]; then CMAKE_CMD="$CMAKE_CMD -DCMAKE_C_FLAGS=\"${CMAKE_C_FLAGS[*]}\""; fi
if [[ ${#CMAKE_CXX_FLAGS[@]} > 0 ]]; then CMAKE_CMD="$CMAKE_CMD -DCMAKE_CXX_FLAGS=\"${CMAKE_CXX_FLAGS[*]}\""; fi
- # if --noavx512 is not specified the AVX512 equals "True" by default
- # override AVX512 to "False" if processor does not have avx512
- # this avoids having to specify --noavx512 systematically
- if [ -f /proc/cpuinfo ]; then
- if grep -q avx512 /proc/cpuinfo
- then
- echo_info "Processor has avx512 intrinsics"
- else
- echo_info "Processor does not have avx512 intrinsics"
- echo_info "Forcing AVX512 to False"
- AVX512="False"
- fi
- fi
-
# for historical reasons we build in a subdirectory cmake_targets/XYZ/build,
# e.g., cmake_targets/ran_build/build, hence the ../../..
- CMAKE_CMD="$CMAKE_CMD -DAVX512=\"${AVX512[*]}\" -DAVX2=\"${AVX2[*]}\" ../../.."
+ CMAKE_CMD="$CMAKE_CMD ../../.."
echo_info "running $CMAKE_CMD"
eval $CMAKE_CMD
diff --git a/cmake_targets/macros.cmake b/cmake_targets/macros.cmake
index 3de95580ef..6f66d7d958 100644
--- a/cmake_targets/macros.cmake
+++ b/cmake_targets/macros.cmake
@@ -96,3 +96,11 @@ macro(compile_asn1 asn1Source asn1cCmd ResultFlag)
DEPENDS ${asn1Source}
)
endmacro(compile_asn1)
+
+macro(eval_boolean VARIABLE)
+ if(${ARGN})
+ set(${VARIABLE} ON)
+ else()
+ set(${VARIABLE} OFF)
+ endif()
+endmacro()
diff --git a/cmake_targets/tools/build_helper b/cmake_targets/tools/build_helper
index 396c8dd4aa..423389aadc 100755
--- a/cmake_targets/tools/build_helper
+++ b/cmake_targets/tools/build_helper
@@ -33,7 +33,7 @@ OS_RELEASE=$(grep "^VERSION_ID=" /etc/os-release | sed "s/VERSION_ID=//" | sed "
case "$OS_DISTRO" in
fedora) OS_BASEDISTRO="fedora"; INSTALLER="dnf"; CMAKE="cmake" ;;
rhel) OS_BASEDISTRO="fedora"; INSTALLER="yum --skip-broken"; CMAKE="cmake3" ;;
- centos) OS_BASEDISTRO="fedora"; INSTALLER="yum --skip-broken"; CMAKE="cmake3" ;;
+ centos) OS_BASEDISTRO="centos"; INSTALLER="yum --skip-broken"; CMAKE="cmake3" ;;
debian) OS_BASEDISTRO="debian"; INSTALLER="apt-get"; CMAKE="cmake" ;;
ubuntu) OS_BASEDISTRO="debian"; INSTALLER="apt-get"; CMAKE="cmake" ;;
esac
diff --git a/targets/COMMON/openairinterface5g_limits.h b/common/openairinterface5g_limits.h
similarity index 100%
rename from targets/COMMON/openairinterface5g_limits.h
rename to common/openairinterface5g_limits.h
diff --git a/common/utils/DOC/loader/devusage.md b/common/utils/DOC/loader/devusage.md
index 47c4806eac..a71c838ce5 100644
--- a/common/utils/DOC/loader/devusage.md
+++ b/common/utils/DOC/loader/devusage.md
@@ -10,7 +10,7 @@ As a developer you may need to look at these sections:
Loader usage examples can be found in oai sources:
-* device and transport initialization code: [function `load_lib` in *sdr/COMMON/__common_lib.c__* ](https://gitlab.eurecom.fr/oai/openairinterface5g/blob/develop/sdr/COMMON/common_lib.c#L91)
-* turbo encoder and decoder initialization: [function `load_codinglib`in *openair1/PHY/CODING/__coding_load.c__*](https://gitlab.eurecom.fr/oai/openairinterface5g/blob/develop/openair1/PHY/CODING/coding_load.c#L113)
+* device and transport initialization code: [function `load_lib` in *radio/COMMON/__common_lib.c__* ](./../../../radio/COMMON/common_lib.c#L91)
+* turbo encoder and decoder initialization: [function `load_codinglib`in *openair1/PHY/CODING/__coding_load.c__*](./../../../develop/openair1/PHY/CODING/coding_load.c#L113)
[loader home page](../loader.md)
diff --git a/common/utils/LOG/DOC/rtusage.md b/common/utils/LOG/DOC/rtusage.md
index 2f6fa5e6ea..d601da2e7b 100644
--- a/common/utils/LOG/DOC/rtusage.md
+++ b/common/utils/LOG/DOC/rtusage.md
@@ -7,9 +7,20 @@ All logging facility parameters are defined in the log_config section. Some para
| name | type | default | description |
|:---:|:---:|:---:|:----|
-| `global_log_level` | `pre-defined string of char` | `info` | Allows printing of messages up to the specified level. Available levels, from lower to higher are `error`,`warn`,`analysis`,`info`,`debug`,`trace` |
-| `global_log_online` | `boolean` | 1 (=true) | If false, all console messages are discarded, whatever their level |
-| `global_log_options` | `list of pre-defined string of char` | | 5 options can be specified to trigger the information added in the header of the message: `nocolor`, disable color usage in log messages, usefull when redirecting logs to a file, where escape sequences used for color selection can be annoying, `level`, add a one letter level id in the message header (T,D,I,A,W,E for trace, debug, info, analysis, warning, error),`thread`, add the thread name in the message header, `thread_id`, adds the thread ID in the message header, `function`, adds the function name, `line_num`, adds the line number, `time` adds the time since process starts|
+| `global_log_level` | `string` | `info` | Allows printing of messages up to the specified level. Available levels, from lower to higher are `error`, `warn`, `analysis`, `info`, `debug`, `trace` |
+| `global_log_online` | `bool` | 1 (=`true`) | If `false`, all console messages are discarded, whatever their level |
+| `global_log_options` | `string` | _empty_ | _see following list_ |
+
+The following options can be specified to trigger the information added in the header of the message (`global_log_options`):
+
+- `nocolor`: disable color usage in log messages, useful when redirecting logs to a file, where escape sequences used for color selection can be annoying
+- `level`: add a one letter level ID in the message header (`T`,`D`,`I`,`A`,`W`,`E` for trace, debug, info, analysis, warning, error)
+- `thread`: add the thread name
+- `thread_id`: add the thread ID
+- `function`: add the function name
+- `line_num`: adds the (source code) line number
+- `time`: add the time since process started
+- `wall_clock`: add the system-wide clock time that measures real (i.e., wall-clock) time (`time` and `wall_clock` are mutually exclusive)
### Component specific parameters
| name | type | default | description |
diff --git a/common/utils/LOG/log.c b/common/utils/LOG/log.c
index 043631d706..b5c2f20767 100644
--- a/common/utils/LOG/log.c
+++ b/common/utils/LOG/log.c
@@ -84,10 +84,10 @@ mapping log_options[] = {
{"function", FLAG_FUNCT},
{"time", FLAG_TIME},
{"thread_id", FLAG_THREAD_ID},
+ {"wall_clock", FLAG_REAL_TIME},
{NULL,-1}
};
-
mapping log_maskmap[] = LOG_MASKMAP_INIT;
char *log_level_highlight_start[] = {LOG_RED, LOG_ORANGE, LOG_GREEN, "", LOG_BLUE, LOG_CYBL}; /*!< \brief Optional start-format strings for highlighting */
@@ -306,7 +306,7 @@ void log_getconfig(log_t *g_log)
for (int i=MIN_LOG_COMPONENTS; i < MAX_LOG_PREDEF_COMPONENTS; i++) {
if(g_log->log_component[i].name == NULL) {
- g_log->log_component[i].name = malloc(16);
+ g_log->log_component[i].name = malloc(17);
sprintf((char *)g_log->log_component[i].name,"comp%i?",i);
logparams_logfile[i].paramflags = PARAMFLAG_DONOTREAD;
logparams_level[i].paramflags = PARAMFLAG_DONOTREAD;
@@ -512,6 +512,9 @@ int logInit (void)
memset(&(g_log->log_component[i]),0,sizeof(log_component_t));
}
+ AssertFatal(!((g_log->flag & FLAG_TIME) && (g_log->flag & FLAG_REAL_TIME)),
+ "Invalid log options: time and wall_clock both set but are mutually exclusive\n");
+
g_log->flag = g_log->flag | FLAG_INITIALIZED;
printf("log init done\n");
return 0;
@@ -554,10 +557,12 @@ static inline int log_header(log_component_t *c,
else
l[0] = 0;
+ // output time information
char timeString[32];
- if ( flag & FLAG_TIME ) {
+ if ((flag & FLAG_TIME) || (flag & FLAG_REAL_TIME)) {
struct timespec t;
- if (clock_gettime(CLOCK_MONOTONIC, &t) == -1)
+ const clockid_t clock = flag & FLAG_TIME ? CLOCK_MONOTONIC : CLOCK_REALTIME;
+ if (clock_gettime(clock, &t) == -1)
abort();
snprintf(timeString, sizeof(timeString), "%lu.%06lu ",
t.tv_sec,
diff --git a/common/utils/LOG/log.h b/common/utils/LOG/log.h
index be5d6ac7fe..06cc9a83ba 100644
--- a/common/utils/LOG/log.h
+++ b/common/utils/LOG/log.h
@@ -129,6 +129,7 @@ extern "C" {
#define FLAG_FILE_LINE 0x0040
#define FLAG_TIME 0x0100
#define FLAG_THREAD_ID 0x0200
+#define FLAG_REAL_TIME 0x0400
#define FLAG_INITIALIZED 0x8000
#define SET_LOG_OPTION(O) g_log->flag = (g_log->flag | O)
diff --git a/doc/BUILD.md b/doc/BUILD.md
index 5fcfbf18d8..fd2af4703b 100644
--- a/doc/BUILD.md
+++ b/doc/BUILD.md
@@ -76,7 +76,7 @@ cd cmake_targets/
```
- The `-I` option is to install pre-requisites, you only need it the first time you build the softmodem or when some oai dependencies have changed.
-- The `-w` option is to select the radio head support you want to include in your build. Radio head support is provided via a shared library, which is called the "oai device" The build script creates a soft link from `liboai_device.so` to the true device which will be used at run-time (here the USRP one,`liboai_usrpdevif.so` . USRP is the only hardware tested today in the Continuous Integration process. The RF simulator[RF simulator](../sdr/rfsimulator/README.md) is implemented as a specific device replacing RF hardware, it can be specifically built using `-w SIMU` option, but is also built during any softmodem build.
+- The `-w` option is to select the radio head support you want to include in your build. Radio head support is provided via a shared library, which is called the "oai device" The build script creates a soft link from `liboai_device.so` to the true device which will be used at run-time (here the USRP one,`liboai_usrpdevif.so` . USRP is the only hardware tested today in the Continuous Integration process. The RF simulator[RF simulator](../radio/rfsimulator/README.md) is implemented as a specific device replacing RF hardware, it can be specifically built using `-w SIMU` option, but is also built during any softmodem build.
- `--eNB` is to build the `lte-softmodem` executable and all required shared libraries
- `--gNB` is to build the `nr-softmodem` executable and all required shared libraries
- `--UE` is to build the `lte-uesoftmodem` executable and all required shared libraries
diff --git a/doc/RUNMODEM.md b/doc/RUNMODEM.md
index 7e899455ba..10b8998b54 100644
--- a/doc/RUNMODEM.md
+++ b/doc/RUNMODEM.md
@@ -23,7 +23,7 @@ It is planned to enhance this simulator with the following functionalities:
- Support for multiple UE connections,each UE being a `lte-uesoftmodem` or `nr_uesoftmodem` instance.
- Support for multiple eNodeB's or gNodeB's for hand-over tests
- This is an easy use-case to setup and test, as no specific hardware is required. The [rfsimulator page](../sdr/rfsimulator/README.md ) contains the detailed documentation.
+ This is an easy use-case to setup and test, as no specific hardware is required. The [rfsimulator page](../radio/rfsimulator/README.md ) contains the detailed documentation.
# L2 nFAPI Simulator
@@ -102,7 +102,7 @@ Some other useful paramters of the UE are
Instead of randomly generated payload, in the phy-test mode we can also inject/receive user-plane traffic over a TUN interface. This is the so-called noS1 mode.
-This setup is described in the [rfsimulator page](../sdr/rfsimulator/README.md#5g-case). In theory this should also work with the real hardware target although this has yet to be tested.
+This setup is described in the [rfsimulator page](../radio/rfsimulator/README.md#5g-case). In theory this should also work with the real hardware target although this has yet to be tested.
## do-ra setup with OAI
diff --git a/docker/scripts/enb_entrypoint.sh b/docker/scripts/enb_entrypoint.sh
index 2d49a0ed20..e58f7d6269 100755
--- a/docker/scripts/enb_entrypoint.sh
+++ b/docker/scripts/enb_entrypoint.sh
@@ -1,6 +1,6 @@
#!/bin/bash
-set -euo pipefail
+set -uo pipefail
PREFIX=/opt/oai-enb
RRC_INACTIVITY_THRESHOLD=${RRC_INACTIVITY_THRESHOLD:-0}
diff --git a/docker/scripts/gnb_entrypoint.sh b/docker/scripts/gnb_entrypoint.sh
index f1d6bd8333..c3c4ef0b2d 100755
--- a/docker/scripts/gnb_entrypoint.sh
+++ b/docker/scripts/gnb_entrypoint.sh
@@ -1,6 +1,6 @@
#!/bin/bash
-set -euo pipefail
+set -uo pipefail
PREFIX=/opt/oai-gnb
ENABLE_X2=${ENABLE_X2:-yes}
@@ -21,11 +21,9 @@ if [[ -v USE_VOLUMED_CONF ]]; then cp $PREFIX/etc/mounted.conf $PREFIX/etc/gnb.c
# Defualt Parameters
GNB_ID=${GNB_ID:-e00}
NSSAI_SD=${NSSAI_SD:-ffffff}
-USE_FQDN=${USE_FQDN:-false}
-AMF_FQDN=${AMF_FQDN:-oai-amf-svc}
-
-# Resolve AMF FQDN
-if ($USE_FQDN); then AMF_IP_ADDRESS=(`getent hosts $AMF_FQDN | awk '{print $1}'`); fi
+# AMF_IP_ADDRESS can be amf ip address of amf fqdn
+if [[ -v AMF_IP_ADDRESS ]] && [[ "${AMF_IP_ADDRESS}" =~ [a-zA-Z] ]] && [[ -z `getent hosts $AMF_IP_ADDRESS | awk '{print $1}'` ]]; then echo "not able to resolve AMF FQDN" && exit 1 ; fi
+[[ -v AMF_IP_ADDRESS ]] && [[ "${AMF_IP_ADDRESS}" =~ [a-zA-Z] ]] && AMF_IP_ADDRESS=$(getent hosts $AMF_IP_ADDRESS | awk '{print $1}')
# Only this template will be manipulated
CONFIG_FILES=`ls $PREFIX/etc/gnb.conf || true`
diff --git a/docker/scripts/lte_ru_entrypoint.sh b/docker/scripts/lte_ru_entrypoint.sh
index 746efb30b3..19cf482831 100755
--- a/docker/scripts/lte_ru_entrypoint.sh
+++ b/docker/scripts/lte_ru_entrypoint.sh
@@ -1,6 +1,6 @@
#!/bin/bash
-set -euo pipefail
+set -uo pipefail
PREFIX=/opt/oai-lte-ru
diff --git a/docker/scripts/lte_ue_entrypoint.sh b/docker/scripts/lte_ue_entrypoint.sh
index 2bdcb873c9..55ec2ac2e3 100755
--- a/docker/scripts/lte_ue_entrypoint.sh
+++ b/docker/scripts/lte_ue_entrypoint.sh
@@ -1,6 +1,6 @@
#!/bin/bash
-set -euo pipefail
+set -uo pipefail
PREFIX=/opt/oai-lte-ue
diff --git a/docker/scripts/nr_ue_entrypoint.sh b/docker/scripts/nr_ue_entrypoint.sh
index 616d71b555..4a5899f8b6 100755
--- a/docker/scripts/nr_ue_entrypoint.sh
+++ b/docker/scripts/nr_ue_entrypoint.sh
@@ -1,6 +1,6 @@
#!/bin/bash
-set -euo pipefail
+set -uo pipefail
PREFIX=/opt/oai-nr-ue
@@ -11,6 +11,10 @@ if [[ -v USE_VOLUMED_CONF ]]; then cp $PREFIX/etc/mounted.conf $PREFIX/etc/nr-ue
# if none, pick the default
if [ ! -f $PREFIX/etc/nr-ue.conf ]; then cp $PREFIX/etc/nr-ue-sim.conf $PREFIX/etc/nr-ue.conf; fi
+# RFSIMULATOR can have ip-address or service name
+if [[ -v RFSIMULATOR ]] && [[ "${RFSIMULATOR}" =~ [a-zA-Z] ]] && [[ -z `getent hosts $RFSIMULATOR | awk '{print $1}'` ]]; then echo "not able to resolve RFSIMULATOR FQDN" && exit 1 ; fi
+[[ -v RFSIMULATOR ]] && [[ "${RFSIMULATOR}" =~ [a-zA-Z] ]] && RFSIMULATOR=$(getent hosts $RFSIMULATOR | awk '{print $1}')
+
# Only this template will be manipulated
CONFIG_FILES=`ls $PREFIX/etc/nr-ue.conf || true`
diff --git a/targets/COMMON/create_nr_tasks.h b/executables/create_nr_tasks.h
similarity index 100%
rename from targets/COMMON/create_nr_tasks.h
rename to executables/create_nr_tasks.h
diff --git a/targets/COMMON/create_tasks.c b/executables/create_tasks.c
similarity index 100%
rename from targets/COMMON/create_tasks.c
rename to executables/create_tasks.c
diff --git a/targets/COMMON/create_tasks.h b/executables/create_tasks.h
similarity index 100%
rename from targets/COMMON/create_tasks.h
rename to executables/create_tasks.h
diff --git a/targets/COMMON/create_tasks_mbms.c b/executables/create_tasks_mbms.c
similarity index 100%
rename from targets/COMMON/create_tasks_mbms.c
rename to executables/create_tasks_mbms.c
diff --git a/targets/COMMON/create_tasks_ue.c b/executables/create_tasks_ue.c
similarity index 100%
rename from targets/COMMON/create_tasks_ue.c
rename to executables/create_tasks_ue.c
diff --git a/executables/main_ru.c b/executables/main_ru.c
index 9db2e95576..891b98b090 100644
--- a/executables/main_ru.c
+++ b/executables/main_ru.c
@@ -45,8 +45,8 @@
#include "common/utils/load_module_shlib.h"
-#include "sdr/COMMON/common_lib.h"
-#include "sdr/ETHERNET/USERSPACE/LIB/if_defs.h"
+#include "radio/COMMON/common_lib.h"
+#include "radio/ETHERNET/USERSPACE/LIB/if_defs.h"
#include "PHY/phy_vars.h"
diff --git a/executables/nr-gnb.c b/executables/nr-gnb.c
index e5f24c98d8..63209862c4 100644
--- a/executables/nr-gnb.c
+++ b/executables/nr-gnb.c
@@ -55,7 +55,7 @@
#undef MALLOC //there are two conflicting definitions, so we better make sure we don't use it at all
//#undef FRAME_LENGTH_COMPLEX_SAMPLES //there are two conflicting definitions, so we better make sure we don't use it at all
-#include "sdr/COMMON/common_lib.h"
+#include "radio/COMMON/common_lib.h"
//#undef FRAME_LENGTH_COMPLEX_SAMPLES //there are two conflicting definitions, so we better make sure we don't use it at all
diff --git a/executables/nr-ru.c b/executables/nr-ru.c
index cbc351511d..1dd8ba7d40 100644
--- a/executables/nr-ru.c
+++ b/executables/nr-ru.c
@@ -37,8 +37,8 @@
#include "common/ran_context.h"
#include "rt_profiling.h"
-#include "sdr/COMMON/common_lib.h"
-#include "sdr/ETHERNET/USERSPACE/LIB/ethernet_lib.h"
+#include "radio/COMMON/common_lib.h"
+#include "radio/ETHERNET/USERSPACE/LIB/ethernet_lib.h"
#include "PHY/LTE_TRANSPORT/if4_tools.h"
diff --git a/executables/nr-softmodem-common.h b/executables/nr-softmodem-common.h
index 6d1c384c5d..fe56f14ee4 100644
--- a/executables/nr-softmodem-common.h
+++ b/executables/nr-softmodem-common.h
@@ -24,7 +24,7 @@
#include
#include
-#include "sdr/COMMON/common_lib.h"
+#include "radio/COMMON/common_lib.h"
#undef MALLOC
#include "assertions.h"
#include "PHY/types.h"
diff --git a/executables/nr-softmodem.c b/executables/nr-softmodem.c
index e3998975e8..4e8176e9a4 100644
--- a/executables/nr-softmodem.c
+++ b/executables/nr-softmodem.c
@@ -39,8 +39,8 @@
#undef MALLOC //there are two conflicting definitions, so we better make sure we don't use it at all
//#undef FRAME_LENGTH_COMPLEX_SAMPLES //there are two conflicting definitions, so we better make sure we don't use it at all
-#include "sdr/COMMON/common_lib.h"
-#include "sdr/ETHERNET/USERSPACE/LIB/if_defs.h"
+#include "radio/COMMON/common_lib.h"
+#include "radio/ETHERNET/USERSPACE/LIB/if_defs.h"
//#undef FRAME_LENGTH_COMPLEX_SAMPLES //there are two conflicting definitions, so we better make sure we don't use it at all
diff --git a/executables/nr-ue.c b/executables/nr-ue.c
index 030a8c3c48..8b022adc62 100644
--- a/executables/nr-ue.c
+++ b/executables/nr-ue.c
@@ -264,10 +264,10 @@ static void process_queued_nr_nfapi_msgs(NR_UE_MAC_INST_t *mac, int sfn_slot)
send_nsa_standalone_msg(&UL_INFO, rach_ind->header.message_id);
for (int i = 0; i < rach_ind->number_of_pdus; i++)
{
- free(rach_ind->pdu_list[i].preamble_list);
+ free_and_zero(rach_ind->pdu_list[i].preamble_list);
}
- free(rach_ind->pdu_list);
- free(rach_ind);
+ free_and_zero(rach_ind->pdu_list);
+ free_and_zero(rach_ind);
nr_Msg1_transmitted(0, 0, NFAPI_SFNSLOT2SFN(sfn_slot), 0);
}
if (dl_tti_request)
@@ -280,8 +280,7 @@ static void process_queued_nr_nfapi_msgs(NR_UE_MAC_INST_t *mac, int sfn_slot)
NFAPI_SFNSLOT2SFN(dl_tti_sfn_slot), NFAPI_SFNSLOT2SLOT(dl_tti_sfn_slot));
if (get_softmodem_params()->nsa)
save_nr_measurement_info(dl_tti_request);
- free(dl_tti_request);
- dl_tti_request = NULL;
+ free_and_zero(dl_tti_request);
}
else if (dl_tti_request->dl_tti_request_body.nPDUs > 0 && tx_data_request->Number_of_PDUs > 0)
{
@@ -437,6 +436,12 @@ static void *NRUE_phy_stub_standalone_pnf_task(void *arg)
mac->dl_info.slot = slot;
mac->dl_info.dci_ind = NULL;
mac->dl_info.rx_ind = NULL;
+ if (ch_info) {
+ mac->nr_ue_emul_l1.pmi = ch_info->csi[0].pmi;
+ mac->nr_ue_emul_l1.ri = ch_info->csi[0].ri;
+ mac->nr_ue_emul_l1.cqi = ch_info->csi[0].cqi;
+ free_and_zero(ch_info);
+ }
if (is_nr_DL_slot(get_softmodem_params()->nsa ?
mac->scc->tdd_UL_DL_ConfigurationCommon :
diff --git a/executables/nr-uesoftmodem.c b/executables/nr-uesoftmodem.c
index a3a3fac12b..99c9b956e2 100644
--- a/executables/nr-uesoftmodem.c
+++ b/executables/nr-uesoftmodem.c
@@ -35,8 +35,8 @@
//#undef FRAME_LENGTH_COMPLEX_SAMPLES //there are two conflicting definitions, so we better make sure we don't use it at all
#include "common/utils/nr/nr_common.h"
-#include "sdr/COMMON/common_lib.h"
-#include "sdr/ETHERNET/USERSPACE/LIB/if_defs.h"
+#include "radio/COMMON/common_lib.h"
+#include "radio/ETHERNET/USERSPACE/LIB/if_defs.h"
//#undef FRAME_LENGTH_COMPLEX_SAMPLES //there are two conflicting definitions, so we better make sure we don't use it at all
#include "openair1/PHY/MODULATION/nr_modulation.h"
@@ -85,6 +85,7 @@ unsigned short config_frames[4] = {2,9,11,13};
#include "nr_nas_msg_sim.h"
#include
+#include "openair2/GNB_APP/gnb_paramdef.h"
extern const char *duplex_mode[];
THREAD_STRUCT thread_struct;
@@ -161,7 +162,7 @@ uint8_t abstraction_flag=0;
nr_bler_struct nr_bler_data[NR_NUM_MCS];
-static void init_bler_table(void);
+static void init_bler_table(char*);
/*---------------------BMC: timespec helpers -----------------------------*/
@@ -391,6 +392,17 @@ void *rrc_enb_process_msg(void *notUsed) {
return NULL;
}
+static void get_channel_model_mode() {
+ paramdef_t GNBParams[] = GNBPARAMS_DESC;
+ config_get(GNBParams, sizeof(GNBParams)/sizeof(paramdef_t), NULL);
+ int num_xp_antennas = *GNBParams[GNB_PDSCH_ANTENNAPORTS_XP_IDX].iptr;
+
+ if (num_xp_antennas == 2)
+ init_bler_table("NR_MIMO2x2_AWGN_RESULTS_DIR");
+ else
+ init_bler_table("NR_AWGN_RESULTS_DIR");
+}
+
int main( int argc, char **argv ) {
int set_exe_prio = 1;
@@ -468,8 +480,8 @@ int main( int argc, char **argv ) {
PHY_vars_UE_g = malloc(sizeof(PHY_VARS_NR_UE **));
PHY_vars_UE_g[0] = malloc(sizeof(PHY_VARS_NR_UE *)*MAX_NUM_CCs);
if (get_softmodem_params()->emulate_l1) {
- RCconfig_nr_ue_L1();
- init_bler_table();
+ RCconfig_nr_ue_macrlc();
+ get_channel_model_mode();
}
if (get_softmodem_params()->do_ra)
@@ -550,12 +562,12 @@ int main( int argc, char **argv ) {
}
// Read in each MCS file and build BLER-SINR-TB table
-static void init_bler_table(void) {
+static void init_bler_table(char *env_string) {
memset(nr_bler_data, 0, sizeof(nr_bler_data));
- const char *awgn_results_dir = getenv("AWGN_RESULTS_DIR");
+ const char *awgn_results_dir = getenv(env_string);
if (!awgn_results_dir) {
- LOG_W(NR_MAC, "No $AWGN_RESULTS_DIR\n");
+ LOG_W(NR_MAC, "No %s\n", env_string);
return;
}
@@ -577,7 +589,7 @@ static void init_bler_table(void) {
continue;
}
- if (nlines > NUM_SINR) {
+ if (nlines > NR_NUM_SINR) {
LOG_E(NR_MAC, "BLER FILE ERROR - num lines greater than expected - file: %s\n", fName);
abort();
}
diff --git a/oaienv b/oaienv
index bb24469703..51afbd1bd7 100644
--- a/oaienv
+++ b/oaienv
@@ -1,7 +1,9 @@
export OPENAIR_HOME=$(pwd)
export OPENAIR_DIR=$(pwd)
-export AWGN_RESULTS_DIR=$OPENAIR_DIR/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_results
+export LTE_AWGN_RESULTS_DIR=$OPENAIR_DIR/openair1/SIMULATION/LTE_PHY/BLER_SIMULATIONS/AWGN/AWGN_results
+export NR_AWGN_RESULTS_DIR=$OPENAIR_DIR/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_results
+export NR_MIMO2x2_AWGN_RESULTS_DIR=$OPENAIR_DIR/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results
export OPENAIR1_DIR=$OPENAIR_HOME/openair1
export OPENAIR2_DIR=$OPENAIR_HOME/openair2
export OPENAIR3_DIR=$OPENAIR_HOME/openair3
diff --git a/openair1/PHY/INIT/nr_init.c b/openair1/PHY/INIT/nr_init.c
index 9aa909f278..f4329a354e 100644
--- a/openair1/PHY/INIT/nr_init.c
+++ b/openair1/PHY/INIT/nr_init.c
@@ -194,9 +194,9 @@ int init_codebook_gNB(PHY_VARS_gNB *gNB) {
}
}
- int llc;
- int mmc;
- double complex phase_sign;
+ int llc = 0;
+ int mmc = 0;
+ double complex phase_sign = 0;
//Table 5.2.2.2.1-6:
//Codebook for 2-layer CSI reporting using antenna ports 3000 to 2999+PCSI-RS
//Compute the code book size for generating 2 layers out of Tx antenna ports
diff --git a/openair1/PHY/INIT/nr_init_ue.c b/openair1/PHY/INIT/nr_init_ue.c
index 77502dfc12..08b83f9b8e 100644
--- a/openair1/PHY/INIT/nr_init_ue.c
+++ b/openair1/PHY/INIT/nr_init_ue.c
@@ -408,7 +408,7 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue, int nb_connected_gNB)
common_vars->rxdataF = (int32_t **)malloc16( fp->nb_antennas_rx*sizeof(int32_t *) );
for (i=0; inb_antennas_rx; i++) {
- common_vars->rxdata[i] = (int32_t *) malloc16_clear( (2*(fp->samples_per_frame)+2048)*sizeof(int32_t) );
+ common_vars->rxdata[i] = (int32_t *) malloc16_clear( (2*(fp->samples_per_frame)+fp->ofdm_symbol_size)*sizeof(int32_t) );
common_vars->rxdataF[i] = (int32_t *)malloc16_clear( sizeof(int32_t)*(fp->samples_per_slot_wCP) );
}
diff --git a/openair1/PHY/LTE_TRANSPORT/dci.c b/openair1/PHY/LTE_TRANSPORT/dci.c
index 99f37c1323..24f94ad78f 100644
--- a/openair1/PHY/LTE_TRANSPORT/dci.c
+++ b/openair1/PHY/LTE_TRANSPORT/dci.c
@@ -205,7 +205,7 @@ void pdcch_scrambling(LTE_DL_FRAME_PARMS *frame_parms,
uint32_t length) {
int i;
uint8_t reset;
- uint32_t x1, x2, s=0;
+ uint32_t x1 = 0, x2 = 0, s = 0;
//LOG_D(PHY, "%s(fp, subframe:%d, e, length:%d)\n", __FUNCTION__, subframe, length);
reset = 1;
// x1 is set in lte_gold_generic
diff --git a/openair1/PHY/LTE_TRANSPORT/edci.c b/openair1/PHY/LTE_TRANSPORT/edci.c
index 34cb705b00..f3a43584fb 100644
--- a/openair1/PHY/LTE_TRANSPORT/edci.c
+++ b/openair1/PHY/LTE_TRANSPORT/edci.c
@@ -56,7 +56,7 @@ void generate_edci_top(PHY_VARS_eNB *eNB, int frame, int subframe) {
void mpdcch_scrambling(LTE_DL_FRAME_PARMS *frame_parms, mDCI_ALLOC_t *mdci, uint16_t i, uint8_t *e, uint32_t length) {
int n;
uint8_t reset;
- uint32_t x1, x2, s = 0;
+ uint32_t x1 = 0, x2 = 0, s = 0;
uint8_t Nacc = 4;
uint16_t j0, j, idelta;
uint16_t i0 = mdci->i0;
@@ -266,7 +266,7 @@ void generate_mdci_top(PHY_VARS_eNB *eNB, int frame, int subframe, int16_t amp,
int i;
int gain_lin_QPSK;
uint16_t *mpdcchtab;
- uint32_t x1, x2, s = 0;
+ uint32_t x1 = 0, x2 = 0, s = 0;
uint8_t Nacc = 4;
uint16_t j0, j, idelta;
uint16_t i0;
diff --git a/openair1/PHY/LTE_TRANSPORT/group_hopping.c b/openair1/PHY/LTE_TRANSPORT/group_hopping.c
index 6fc1f0a3e4..1dc3b50b38 100644
--- a/openair1/PHY/LTE_TRANSPORT/group_hopping.c
+++ b/openair1/PHY/LTE_TRANSPORT/group_hopping.c
@@ -39,7 +39,7 @@ void generate_grouphop(LTE_DL_FRAME_PARMS *frame_parms)
uint8_t ns;
uint8_t reset=1;
- uint32_t x1, x2, s=0;
+ uint32_t x1 = 0, x2 = 0, s = 0;
// This is from Section 5.5.1.3
uint32_t fss_pusch = frame_parms->Nid_cell + frame_parms->pusch_config_common.ul_ReferenceSignalsPUSCH.groupAssignmentPUSCH;
@@ -113,7 +113,7 @@ void generate_nPRS(LTE_DL_FRAME_PARMS *frame_parms)
uint16_t n=0;
uint8_t reset=1;
- uint32_t x1, x2, s=0;
+ uint32_t x1 = 0, x2 = 0, s = 0;
// This is from Section 5.5.1.3
uint8_t Nsymb_UL = (frame_parms->Ncp_UL == NORMAL) ? 7 : 6;
uint16_t next = 0;
diff --git a/openair1/PHY/LTE_TRANSPORT/if4_tools.c b/openair1/PHY/LTE_TRANSPORT/if4_tools.c
index a161a3ba28..ca641e4bc0 100644
--- a/openair1/PHY/LTE_TRANSPORT/if4_tools.c
+++ b/openair1/PHY/LTE_TRANSPORT/if4_tools.c
@@ -38,7 +38,7 @@
//#include "SCHED/sched_eNB.h"
lte_subframe_t subframe_select(LTE_DL_FRAME_PARMS *frame_parms,uint8_t subframe);
-#include "sdr/ETHERNET/USERSPACE/LIB/ethernet_lib.h"
+#include "radio/ETHERNET/USERSPACE/LIB/ethernet_lib.h"
#include "common/utils/LOG/vcd_signal_dumper.h"
const uint8_t lin2alaw_if4p5[65536] = {213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 218, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 207, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 126, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 125, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 118, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 74, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 73, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 84, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85};
diff --git a/openair1/PHY/LTE_TRANSPORT/pbch.c b/openair1/PHY/LTE_TRANSPORT/pbch.c
index 8e9a968827..e589dca525 100644
--- a/openair1/PHY/LTE_TRANSPORT/pbch.c
+++ b/openair1/PHY/LTE_TRANSPORT/pbch.c
@@ -146,7 +146,7 @@ void pbch_scrambling_fembms(LTE_DL_FRAME_PARMS *frame_parms,
{
int i;
uint8_t reset;
- uint32_t x1, x2, s=0;
+ uint32_t x1 = 0, x2 = 0, s = 0;
reset = 1;
// x1 is set in lte_gold_generic
@@ -425,7 +425,7 @@ void pbch_scrambling(LTE_DL_FRAME_PARMS *frame_parms,
{
int i;
uint8_t reset;
- uint32_t x1, x2, s=0;
+ uint32_t x1 = 0, x2 = 0, s = 0;
reset = 1;
// x1 is set in lte_gold_generic
diff --git a/openair1/PHY/LTE_TRANSPORT/pucch_common.c b/openair1/PHY/LTE_TRANSPORT/pucch_common.c
index d7a500d5f7..0ce9606c46 100644
--- a/openair1/PHY/LTE_TRANSPORT/pucch_common.c
+++ b/openair1/PHY/LTE_TRANSPORT/pucch_common.c
@@ -41,7 +41,7 @@ void init_ncs_cell(LTE_DL_FRAME_PARMS *frame_parms,uint8_t ncs_cell[20][7])
{
uint8_t ns,l,reset=1,i,N_UL_symb;
- uint32_t x1,x2,j=0,s=0;
+ uint32_t x1 = 0, x2 = 0, j = 0, s = 0;
N_UL_symb = (frame_parms->Ncp==0) ? 7 : 6;
x2 = frame_parms->Nid_cell;
diff --git a/openair1/PHY/LTE_UE_TRANSPORT/dci_ue.c b/openair1/PHY/LTE_UE_TRANSPORT/dci_ue.c
index 44168dfa95..fd851b3abf 100644
--- a/openair1/PHY/LTE_UE_TRANSPORT/dci_ue.c
+++ b/openair1/PHY/LTE_UE_TRANSPORT/dci_ue.c
@@ -1505,7 +1505,7 @@ void pdcch_unscrambling(LTE_DL_FRAME_PARMS *frame_parms,
int i;
uint8_t reset;
- uint32_t x1, x2, s=0;
+ uint32_t x1 = 0, x2 = 0, s = 0;
reset = 1;
// x1 is set in first call to lte_gold_generic
diff --git a/openair1/PHY/LTE_UE_TRANSPORT/pbch_ue.c b/openair1/PHY/LTE_UE_TRANSPORT/pbch_ue.c
index 3abd1007d6..ad7bb6c8bf 100644
--- a/openair1/PHY/LTE_UE_TRANSPORT/pbch_ue.c
+++ b/openair1/PHY/LTE_UE_TRANSPORT/pbch_ue.c
@@ -360,7 +360,7 @@ void pbch_unscrambling(LTE_DL_FRAME_PARMS *frame_parms,
uint8_t frame_mod4) {
int i;
uint8_t reset;
- uint32_t x1, x2, s=0;
+ uint32_t x1 = 0, x2 = 0, s = 0;
reset = 1;
// x1 is set in first call to lte_gold_generic
x2 = frame_parms->Nid_cell; //this is c_init in 36.211 Sec 6.6.1
@@ -564,7 +564,7 @@ void pbch_unscrambling_fembms(LTE_DL_FRAME_PARMS *frame_parms,
uint8_t frame_mod4) {
int i;
uint8_t reset;
- uint32_t x1, x2, s=0;
+ uint32_t x1 = 0, x2 = 0, s = 0;
reset = 1;
// x1 is set in first call to lte_gold_generic
x2 = frame_parms->Nid_cell+(1<<9); //this is c_init for FeMBMS in 36.211 Sec 6.6.1
diff --git a/openair1/PHY/NR_REFSIG/nr_gold.c b/openair1/PHY/NR_REFSIG/nr_gold.c
index 134b44fc41..29fd60fb5a 100644
--- a/openair1/PHY/NR_REFSIG/nr_gold.c
+++ b/openair1/PHY/NR_REFSIG/nr_gold.c
@@ -23,7 +23,7 @@
void nr_init_pbch_dmrs(PHY_VARS_gNB* gNB)
{
- unsigned int x1, x2;
+ unsigned int x1 = 0, x2 = 0;
uint16_t Nid, i_ssb, i_ssb2;
unsigned char Lmax, l, n_hf, N_hf;
nfapi_nr_config_request_scf_t *cfg = &gNB->gNB_config;
@@ -55,8 +55,7 @@ void nr_init_pbch_dmrs(PHY_VARS_gNB* gNB)
void nr_init_pdcch_dmrs(PHY_VARS_gNB* gNB, uint32_t Nid)
{
-
- uint32_t x1, x2;
+ uint32_t x1 = 0, x2 = 0;
uint8_t reset;
NR_DL_FRAME_PARMS *fp = &gNB->frame_parms;
uint32_t ***pdcch_dmrs = gNB->nr_gold_pdcch_dmrs;
@@ -79,8 +78,7 @@ void nr_init_pdcch_dmrs(PHY_VARS_gNB* gNB, uint32_t Nid)
void nr_init_pdsch_dmrs(PHY_VARS_gNB* gNB, uint8_t nscid, uint32_t Nid) {
-
- uint32_t x1, x2;
+ uint32_t x1 = 0, x2 = 0;
uint8_t reset;
NR_DL_FRAME_PARMS *fp = &gNB->frame_parms;
uint32_t ****pdsch_dmrs = gNB->nr_gold_pdsch_dmrs;
@@ -104,7 +102,7 @@ void nr_init_pdsch_dmrs(PHY_VARS_gNB* gNB, uint8_t nscid, uint32_t Nid) {
void nr_gold_pusch(PHY_VARS_gNB* gNB, int nscid, uint32_t nid) {
unsigned char ns;
- unsigned int n,x1,x2;
+ unsigned int n = 0, x1 = 0, x2 = 0;
int reset;
NR_DL_FRAME_PARMS *fp = &gNB->frame_parms;
unsigned short l;
@@ -127,7 +125,7 @@ void nr_gold_pusch(PHY_VARS_gNB* gNB, int nscid, uint32_t nid) {
void nr_init_prs(PHY_VARS_gNB* gNB)
{
- unsigned int x1, x2;
+ unsigned int x1 = 0, x2 = 0;
uint16_t Nid;
NR_DL_FRAME_PARMS *fp = &gNB->frame_parms;
diff --git a/openair1/PHY/NR_REFSIG/nr_gold_ue.c b/openair1/PHY/NR_REFSIG/nr_gold_ue.c
index 4f3a7d76f0..ddd1b145c2 100644
--- a/openair1/PHY/NR_REFSIG/nr_gold_ue.c
+++ b/openair1/PHY/NR_REFSIG/nr_gold_ue.c
@@ -23,7 +23,7 @@
void nr_gold_pbch(PHY_VARS_NR_UE* ue)
{
- unsigned int n, x1, x2;
+ unsigned int n = 0, x1 = 0, x2 = 0;
unsigned int Nid, i_ssb, i_ssb2;
unsigned char Lmax, l, n_hf, N_hf;
uint8_t reset;
@@ -55,7 +55,7 @@ void nr_gold_pdcch(PHY_VARS_NR_UE* ue,
unsigned short nid)
{
unsigned char ns,l;
- unsigned int n,x1,x2,x2tmp0;
+ unsigned int n = 0, x1 = 0, x2 = 0, x2tmp0 = 0;
uint8_t reset;
int pdcch_dmrs_init_length = (((ue->frame_parms.N_RB_DL<<1)*3)>>5)+1;
@@ -78,8 +78,7 @@ void nr_gold_pdcch(PHY_VARS_NR_UE* ue,
void nr_gold_pdsch(PHY_VARS_NR_UE* ue,
int nscid,
uint32_t nid) {
-
- unsigned int x1,x2,x2tmp0;
+ unsigned int x1 = 0, x2 = 0, x2tmp0 = 0;
uint8_t reset;
int pdsch_dmrs_init_length = ((ue->frame_parms.N_RB_DL*12)>>5)+1;
@@ -104,7 +103,7 @@ void nr_init_pusch_dmrs(PHY_VARS_NR_UE* ue,
uint16_t N_n_scid,
uint8_t n_scid)
{
- uint32_t x1, x2, n;
+ uint32_t x1 = 0, x2 = 0, n = 0;
uint8_t reset, slot, symb;
NR_DL_FRAME_PARMS *fp = &ue->frame_parms;
uint32_t ****pusch_dmrs = ue->nr_gold_pusch_dmrs;
@@ -127,7 +126,7 @@ void nr_init_pusch_dmrs(PHY_VARS_NR_UE* ue,
void init_nr_gold_prs(PHY_VARS_NR_UE* ue)
{
- unsigned int x1, x2;
+ unsigned int x1 = 0, x2 = 0;
uint16_t Nid;
NR_DL_FRAME_PARMS *fp = &ue->frame_parms;
diff --git a/openair1/PHY/NR_TRANSPORT/nr_csi_rs.c b/openair1/PHY/NR_TRANSPORT/nr_csi_rs.c
index 0a1619f3e0..716a8b52be 100644
--- a/openair1/PHY/NR_TRANSPORT/nr_csi_rs.c
+++ b/openair1/PHY/NR_TRANSPORT/nr_csi_rs.c
@@ -28,7 +28,7 @@
void nr_init_csi_rs(const NR_DL_FRAME_PARMS *fp, uint32_t ***csi_rs, uint32_t Nid) {
- uint32_t x1, x2;
+ uint32_t x1 = 0, x2 = 0;
uint8_t reset;
int csi_dmrs_init_length = ((fp->N_RB_DL<<4)>>5)+1;
for (uint8_t slot=0; slotslots_per_frame; slot++) {
diff --git a/openair1/PHY/NR_TRANSPORT/nr_dci.c b/openair1/PHY/NR_TRANSPORT/nr_dci.c
index a80389a200..81d7ebe561 100644
--- a/openair1/PHY/NR_TRANSPORT/nr_dci.c
+++ b/openair1/PHY/NR_TRANSPORT/nr_dci.c
@@ -47,7 +47,7 @@ void nr_pdcch_scrambling(uint32_t *in,
uint32_t scrambling_RNTI,
uint32_t *out) {
uint8_t reset;
- uint32_t x1, x2, s=0;
+ uint32_t x1 = 0, x2 = 0, s = 0;
reset = 1;
x2 = (scrambling_RNTI<<16) + Nid;
LOG_D(PHY,"PDCCH Scrambling x2 %x : scrambling_RNTI %x \n", x2, scrambling_RNTI);
diff --git a/openair1/PHY/NR_TRANSPORT/nr_pbch.c b/openair1/PHY/NR_TRANSPORT/nr_pbch.c
index 278c2dfd58..64c1d31902 100644
--- a/openair1/PHY/NR_TRANSPORT/nr_pbch.c
+++ b/openair1/PHY/NR_TRANSPORT/nr_pbch.c
@@ -150,7 +150,7 @@ static void nr_pbch_scrambling(NR_gNB_PBCH *pbch,
uint8_t encoded,
uint32_t unscrambling_mask) {
uint8_t reset, offset;
- uint32_t x1, x2, s=0;
+ uint32_t x1 = 0, x2 = 0, s = 0;
uint32_t *pbch_e = pbch->pbch_e;
reset = 1;
// x1 is set in lte_gold_generic
diff --git a/openair1/PHY/NR_TRANSPORT/pucch_rx.c b/openair1/PHY/NR_TRANSPORT/pucch_rx.c
index dd138e5265..63229d8097 100644
--- a/openair1/PHY/NR_TRANSPORT/pucch_rx.c
+++ b/openair1/PHY/NR_TRANSPORT/pucch_rx.c
@@ -1254,7 +1254,7 @@ void nr_decode_pucch2(PHY_VARS_gNB *gNB,
// first compute DMRS component
- uint32_t x1, x2, s=0;
+ uint32_t x1 = 0, x2 = 0, s = 0;
x2 = (((1<<17)*((14*slot) + (pucch_pdu->start_symbol_index+symb) + 1)*((2*pucch_pdu->dmrs_scrambling_id) + 1)) + (2*pucch_pdu->dmrs_scrambling_id))%(1U<<31); // c_init calculation according to TS38.211 subclause
#ifdef DEBUG_NR_PUCCH_RX
printf("slot %d, start_symbol_index %d, symbol %d, dmrs_scrambling_id %d\n",
diff --git a/openair1/PHY/NR_UE_TRANSPORT/dci_nr.c b/openair1/PHY/NR_UE_TRANSPORT/dci_nr.c
index 956a910dec..cf237ef1fe 100644
--- a/openair1/PHY/NR_UE_TRANSPORT/dci_nr.c
+++ b/openair1/PHY/NR_UE_TRANSPORT/dci_nr.c
@@ -804,7 +804,7 @@ void nr_pdcch_unscrambling(int16_t *e_rx,
int16_t *z2) {
int i;
uint8_t reset;
- uint32_t x1, x2, s = 0;
+ uint32_t x1 = 0, x2 = 0, s = 0;
uint16_t n_id; //{0,1,...,65535}
uint32_t rnti = (uint32_t) scrambling_RNTI;
reset = 1;
diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c b/openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c
index d26aaca333..7e9af83fe8 100644
--- a/openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c
+++ b/openair1/PHY/NR_UE_TRANSPORT/nr_pbch.c
@@ -312,7 +312,7 @@ static void nr_pbch_unscrambling(NR_UE_PBCH *pbch,
uint32_t pbch_a_prime,
uint32_t *pbch_a_interleaved) {
uint8_t reset, offset;
- uint32_t x1, x2, s=0;
+ uint32_t x1 = 0, x2 = 0, s = 0;
uint8_t k=0;
reset = 1;
// x1 is set in first call to lte_gold_generic
@@ -427,7 +427,7 @@ int nr_rx_pbch( PHY_VARS_NR_UE *ue,
&nr_ue_common_vars->rxdataF[0][(symbol_offset+1)*frame_parms->ofdm_symbol_size],frame_parms->ofdm_symbol_size*3,1,1);
#endif
// symbol refers to symbol within SSB. symbol_offset is the offset of the SSB wrt start of slot
- double log2_maxh;
+ double log2_maxh = 0;
for (symbol=1; symbol<4; symbol++) {
const uint16_t nb_re=symbol == 2 ? 72 : 180;
diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c b/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c
index fad9019835..ae4ac7046e 100644
--- a/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c
+++ b/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c
@@ -62,7 +62,7 @@ void nr_pusch_codeword_scrambling_uci(uint8_t *in,
uint32_t* out)
{
uint8_t reset, b_idx;
- uint32_t x1, x2, s=0, temp_out;
+ uint32_t x1 = 0, x2 = 0, s = 0, temp_out = 0;
reset = 1;
x2 = (n_RNTI<<15) + Nid;
diff --git a/openair1/PHY/NR_UE_TRANSPORT/pucch_nr.c b/openair1/PHY/NR_UE_TRANSPORT/pucch_nr.c
index 4dcce9f60f..10d7b7d98d 100644
--- a/openair1/PHY/NR_UE_TRANSPORT/pucch_nr.c
+++ b/openair1/PHY/NR_UE_TRANSPORT/pucch_nr.c
@@ -807,7 +807,7 @@ void nr_generate_pucch1_old(PHY_VARS_NR_UE *ue,
static inline void nr_pucch2_3_4_scrambling(uint16_t M_bit,uint16_t rnti,uint16_t n_id,uint64_t *B64,uint8_t *btilde) __attribute__((always_inline));
static inline void nr_pucch2_3_4_scrambling(uint16_t M_bit,uint16_t rnti,uint16_t n_id,uint64_t *B64,uint8_t *btilde) {
- uint32_t x1, x2, s=0;
+ uint32_t x1 = 0, x2 = 0, s = 0;
int i;
uint8_t c;
// c_init=nRNTI*2^15+n_id according to TS 38.211 Subclause 6.3.2.6.1
@@ -1037,7 +1037,7 @@ void nr_generate_pucch2(PHY_VARS_NR_UE *ue,
*/
//int32_t *txptr;
uint32_t re_offset=0;
- uint32_t x1, x2, s=0;
+ uint32_t x1 = 0, x2 = 0, s = 0;
int i=0;
int m=0;
uint8_t startingSymbolIndex = pucch_pdu->start_symbol_index;
diff --git a/openair1/PHY/TOOLS/Makefile b/openair1/PHY/TOOLS/Makefile
index d7b14d5010..c5fd0d87f7 100644
--- a/openair1/PHY/TOOLS/Makefile
+++ b/openair1/PHY/TOOLS/Makefile
@@ -1,15 +1,15 @@
oai_dfts_sse4: oai_dfts.c
- gcc -O3 -std=gnu99 -msse4.1 -o oai_dfts_sse4 oai_dfts.c time_meas.c ../../SIMULATION/TOOLS/taus.c -I$$OPENAIR_HOME -I$$OPENAIR1_DIR -I$$OPENAIR_TARGETS -I$$OPENAIR_TARGETS/COMMON -I$$OPENAIR_HOME/sdr/COMMON -I$$OPENAIR2_DIR -I$$OPENAIR2_DIR/COMMON -I$$OPENAIR_HOME/common/utils -I$$OPENAIR_HOME/common/utils/T -I$$OPENAIR_HOME/common/utils/msc -I$$OPENAIR_HOME/nfapi/open-nFAPI/nfapi/public_inc -DMR_MAIN -DNB_ANTENNAS_RX=1 -lm -lpthread # -DD256STATS #-DD64STATS
+ gcc -O3 -std=gnu99 -msse4.1 -o oai_dfts_sse4 oai_dfts.c time_meas.c ../../SIMULATION/TOOLS/taus.c -I$$OPENAIR_HOME -I$$OPENAIR1_DIR -I$$OPENAIR_TARGETS -I$$OPENAIR_TARGETS/COMMON -I$$OPENAIR_HOME/radio/COMMON -I$$OPENAIR2_DIR -I$$OPENAIR2_DIR/COMMON -I$$OPENAIR_HOME/common/utils -I$$OPENAIR_HOME/common/utils/T -I$$OPENAIR_HOME/common/utils/msc -I$$OPENAIR_HOME/nfapi/open-nFAPI/nfapi/public_inc -DMR_MAIN -DNB_ANTENNAS_RX=1 -lm -lpthread # -DD256STATS #-DD64STATS
oai_dfts_avx2: oai_dfts.c
- gcc -O2 -std=gnu99 -mavx2 -g -ggdb -o oai_dfts_avx2 oai_dfts.c time_meas.c ../../SIMULATION/TOOLS/taus.c $$OPENAIR_HOME/common/utils/backtrace.c -I$$OPENAIR_HOME -I$$OPENAIR1_DIR -I$$OPENAIR_TARGETS -I$$OPENAIR_TARGETS/COMMON -I$$OPENAIR_HOME/sdr/COMMON -I$$OPENAIR2_DIR -I$$OPENAIR2_DIR/COMMON -I$$OPENAIR_HOME/common/utils -I$$OPENAIR_HOME/common/utils/T -I$$OPENAIR_HOME/common/utils/msc -I$$OPENAIR_HOME/nfapi/open-nFAPI/nfapi/public_inc -DMR_MAIN -DNB_ANTENNAS_RX=1 -lm -lpthread # -DD256STATS #-DD64STATS
+ gcc -O2 -std=gnu99 -mavx2 -g -ggdb -o oai_dfts_avx2 oai_dfts.c time_meas.c ../../SIMULATION/TOOLS/taus.c $$OPENAIR_HOME/common/utils/backtrace.c -I$$OPENAIR_HOME -I$$OPENAIR1_DIR -I$$OPENAIR_TARGETS -I$$OPENAIR_TARGETS/COMMON -I$$OPENAIR_HOME/radio/COMMON -I$$OPENAIR2_DIR -I$$OPENAIR2_DIR/COMMON -I$$OPENAIR_HOME/common/utils -I$$OPENAIR_HOME/common/utils/T -I$$OPENAIR_HOME/common/utils/msc -I$$OPENAIR_HOME/nfapi/open-nFAPI/nfapi/public_inc -DMR_MAIN -DNB_ANTENNAS_RX=1 -lm -lpthread # -DD256STATS #-DD64STATS
oai_dfts_avx2.s: oai_dfts.c
- gcc -O2 -std=gnu99 -mavx2 -S oai_dfts.c time_meas.c ../../SIMULATION/TOOLS/taus.c $$OPENAIR_HOME/common/utils/backtrace.c -I$$OPENAIR_HOME -I$$OPENAIR1_DIR -I$$OPENAIR_TARGETS -I$$OPENAIR_TARGETS/COMMON -I$$OPENAIR_HOME/sdr/COMMON -I$$OPENAIR2_DIR -I$$OPENAIR2_DIR/COMMON -I$$OPENAIR_HOME/common/utils -I$$OPENAIR_HOME/common/utils/T -I$$OPENAIR_HOME/common/utils/msc -I$$OPENAIR_HOME/nfapi/open-nFAPI/nfapi/public_inc -DMR_MAIN -DNB_ANTENNAS_RX=1 -lm -lpthread # -DD256STATS #-DD64STATS
+ gcc -O2 -std=gnu99 -mavx2 -S oai_dfts.c time_meas.c ../../SIMULATION/TOOLS/taus.c $$OPENAIR_HOME/common/utils/backtrace.c -I$$OPENAIR_HOME -I$$OPENAIR1_DIR -I$$OPENAIR_TARGETS -I$$OPENAIR_TARGETS/COMMON -I$$OPENAIR_HOME/radio/COMMON -I$$OPENAIR2_DIR -I$$OPENAIR2_DIR/COMMON -I$$OPENAIR_HOME/common/utils -I$$OPENAIR_HOME/common/utils/T -I$$OPENAIR_HOME/common/utils/msc -I$$OPENAIR_HOME/nfapi/open-nFAPI/nfapi/public_inc -DMR_MAIN -DNB_ANTENNAS_RX=1 -lm -lpthread # -DD256STATS #-DD64STATS
oai_dfts_sse4.s: oai_dfts.c
- gcc -O2 -std=gnu99 -msse4.1 -S oai_dfts.c time_meas.c ../../SIMULATION/TOOLS/taus.c $$OPENAIR_HOME/common/utils/backtrace.c -I$$OPENAIR_HOME -I$$OPENAIR1_DIR -I$$OPENAIR_TARGETS -I$$OPENAIR_TARGETS/COMMON -I$$OPENAIR_HOME/sdr/COMMON -I$$OPENAIR2_DIR -I$$OPENAIR2_DIR/COMMON -I$$OPENAIR_HOME/common/utils -I$$OPENAIR_HOME/common/utils/T -I$$OPENAIR_HOME/common/utils/msc -I$$OPENAIR_HOME/nfapi/open-nFAPI/nfapi/public_inc -DMR_MAIN -DNB_ANTENNAS_RX=1 -lm -lpthread # -DD256STATS #-DD64STATS
+ gcc -O2 -std=gnu99 -msse4.1 -S oai_dfts.c time_meas.c ../../SIMULATION/TOOLS/taus.c $$OPENAIR_HOME/common/utils/backtrace.c -I$$OPENAIR_HOME -I$$OPENAIR1_DIR -I$$OPENAIR_TARGETS -I$$OPENAIR_TARGETS/COMMON -I$$OPENAIR_HOME/radio/COMMON -I$$OPENAIR2_DIR -I$$OPENAIR2_DIR/COMMON -I$$OPENAIR_HOME/common/utils -I$$OPENAIR_HOME/common/utils/T -I$$OPENAIR_HOME/common/utils/msc -I$$OPENAIR_HOME/nfapi/open-nFAPI/nfapi/public_inc -DMR_MAIN -DNB_ANTENNAS_RX=1 -lm -lpthread # -DD256STATS #-DD64STATS
dft_cycles_avx2: oai_dfts_avx2
diff --git a/openair1/PHY/TOOLS/calibration_test.c b/openair1/PHY/TOOLS/calibration_test.c
index 838f6293f7..91b9d6fc37 100644
--- a/openair1/PHY/TOOLS/calibration_test.c
+++ b/openair1/PHY/TOOLS/calibration_test.c
@@ -1,6 +1,6 @@
#include
#include
-#include
+#include
#include
#include
diff --git a/openair1/PHY/TOOLS/nr_phy_scope.h b/openair1/PHY/TOOLS/nr_phy_scope.h
index e34ddf2c20..435c81c429 100644
--- a/openair1/PHY/TOOLS/nr_phy_scope.h
+++ b/openair1/PHY/TOOLS/nr_phy_scope.h
@@ -25,7 +25,7 @@
#define FD_nr_scope_h_
#include
#include
-#include
+#include
#include "common/ran_context.h"
#include
#include "PHY/defs_gNB.h"
diff --git a/openair1/PHY/defs_L1_NB_IoT.h b/openair1/PHY/defs_L1_NB_IoT.h
index cdf696d2a6..ab55b67864 100644
--- a/openair1/PHY/defs_L1_NB_IoT.h
+++ b/openair1/PHY/defs_L1_NB_IoT.h
@@ -128,8 +128,8 @@ static inline void* malloc16_clear( size_t size )
#include "PHY/LTE_TRANSPORT/defs_NB_IoT.h"
#include
-#include "sdr/COMMON/common_lib.h"
-#include "openairinterface5g_limits.h"
+#include "radio/COMMON/common_lib.h"
+#include "common/openairinterface5g_limits.h"
#define NUM_DCI_MAX_NB_IoT 32
diff --git a/openair1/PHY/defs_RU.h b/openair1/PHY/defs_RU.h
index 627ad7d27f..0ee7562346 100644
--- a/openair1/PHY/defs_RU.h
+++ b/openair1/PHY/defs_RU.h
@@ -35,7 +35,7 @@
#include "common_lib.h"
-#include "openairinterface5g_limits.h"
+#include "common/openairinterface5g_limits.h"
#include "time_meas.h"
#include "defs_common.h"
#include "nfapi_nr_interface_scf.h"
diff --git a/openair1/PHY/defs_common.h b/openair1/PHY/defs_common.h
index 13306d07d6..6336c7e5ef 100644
--- a/openair1/PHY/defs_common.h
+++ b/openair1/PHY/defs_common.h
@@ -66,7 +66,7 @@
#include "TOOLS/tools_defs.h"
-#include "openairinterface5g_limits.h"
+#include "common/openairinterface5g_limits.h"
#include "common/utils/LOG/log.h"
#include "types.h"
diff --git a/openair1/PHY/defs_eNB.h b/openair1/PHY/defs_eNB.h
index b7d9cd4473..a168652d1a 100644
--- a/openair1/PHY/defs_eNB.h
+++ b/openair1/PHY/defs_eNB.h
@@ -65,7 +65,7 @@
#include "PHY/LTE_TRANSPORT/transport_common.h"
#include "PHY/LTE_TRANSPORT/transport_eNB.h"
#include "openair2/PHY_INTERFACE/IF_Module.h"
-#include "openairinterface5g_limits.h"
+#include "common/openairinterface5g_limits.h"
#define PBCH_A 24
diff --git a/openair1/PHY/defs_nr_UE.h b/openair1/PHY/defs_nr_UE.h
index bbe2a1dfcd..0caf3311cc 100644
--- a/openair1/PHY/defs_nr_UE.h
+++ b/openair1/PHY/defs_nr_UE.h
@@ -104,7 +104,7 @@
#include "PHY/NR_UE_TRANSPORT/dci_nr.h"
#include
-#include "sdr/COMMON/common_lib.h"
+#include "radio/COMMON/common_lib.h"
#include "NR_IF_Module.h"
/// Context data structure for gNB subframe processing
diff --git a/openair1/PHY/impl_defs_top.h b/openair1/PHY/impl_defs_top.h
index c28a5b4f7e..35a965567f 100644
--- a/openair1/PHY/impl_defs_top.h
+++ b/openair1/PHY/impl_defs_top.h
@@ -305,7 +305,7 @@ typedef struct {
#define NUMBER_OF_HARQ_PID_MAX 8
#define MAX_FRAME_NUMBER 0x400
-#include "openairinterface5g_limits.h"
+#include "common/openairinterface5g_limits.h"
#include "assertions.h"
#endif //__PHY_IMPLEMENTATION_DEFS_H__
diff --git a/openair1/PHY/impl_defs_top_NB_IoT.h b/openair1/PHY/impl_defs_top_NB_IoT.h
index bfabb59c12..5966d04fc4 100644
--- a/openair1/PHY/impl_defs_top_NB_IoT.h
+++ b/openair1/PHY/impl_defs_top_NB_IoT.h
@@ -34,7 +34,7 @@
#define __PHY_IMPLEMENTATION_DEFS_NB_IOT_H__
-#include "openairinterface5g_limits.h"
+#include "common/openairinterface5g_limits.h"
/** @defgroup _ref_implementation_ OpenAirInterface LTE Implementation
* @{
@@ -281,7 +281,7 @@ typedef enum {
#define NUMBER_OF_HARQ_PID_MAX 8
#define MAX_FRAME_NUMBER 0x400
-#include "openairinterface5g_limits.h"
+#include "common/openairinterface5g_limits.h"
#define NUMBER_OF_RN_MAX 3
typedef enum {no_relay=1,unicast_relay_type1,unicast_relay_type2, multicast_relay} relaying_type_t;
diff --git a/openair1/PHY/thread_NR_UE.h b/openair1/PHY/thread_NR_UE.h
index 83cb00862f..aadb4aaf50 100644
--- a/openair1/PHY/thread_NR_UE.h
+++ b/openair1/PHY/thread_NR_UE.h
@@ -1,7 +1,7 @@
#ifndef __thread_NR_UE__
#define __thread_NR_UE__
#include
-#include
+#include
/// Context data structure for RX/TX portion of subframe processing
typedef struct {
/// Component Carrier index
diff --git a/openair1/SCHED_NR_UE/fapi_nr_ue_l1.c b/openair1/SCHED_NR_UE/fapi_nr_ue_l1.c
index ae80536abf..cb4ffbe66c 100644
--- a/openair1/SCHED_NR_UE/fapi_nr_ue_l1.c
+++ b/openair1/SCHED_NR_UE/fapi_nr_ue_l1.c
@@ -53,6 +53,7 @@ queue_t nr_uci_ind_queue;
static void fill_uci_2_3_4(nfapi_nr_uci_pucch_pdu_format_2_3_4_t *pdu_2_3_4,
fapi_nr_ul_config_pucch_pdu *pucch_pdu)
{
+ NR_UE_MAC_INST_t *mac = get_mac_inst(0);
memset(pdu_2_3_4, 0, sizeof(*pdu_2_3_4));
pdu_2_3_4->handle = 0;
pdu_2_3_4->rnti = pucch_pdu->rnti;
@@ -62,7 +63,7 @@ static void fill_uci_2_3_4(nfapi_nr_uci_pucch_pdu_format_2_3_4_t *pdu_2_3_4,
pdu_2_3_4->rssi = 0;
// TODO: Eventually check 38.212:Sect.631 to know when to use csi_part2, for now only using csi_part1
pdu_2_3_4->pduBitmap = 4;
- pdu_2_3_4->csi_part1.csi_part1_bit_len = pucch_pdu->nr_of_symbols;
+ pdu_2_3_4->csi_part1.csi_part1_bit_len = mac->nr_ue_emul_l1.num_csi_reports;
int csi_part1_byte_len = (int)((pdu_2_3_4->csi_part1.csi_part1_bit_len / 8) + 1);
AssertFatal(!pdu_2_3_4->csi_part1.csi_part1_payload, "pdu_2_3_4->csi_part1.csi_part1_payload != NULL\n");
pdu_2_3_4->csi_part1.csi_part1_payload = CALLOC(csi_part1_byte_len,
diff --git a/openair1/SIMULATION/ETH_TRANSPORT/defs.h b/openair1/SIMULATION/ETH_TRANSPORT/defs.h
index a7b2351b90..5c4e5ad365 100644
--- a/openair1/SIMULATION/ETH_TRANSPORT/defs.h
+++ b/openair1/SIMULATION/ETH_TRANSPORT/defs.h
@@ -32,7 +32,7 @@
# define __BYPASS_SESSION_LAYER_DEFS_H__
//-----------------------------------------------------------------------------
//#include "openair_defs.h"
-#include "targets/COMMON/openairinterface5g_limits.h"
+#include "common/openairinterface5g_limits.h"
#include "PHY/defs_common.h"
#include "PHY/LTE_TRANSPORT/uci_common.h"
diff --git a/openair1/SIMULATION/ETH_TRANSPORT/netlink_init.c b/openair1/SIMULATION/ETH_TRANSPORT/netlink_init.c
index 5337447678..988052ca82 100644
--- a/openair1/SIMULATION/ETH_TRANSPORT/netlink_init.c
+++ b/openair1/SIMULATION/ETH_TRANSPORT/netlink_init.c
@@ -44,7 +44,7 @@
#include
#include
#include
-#include "openairinterface5g_limits.h"
+#include "common/openairinterface5g_limits.h"
#include "pdcp.h"
diff --git a/openair1/SIMULATION/LTE_PHY/syncsim.c b/openair1/SIMULATION/LTE_PHY/syncsim.c
index dfcce8fd0b..97336c509d 100644
--- a/openair1/SIMULATION/LTE_PHY/syncsim.c
+++ b/openair1/SIMULATION/LTE_PHY/syncsim.c
@@ -41,7 +41,7 @@
#endif
#include "SCHED/defs.h"
#include "SCHED/vars.h"
-#include "sdr/COMMON/defs.h"
+#include "radio/COMMON/defs.h"
#include "LAYER2/MAC/vars.h"
#ifdef XFORMS
diff --git a/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs0_cdlc_mimo2x2_dl.csv b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs0_cdlc_mimo2x2_dl.csv
new file mode 100644
index 0000000000..e0bda6b82d
--- /dev/null
+++ b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs0_cdlc_mimo2x2_dl.csv
@@ -0,0 +1,152 @@
+SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
+-15;0;1864;0.2344;1415;1500;0;0;0;0;0;0;0
+-14.9;0;1864;0.2344;1401;1500;0;0;0;0;0;0;0
+-14.8;0;1864;0.2344;1388;1500;0;0;0;0;0;0;0
+-14.7;0;1864;0.2344;1375;1500;0;0;0;0;0;0;0
+-14.6;0;1864;0.2344;1362;1500;0;0;0;0;0;0;0
+-14.5;0;1864;0.2344;1349;1500;0;0;0;0;0;0;0
+-14.4;0;1864;0.2344;1336;1500;0;0;0;0;0;0;0
+-14.3;0;1864;0.2344;1324;1500;0;0;0;0;0;0;0
+-14.2;0;1864;0.2344;1311;1500;0;0;0;0;0;0;0
+-14.1;0;1864;0.2344;1299;1500;0;0;0;0;0;0;0
+-14;0;1864;0.2344;1287;1500;0;0;0;0;0;0;0
+-13.9;0;1864;0.2344;1275;1500;0;0;0;0;0;0;0
+-13.8;0;1864;0.2344;1262;1500;0;0;0;0;0;0;0
+-13.7;0;1864;0.2344;1251;1500;0;0;0;0;0;0;0
+-13.6;0;1864;0.2344;1239;1500;0;0;0;0;0;0;0
+-13.5;0;1864;0.2344;1227;1500;0;0;0;0;0;0;0
+-13.4;0;1864;0.2344;1216;1500;0;0;0;0;0;0;0
+-13.3;0;1864;0.2344;1204;1500;0;0;0;0;0;0;0
+-13.2;0;1864;0.2344;1193;1500;0;0;0;0;0;0;0
+-13.1;0;1864;0.2344;1181;1500;0;0;0;0;0;0;0
+-13;0;1864;0.2344;1170;1500;0;0;0;0;0;0;0
+-12.9;0;1864;0.2344;1159;1500;0;0;0;0;0;0;0
+-12.8;0;1864;0.2344;1148;1500;0;0;0;0;0;0;0
+-12.7;0;1864;0.2344;1137;1500;0;0;0;0;0;0;0
+-12.6;0;1864;0.2344;1127;1500;0;0;0;0;0;0;0
+-12.5;0;1864;0.2344;1116;1500;0;0;0;0;0;0;0
+-12.4;0;1864;0.2344;1106;1500;0;0;0;0;0;0;0
+-12.3;0;1864;0.2344;1095;1500;0;0;0;0;0;0;0
+-12.2;0;1864;0.2344;1085;1500;0;0;0;0;0;0;0
+-12.1;0;1864;0.2344;1075;1500;0;0;0;0;0;0;0
+-12;0;1864;0.2344;1064;1500;0;0;0;0;0;0;0
+-11.9;0;1864;0.2344;1050;1500;0;0;0;0;0;0;0
+-11.8;0;1864;0.2344;1035;1500;0;0;0;0;0;0;0
+-11.7;0;1864;0.2344;1021;1500;0;0;0;0;0;0;0
+-11.6;0;1864;0.2344;1007;1500;0;0;0;0;0;0;0
+-11.5;0;1864;0.2344;993;1500;0;0;0;0;0;0;0
+-11.4;0;1864;0.2344;979;1500;0;0;0;0;0;0;0
+-11.3;0;1864;0.2344;965;1500;0;0;0;0;0;0;0
+-11.2;0;1864;0.2344;952;1500;0;0;0;0;0;0;0
+-11.1;0;1864;0.2344;939;1500;0;0;0;0;0;0;0
+-11;0;1864;0.2344;926;1500;0;0;0;0;0;0;0
+-10.9;0;1864;0.2344;913;1500;0;0;0;0;0;0;0
+-10.8;0;1864;0.2344;900;1500;0;0;0;0;0;0;0
+-10.7;0;1864;0.2344;888;1500;0;0;0;0;0;0;0
+-10.6;0;1864;0.2344;876;1500;0;0;0;0;0;0;0
+-10.5;0;1864;0.2344;863;1500;0;0;0;0;0;0;0
+-10.4;0;1864;0.2344;851;1500;0;0;0;0;0;0;0
+-10.3;0;1864;0.2344;840;1500;0;0;0;0;0;0;0
+-10.2;0;1864;0.2344;828;1500;0;0;0;0;0;0;0
+-10.1;0;1864;0.2344;817;1500;0;0;0;0;0;0;0
+-10;0;1864;0.2344;805;1500;0;0;0;0;0;0;0
+-9.9;0;1864;0.2344;794;1500;0;0;0;0;0;0;0
+-9.8;0;1864;0.2344;783;1500;0;0;0;0;0;0;0
+-9.7;0;1864;0.2344;772;1500;0;0;0;0;0;0;0
+-9.6;0;1864;0.2344;762;1500;0;0;0;0;0;0;0
+-9.5;0;1864;0.2344;751;1500;0;0;0;0;0;0;0
+-9.4;0;1864;0.2344;741;1500;0;0;0;0;0;0;0
+-9.3;0;1864;0.2344;730;1500;0;0;0;0;0;0;0
+-9.2;0;1864;0.2344;720;1500;0;0;0;0;0;0;0
+-9.1;0;1864;0.2344;710;1500;0;0;0;0;0;0;0
+-9;0;1864;0.2344;700;1500;0;0;0;0;0;0;0
+-8.9;0;;;671;1500;0;0;0;0;0;0;0
+-8.8;0;;;642;1500;0;0;0;0;0;0;0
+-8.7;0;;;615;1500;0;0;0;0;0;0;0
+-8.6;0;;;589;1500;0;0;0;0;0;0;0
+-8.5;0;;;564;1500;0;0;0;0;0;0;0
+-8.4;0;;;541;1500;0;0;0;0;0;0;0
+-8.3;0;;;518;1500;0;0;0;0;0;0;0
+-8.2;0;;;496;1500;0;0;0;0;0;0;0
+-8.1;0;;;475;1500;0;0;0;0;0;0;0
+-8;0;;;455;1500;0;0;0;0;0;0;0
+-7.9;0;;;436;1500;0;0;0;0;0;0;0
+-7.8;0;;;417;1500;0;0;0;0;0;0;0
+-7.7;0;;;400;1500;0;0;0;0;0;0;0
+-7.6;0;;;383;1500;0;0;0;0;0;0;0
+-7.5;0;;;366;1500;0;0;0;0;0;0;0
+-7.4;0;;;351;1500;0;0;0;0;0;0;0
+-7.3;0;;;336;1500;0;0;0;0;0;0;0
+-7.2;0;;;322;1500;0;0;0;0;0;0;0
+-7.1;0;;;308;1500;0;0;0;0;0;0;0
+-7;0;;;295;1500;0;0;0;0;0;0;0
+-6.9;0;;;283;1500;0;0;0;0;0;0;0
+-6.8;0;;;271;1500;0;0;0;0;0;0;0
+-6.7;0;;;259;1500;0;0;0;0;0;0;0
+-6.6;0;;;248;1500;0;0;0;0;0;0;0
+-6.5;0;;;238;1500;0;0;0;0;0;0;0
+-6.4;0;;;228;1500;0;0;0;0;0;0;0
+-6.3;0;;;218;1500;0;0;0;0;0;0;0
+-6.2;0;;;209;1500;0;0;0;0;0;0;0
+-6.1;0;;;200;1500;0;0;0;0;0;0;0
+-6;0;;;192;1500;0;0;0;0;0;0;0
+-5.9;0;;;171;1500;0;0;0;0;0;0;0
+-5.8;0;;;152;1500;0;0;0;0;0;0;0
+-5.7;0;;;136;1500;0;0;0;0;0;0;0
+-5.6;0;;;121;1500;0;0;0;0;0;0;0
+-5.5;0;;;108;1500;0;0;0;0;0;0;0
+-5.4;0;;;96;1500;0;0;0;0;0;0;0
+-5.3;0;;;85;1500;0;0;0;0;0;0;0
+-5.2;0;;;76;1500;0;0;0;0;0;0;0
+-5.1;0;;;68;1500;0;0;0;0;0;0;0
+-5;0;;;60;1500;0;0;0;0;0;0;0
+-4.9;0;;;54;1500;0;0;0;0;0;0;0
+-4.8;0;;;48;1500;0;0;0;0;0;0;0
+-4.7;0;;;43;1500;0;0;0;0;0;0;0
+-4.6;0;;;38;1500;0;0;0;0;0;0;0
+-4.5;0;;;34;1500;0;0;0;0;0;0;0
+-4.4;0;;;30;1500;0;0;0;0;0;0;0
+-4.3;0;;;27;1500;0;0;0;0;0;0;0
+-4.2;0;;;24;1500;0;0;0;0;0;0;0
+-4.1;0;;;21;1500;0;0;0;0;0;0;0
+-4;0;;;19;1500;0;0;0;0;0;0;0
+-3.9;0;;;17;1500;0;0;0;0;0;0;0
+-3.8;0;;;15;1500;0;0;0;0;0;0;0
+-3.7;0;;;13;1500;0;0;0;0;0;0;0
+-3.6;0;;;12;1500;0;0;0;0;0;0;0
+-3.5;0;;;11;1500;0;0;0;0;0;0;0
+-3.4;0;;;10;1500;0;0;0;0;0;0;0
+-3.3;0;;;8;1500;0;0;0;0;0;0;0
+-3.2;0;;;8;1500;0;0;0;0;0;0;0
+-3.1;0;;;7;1500;0;0;0;0;0;0;0
+-3;0;;;6;1500;0;0;0;0;0;0;0
+-2.9;0;;;0;1500;0;0;0;0;0;0;0
+-2.8;0;;;0;1500;0;0;0;0;0;0;0
+-2.7;0;;;0;1500;0;0;0;0;0;0;0
+-2.6;0;;;0;1500;0;0;0;0;0;0;0
+-2.5;0;;;0;1500;0;0;0;0;0;0;0
+-2.4;0;;;0;1500;0;0;0;0;0;0;0
+-2.3;0;;;0;1500;0;0;0;0;0;0;0
+-2.2;0;;;0;1500;0;0;0;0;0;0;0
+-2.1;0;;;0;1500;0;0;0;0;0;0;0
+-2;0;;;0;1500;0;0;0;0;0;0;0
+-1.9;0;;;0;1500;0;0;0;0;0;0;0
+-1.8;0;;;0;1500;0;0;0;0;0;0;0
+-1.7;0;;;0;1500;0;0;0;0;0;0;0
+-1.6;0;;;0;1500;0;0;0;0;0;0;0
+-1.5;0;;;0;1500;0;0;0;0;0;0;0
+-1.4;0;;;0;1500;0;0;0;0;0;0;0
+-1.3;0;;;0;1500;0;0;0;0;0;0;0
+-1.2;0;;;0;1500;0;0;0;0;0;0;0
+-1.1;0;;;0;1500;0;0;0;0;0;0;0
+-1;0;;;0;1500;0;0;0;0;0;0;0
+-0.9;0;;;0;1500;0;0;0;0;0;0;0
+-0.8;0;;;0;1500;0;0;0;0;0;0;0
+-0.7;0;;;0;1500;0;0;0;0;0;0;0
+-0.6;0;;;0;1500;0;0;0;0;0;0;0
+-0.5;0;;;0;1500;0;0;0;0;0;0;0
+-0.4;0;;;0;1500;0;0;0;0;0;0;0
+-0.3;0;;;0;1500;0;0;0;0;0;0;0
+-0.2;0;;;0;1500;0;0;0;0;0;0;0
+-0.1;0;;;0;1500;0;0;0;0;0;0;0
+0;0;;;0;1500;0;0;0;0;0;0;0
diff --git a/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs10_cdlc_mimo2x2_dl.csv b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs10_cdlc_mimo2x2_dl.csv
new file mode 100644
index 0000000000..ede1f1b432
--- /dev/null
+++ b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs10_cdlc_mimo2x2_dl.csv
@@ -0,0 +1,302 @@
+SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
+-10;10;10504;1.3281;1500;1500;0;0;0;0;0;0;0
+-9.9;10;10504;1.3281;1500;1500;0;0;0;0;0;0;0
+-9.8;10;10504;1.3281;1500;1500;0;0;0;0;0;0;0
+-9.7;10;10504;1.3281;1500;1500;0;0;0;0;0;0;0
+-9.6;10;10504;1.3281;1500;1500;0;0;0;0;0;0;0
+-9.5;10;10504;1.3281;1500;1500;0;0;0;0;0;0;0
+-9.4;10;10504;1.3281;1500;1500;0;0;0;0;0;0;0
+-9.3;10;10504;1.3281;1500;1500;0;0;0;0;0;0;0
+-9.2;10;10504;1.3281;1500;1500;0;0;0;0;0;0;0
+-9.1;10;10504;1.3281;1500;1500;0;0;0;0;0;0;0
+-9;10;10504;1.3281;1500;1500;0;0;0;0;0;0;0
+-8.9;10;10504;1.3281;1500;1500;0;0;0;0;0;0;0
+-8.8;10;10504;1.3281;1500;1500;0;0;0;0;0;0;0
+-8.7;10;10504;1.3281;1500;1500;0;0;0;0;0;0;0
+-8.6;10;10504;1.3281;1500;1500;0;0;0;0;0;0;0
+-8.5;10;10504;1.3281;1500;1500;0;0;0;0;0;0;0
+-8.4;10;10504;1.3281;1500;1500;0;0;0;0;0;0;0
+-8.3;10;10504;1.3281;1500;1500;0;0;0;0;0;0;0
+-8.2;10;10504;1.3281;1500;1500;0;0;0;0;0;0;0
+-8.1;10;10504;1.3281;1500;1500;0;0;0;0;0;0;0
+-8;10;10504;1.3281;1500;1500;0;0;0;0;0;0;0
+-7.9;10;10504;1.3281;1500;1500;0;0;0;0;0;0;0
+-7.8;10;10504;1.3281;1500;1500;0;0;0;0;0;0;0
+-7.7;10;10504;1.3281;1500;1500;0;0;0;0;0;0;0
+-7.6;10;10504;1.3281;1500;1500;0;0;0;0;0;0;0
+-7.5;10;10504;1.3281;1500;1500;0;0;0;0;0;0;0
+-7.4;10;10504;1.3281;1500;1500;0;0;0;0;0;0;0
+-7.3;10;10504;1.3281;1500;1500;0;0;0;0;0;0;0
+-7.2;10;10504;1.3281;1500;1500;0;0;0;0;0;0;0
+-7.1;10;10504;1.3281;1500;1500;0;0;0;0;0;0;0
+-7;10;10504;1.3281;1500;1500;0;0;0;0;0;0;0
+-6.9;10;10504;1.3281;1497;1500;0;0;0;0;0;0;0
+-6.8;10;10504;1.3281;1494;1500;0;0;0;0;0;0;0
+-6.7;10;10504;1.3281;1491;1500;0;0;0;0;0;0;0
+-6.6;10;10504;1.3281;1489;1500;0;0;0;0;0;0;0
+-6.5;10;10504;1.3281;1486;1500;0;0;0;0;0;0;0
+-6.4;10;10504;1.3281;1483;1500;0;0;0;0;0;0;0
+-6.3;10;10504;1.3281;1480;1500;0;0;0;0;0;0;0
+-6.2;10;10504;1.3281;1477;1500;0;0;0;0;0;0;0
+-6.1;10;10504;1.3281;1474;1500;0;0;0;0;0;0;0
+-6;10;10504;1.3281;1472;1500;0;0;0;0;0;0;0
+-5.9;10;10504;1.3281;1469;1500;0;0;0;0;0;0;0
+-5.8;10;10504;1.3281;1466;1500;0;0;0;0;0;0;0
+-5.7;10;10504;1.3281;1463;1500;0;0;0;0;0;0;0
+-5.6;10;10504;1.3281;1460;1500;0;0;0;0;0;0;0
+-5.5;10;10504;1.3281;1458;1500;0;0;0;0;0;0;0
+-5.4;10;10504;1.3281;1455;1500;0;0;0;0;0;0;0
+-5.3;10;10504;1.3281;1452;1500;0;0;0;0;0;0;0
+-5.2;10;10504;1.3281;1449;1500;0;0;0;0;0;0;0
+-5.1;10;10504;1.3281;1446;1500;0;0;0;0;0;0;0
+-5;10;10504;1.3281;1444;1500;0;0;0;0;0;0;0
+-4.9;10;10504;1.3281;1441;1500;0;0;0;0;0;0;0
+-4.8;10;10504;1.3281;1438;1500;0;0;0;0;0;0;0
+-4.7;10;10504;1.3281;1435;1500;0;0;0;0;0;0;0
+-4.6;10;10504;1.3281;1433;1500;0;0;0;0;0;0;0
+-4.5;10;10504;1.3281;1430;1500;0;0;0;0;0;0;0
+-4.4;10;10504;1.3281;1427;1500;0;0;0;0;0;0;0
+-4.3;10;10504;1.3281;1424;1500;0;0;0;0;0;0;0
+-4.2;10;10504;1.3281;1422;1500;0;0;0;0;0;0;0
+-4.1;10;10504;1.3281;1419;1500;0;0;0;0;0;0;0
+-4;10;10504;1.3281;1416;1500;0;0;0;0;0;0;0
+-3.9;10;10504;1.3281;1404;1500;0;0;0;0;0;0;0
+-3.8;10;10504;1.3281;1392;1500;0;0;0;0;0;0;0
+-3.7;10;10504;1.3281;1381;1500;0;0;0;0;0;0;0
+-3.6;10;10504;1.3281;1369;1500;0;0;0;0;0;0;0
+-3.5;10;10504;1.3281;1357;1500;0;0;0;0;0;0;0
+-3.4;10;10504;1.3281;1346;1500;0;0;0;0;0;0;0
+-3.3;10;10504;1.3281;1334;1500;0;0;0;0;0;0;0
+-3.2;10;10504;1.3281;1323;1500;0;0;0;0;0;0;0
+-3.1;10;10504;1.3281;1312;1500;0;0;0;0;0;0;0
+-3;10;10504;1.3281;1301;1500;0;0;0;0;0;0;0
+-2.9;10;10504;1.3281;1290;1500;0;0;0;0;0;0;0
+-2.8;10;10504;1.3281;1279;1500;0;0;0;0;0;0;0
+-2.7;10;10504;1.3281;1268;1500;0;0;0;0;0;0;0
+-2.6;10;10504;1.3281;1257;1500;0;0;0;0;0;0;0
+-2.5;10;10504;1.3281;1247;1500;0;0;0;0;0;0;0
+-2.4;10;10504;1.3281;1236;1500;0;0;0;0;0;0;0
+-2.3;10;10504;1.3281;1226;1500;0;0;0;0;0;0;0
+-2.2;10;10504;1.3281;1215;1500;0;0;0;0;0;0;0
+-2.1;10;10504;1.3281;1205;1500;0;0;0;0;0;0;0
+-2;10;10504;1.3281;1195;1500;0;0;0;0;0;0;0
+-1.9;10;10504;1.3281;1185;1500;0;0;0;0;0;0;0
+-1.8;10;10504;1.3281;1175;1500;0;0;0;0;0;0;0
+-1.7;10;10504;1.3281;1165;1500;0;0;0;0;0;0;0
+-1.6;10;10504;1.3281;1155;1500;0;0;0;0;0;0;0
+-1.5;10;10504;1.3281;1145;1500;0;0;0;0;0;0;0
+-1.4;10;10504;1.3281;1135;1500;0;0;0;0;0;0;0
+-1.3;10;10504;1.3281;1126;1500;0;0;0;0;0;0;0
+-1.2;10;10504;1.3281;1116;1500;0;0;0;0;0;0;0
+-1.1;10;10504;1.3281;1107;1500;0;0;0;0;0;0;0
+-1;10;10504;1.3281;1097;1500;0;0;0;0;0;0;0
+-0.9;10;10504;1.3281;1083;1500;0;0;0;0;0;0;0
+-0.8;10;10504;1.3281;1069;1500;0;0;0;0;0;0;0
+-0.7;10;10504;1.3281;1056;1500;0;0;0;0;0;0;0
+-0.6;10;10504;1.3281;1042;1500;0;0;0;0;0;0;0
+-0.5;10;10504;1.3281;1029;1500;0;0;0;0;0;0;0
+-0.4;10;10504;1.3281;1016;1500;0;0;0;0;0;0;0
+-0.3;10;10504;1.3281;1003;1500;0;0;0;0;0;0;0
+-0.2;10;10504;1.3281;990;1500;0;0;0;0;0;0;0
+-0.1;10;10504;1.3281;978;1500;0;0;0;0;0;0;0
+0;10;10504;1.3281;965;1500;0;0;0;0;0;0;0
+0.1;10;10504;1.3281;953;1500;0;0;0;0;0;0;0
+0.2;10;10504;1.3281;941;1500;0;0;0;0;0;0;0
+0.3;10;10504;1.3281;929;1500;0;0;0;0;0;0;0
+0.4;10;10504;1.3281;917;1500;0;0;0;0;0;0;0
+0.5;10;10504;1.3281;905;1500;0;0;0;0;0;0;0
+0.6;10;10504;1.3281;894;1500;0;0;0;0;0;0;0
+0.7;10;10504;1.3281;882;1500;0;0;0;0;0;0;0
+0.8;10;10504;1.3281;871;1500;0;0;0;0;0;0;0
+0.9;10;10504;1.3281;860;1500;0;0;0;0;0;0;0
+1;10;10504;1.3281;849;1500;0;0;0;0;0;0;0
+1.1;10;10504;1.3281;838;1500;0;0;0;0;0;0;0
+1.2;10;10504;1.3281;827;1500;0;0;0;0;0;0;0
+1.3;10;10504;1.3281;817;1500;0;0;0;0;0;0;0
+1.4;10;10504;1.3281;806;1500;0;0;0;0;0;0;0
+1.5;10;10504;1.3281;796;1500;0;0;0;0;0;0;0
+1.6;10;10504;1.3281;786;1500;0;0;0;0;0;0;0
+1.7;10;10504;1.3281;776;1500;0;0;0;0;0;0;0
+1.8;10;10504;1.3281;766;1500;0;0;0;0;0;0;0
+1.9;10;10504;1.3281;756;1500;0;0;0;0;0;0;0
+2;10;10504;1.3281;747;1500;0;0;0;0;0;0;0
+2.1;10;10504;1.3281;724;1500;0;0;0;0;0;0;0
+2.2;10;10504;1.3281;702;1500;0;0;0;0;0;0;0
+2.3;10;10504;1.3281;681;1500;0;0;0;0;0;0;0
+2.4;10;10504;1.3281;660;1500;0;0;0;0;0;0;0
+2.5;10;10504;1.3281;640;1500;0;0;0;0;0;0;0
+2.6;10;10504;1.3281;620;1500;0;0;0;0;0;0;0
+2.7;10;10504;1.3281;601;1500;0;0;0;0;0;0;0
+2.8;10;10504;1.3281;583;1500;0;0;0;0;0;0;0
+2.9;10;10504;1.3281;565;1500;0;0;0;0;0;0;0
+3;10;10504;1.3281;548;1500;0;0;0;0;0;0;0
+3.1;10;10504;1.3281;531;1500;0;0;0;0;0;0;0
+3.2;10;10504;1.3281;515;1500;0;0;0;0;0;0;0
+3.3;10;10504;1.3281;500;1500;0;0;0;0;0;0;0
+3.4;10;10504;1.3281;484;1500;0;0;0;0;0;0;0
+3.5;10;10504;1.3281;470;1500;0;0;0;0;0;0;0
+3.6;10;10504;1.3281;455;1500;0;0;0;0;0;0;0
+3.7;10;10504;1.3281;442;1500;0;0;0;0;0;0;0
+3.8;10;10504;1.3281;428;1500;0;0;0;0;0;0;0
+3.9;10;10504;1.3281;415;1500;0;0;0;0;0;0;0
+4;10;10504;1.3281;402;1500;0;0;0;0;0;0;0
+4.1;10;10504;1.3281;390;1500;0;0;0;0;0;0;0
+4.2;10;10504;1.3281;378;1500;0;0;0;0;0;0;0
+4.3;10;10504;1.3281;367;1500;0;0;0;0;0;0;0
+4.4;10;10504;1.3281;356;1500;0;0;0;0;0;0;0
+4.5;10;10504;1.3281;345;1500;0;0;0;0;0;0;0
+4.6;10;10504;1.3281;334;1500;0;0;0;0;0;0;0
+4.7;10;10504;1.3281;324;1500;0;0;0;0;0;0;0
+4.8;10;10504;1.3281;314;1500;0;0;0;0;0;0;0
+4.9;10;10504;1.3281;305;1500;0;0;0;0;0;0;0
+5;10;10504;1.3281;296;1500;0;0;0;0;0;0;0
+5.1;10;10504;1.3281;273;1500;0;0;0;0;0;0;0
+5.2;10;10504;1.3281;253;1500;0;0;0;0;0;0;0
+5.3;10;10504;1.3281;234;1500;0;0;0;0;0;0;0
+5.4;10;10504;1.3281;217;1500;0;0;0;0;0;0;0
+5.5;10;10504;1.3281;201;1500;0;0;0;0;0;0;0
+5.6;10;10504;1.3281;186;1500;0;0;0;0;0;0;0
+5.7;10;10504;1.3281;172;1500;0;0;0;0;0;0;0
+5.8;10;10504;1.3281;159;1500;0;0;0;0;0;0;0
+5.9;10;10504;1.3281;147;1500;0;0;0;0;0;0;0
+6;10;10504;1.3281;136;1500;0;0;0;0;0;0;0
+6.1;10;10504;1.3281;126;1500;0;0;0;0;0;0;0
+6.2;10;10504;1.3281;117;1500;0;0;0;0;0;0;0
+6.3;10;10504;1.3281;108;1500;0;0;0;0;0;0;0
+6.4;10;10504;1.3281;100;1500;0;0;0;0;0;0;0
+6.5;10;10504;1.3281;92;1500;0;0;0;0;0;0;0
+6.6;10;10504;1.3281;86;1500;0;0;0;0;0;0;0
+6.7;10;10504;1.3281;79;1500;0;0;0;0;0;0;0
+6.8;10;10504;1.3281;73;1500;0;0;0;0;0;0;0
+6.9;10;10504;1.3281;68;1500;0;0;0;0;0;0;0
+7;10;10504;1.3281;63;1500;0;0;0;0;0;0;0
+7.1;10;10504;1.3281;58;1500;0;0;0;0;0;0;0
+7.2;10;10504;1.3281;54;1500;0;0;0;0;0;0;0
+7.3;10;10504;1.3281;50;1500;0;0;0;0;0;0;0
+7.4;10;10504;1.3281;46;1500;0;0;0;0;0;0;0
+7.5;10;10504;1.3281;43;1500;0;0;0;0;0;0;0
+7.6;10;10504;1.3281;39;1500;0;0;0;0;0;0;0
+7.7;10;10504;1.3281;37;1500;0;0;0;0;0;0;0
+7.8;10;10504;1.3281;34;1500;0;0;0;0;0;0;0
+7.9;10;10504;1.3281;31;1500;0;0;0;0;0;0;0
+8;10;10504;1.3281;29;1500;0;0;0;0;0;0;0
+8.1;10;10504;1.3281;25;1500;0;0;0;0;0;0;0
+8.2;10;10504;1.3281;22;1500;0;0;0;0;0;0;0
+8.3;10;10504;1.3281;19;1500;0;0;0;0;0;0;0
+8.4;10;10504;1.3281;17;1500;0;0;0;0;0;0;0
+8.5;10;10504;1.3281;14;1500;0;0;0;0;0;0;0
+8.6;10;10504;1.3281;13;1500;0;0;0;0;0;0;0
+8.7;10;10504;1.3281;11;1500;0;0;0;0;0;0;0
+8.8;10;10504;1.3281;10;1500;0;0;0;0;0;0;0
+8.9;10;10504;1.3281;8;1500;0;0;0;0;0;0;0
+9;10;10504;1.3281;7;1500;0;0;0;0;0;0;0
+9.1;10;10504;1.3281;6;1500;0;0;0;0;0;0;0
+9.2;10;10504;1.3281;5;1500;0;0;0;0;0;0;0
+9.3;10;10504;1.3281;5;1500;0;0;0;0;0;0;0
+9.4;10;10504;1.3281;4;1500;0;0;0;0;0;0;0
+9.5;10;10504;1.3281;4;1500;0;0;0;0;0;0;0
+9.6;10;10504;1.3281;3;1500;0;0;0;0;0;0;0
+9.7;10;10504;1.3281;3;1500;0;0;0;0;0;0;0
+9.8;10;10504;1.3281;2;1500;0;0;0;0;0;0;0
+9.9;10;10504;1.3281;2;1500;0;0;0;0;0;0;0
+10;10;10504;1.3281;2;1500;0;0;0;0;0;0;0
+10.1;10;10504;1.3281;2;1500;0;0;0;0;0;0;0
+10.2;10;10504;1.3281;1;1500;0;0;0;0;0;0;0
+10.3;10;10504;1.3281;1;1500;0;0;0;0;0;0;0
+10.4;10;10504;1.3281;1;1500;0;0;0;0;0;0;0
+10.5;10;10504;1.3281;1;1500;0;0;0;0;0;0;0
+10.6;10;10504;1.3281;1;1500;0;0;0;0;0;0;0
+10.7;10;10504;1.3281;1;1500;0;0;0;0;0;0;0
+10.8;10;10504;1.3281;1;1500;0;0;0;0;0;0;0
+10.9;10;10504;1.3281;1;1500;0;0;0;0;0;0;0
+11;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+11.1;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+11.2;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+11.3;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+11.4;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+11.5;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+11.6;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+11.7;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+11.8;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+11.9;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+12;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+12.1;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+12.2;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+12.3;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+12.4;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+12.5;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+12.6;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+12.7;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+12.8;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+12.9;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+13;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+13.1;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+13.2;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+13.3;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+13.4;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+13.5;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+13.6;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+13.7;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+13.8;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+13.9;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+14;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+14.1;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+14.2;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+14.3;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+14.4;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+14.5;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+14.6;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+14.7;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+14.8;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+14.9;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+15;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+15.1;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+15.2;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+15.3;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+15.4;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+15.5;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+15.6;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+15.7;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+15.8;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+15.9;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+16;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+16.1;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+16.2;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+16.3;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+16.4;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+16.5;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+16.6;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+16.7;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+16.8;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+16.9;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+17;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+17.1;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+17.2;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+17.3;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+17.4;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+17.5;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+17.6;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+17.7;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+17.8;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+17.9;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+18;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+18.1;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+18.2;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+18.3;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+18.4;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+18.5;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+18.6;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+18.7;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+18.8;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+18.9;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+19;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+19.1;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+19.2;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+19.3;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+19.4;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+19.5;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+19.6;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+19.7;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+19.8;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+19.9;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
+20;10;10504;1.3281;0;1500;0;0;0;0;0;0;0
diff --git a/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs11_cdlc_mimo2x2_dl.csv b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs11_cdlc_mimo2x2_dl.csv
new file mode 100644
index 0000000000..83a50215a7
--- /dev/null
+++ b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs11_cdlc_mimo2x2_dl.csv
@@ -0,0 +1,302 @@
+SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
+-10;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
+-9.9;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
+-9.8;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
+-9.7;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
+-9.6;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
+-9.5;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
+-9.4;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
+-9.3;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
+-9.2;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
+-9.1;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
+-9;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
+-8.9;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
+-8.8;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
+-8.7;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
+-8.6;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
+-8.5;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
+-8.4;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
+-8.3;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
+-8.2;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
+-8.1;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
+-8;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
+-7.9;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
+-7.8;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
+-7.7;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
+-7.6;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
+-7.5;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
+-7.4;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
+-7.3;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
+-7.2;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
+-7.1;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
+-7;11;11784;1.4766;1500;1500;0;0;0;0;0;0;0
+-6.9;11;11784;1.4766;1498;1500;0;0;0;0;0;0;0
+-6.8;11;11784;1.4766;1496;1500;0;0;0;0;0;0;0
+-6.7;11;11784;1.4766;1494;1500;0;0;0;0;0;0;0
+-6.6;11;11784;1.4766;1493;1500;0;0;0;0;0;0;0
+-6.5;11;11784;1.4766;1491;1500;0;0;0;0;0;0;0
+-6.4;11;11784;1.4766;1489;1500;0;0;0;0;0;0;0
+-6.3;11;11784;1.4766;1487;1500;0;0;0;0;0;0;0
+-6.2;11;11784;1.4766;1485;1500;0;0;0;0;0;0;0
+-6.1;11;11784;1.4766;1483;1500;0;0;0;0;0;0;0
+-6;11;11784;1.4766;1481;1500;0;0;0;0;0;0;0
+-5.9;11;11784;1.4766;1480;1500;0;0;0;0;0;0;0
+-5.8;11;11784;1.4766;1478;1500;0;0;0;0;0;0;0
+-5.7;11;11784;1.4766;1476;1500;0;0;0;0;0;0;0
+-5.6;11;11784;1.4766;1474;1500;0;0;0;0;0;0;0
+-5.5;11;11784;1.4766;1472;1500;0;0;0;0;0;0;0
+-5.4;11;11784;1.4766;1470;1500;0;0;0;0;0;0;0
+-5.3;11;11784;1.4766;1469;1500;0;0;0;0;0;0;0
+-5.2;11;11784;1.4766;1467;1500;0;0;0;0;0;0;0
+-5.1;11;11784;1.4766;1465;1500;0;0;0;0;0;0;0
+-5;11;11784;1.4766;1463;1500;0;0;0;0;0;0;0
+-4.9;11;11784;1.4766;1461;1500;0;0;0;0;0;0;0
+-4.8;11;11784;1.4766;1459;1500;0;0;0;0;0;0;0
+-4.7;11;11784;1.4766;1458;1500;0;0;0;0;0;0;0
+-4.6;11;11784;1.4766;1456;1500;0;0;0;0;0;0;0
+-4.5;11;11784;1.4766;1454;1500;0;0;0;0;0;0;0
+-4.4;11;11784;1.4766;1452;1500;0;0;0;0;0;0;0
+-4.3;11;11784;1.4766;1450;1500;0;0;0;0;0;0;0
+-4.2;11;11784;1.4766;1449;1500;0;0;0;0;0;0;0
+-4.1;11;11784;1.4766;1447;1500;0;0;0;0;0;0;0
+-4;11;11784;1.4766;1445;1500;0;0;0;0;0;0;0
+-3.9;11;11784;1.4766;1434;1500;0;0;0;0;0;0;0
+-3.8;11;11784;1.4766;1422;1500;0;0;0;0;0;0;0
+-3.7;11;11784;1.4766;1411;1500;0;0;0;0;0;0;0
+-3.6;11;11784;1.4766;1400;1500;0;0;0;0;0;0;0
+-3.5;11;11784;1.4766;1389;1500;0;0;0;0;0;0;0
+-3.4;11;11784;1.4766;1378;1500;0;0;0;0;0;0;0
+-3.3;11;11784;1.4766;1368;1500;0;0;0;0;0;0;0
+-3.2;11;11784;1.4766;1357;1500;0;0;0;0;0;0;0
+-3.1;11;11784;1.4766;1346;1500;0;0;0;0;0;0;0
+-3;11;11784;1.4766;1336;1500;0;0;0;0;0;0;0
+-2.9;11;11784;1.4766;1325;1500;0;0;0;0;0;0;0
+-2.8;11;11784;1.4766;1315;1500;0;0;0;0;0;0;0
+-2.7;11;11784;1.4766;1304;1500;0;0;0;0;0;0;0
+-2.6;11;11784;1.4766;1294;1500;0;0;0;0;0;0;0
+-2.5;11;11784;1.4766;1284;1500;0;0;0;0;0;0;0
+-2.4;11;11784;1.4766;1274;1500;0;0;0;0;0;0;0
+-2.3;11;11784;1.4766;1264;1500;0;0;0;0;0;0;0
+-2.2;11;11784;1.4766;1254;1500;0;0;0;0;0;0;0
+-2.1;11;11784;1.4766;1244;1500;0;0;0;0;0;0;0
+-2;11;11784;1.4766;1234;1500;0;0;0;0;0;0;0
+-1.9;11;11784;1.4766;1225;1500;0;0;0;0;0;0;0
+-1.8;11;11784;1.4766;1215;1500;0;0;0;0;0;0;0
+-1.7;11;11784;1.4766;1206;1500;0;0;0;0;0;0;0
+-1.6;11;11784;1.4766;1196;1500;0;0;0;0;0;0;0
+-1.5;11;11784;1.4766;1187;1500;0;0;0;0;0;0;0
+-1.4;11;11784;1.4766;1177;1500;0;0;0;0;0;0;0
+-1.3;11;11784;1.4766;1168;1500;0;0;0;0;0;0;0
+-1.2;11;11784;1.4766;1159;1500;0;0;0;0;0;0;0
+-1.1;11;11784;1.4766;1150;1500;0;0;0;0;0;0;0
+-1;11;11784;1.4766;1141;1500;0;0;0;0;0;0;0
+-0.9;11;11784;1.4766;1128;1500;0;0;0;0;0;0;0
+-0.8;11;11784;1.4766;1115;1500;0;0;0;0;0;0;0
+-0.7;11;11784;1.4766;1103;1500;0;0;0;0;0;0;0
+-0.6;11;11784;1.4766;1091;1500;0;0;0;0;0;0;0
+-0.5;11;11784;1.4766;1078;1500;0;0;0;0;0;0;0
+-0.4;11;11784;1.4766;1066;1500;0;0;0;0;0;0;0
+-0.3;11;11784;1.4766;1054;1500;0;0;0;0;0;0;0
+-0.2;11;11784;1.4766;1042;1500;0;0;0;0;0;0;0
+-0.1;11;11784;1.4766;1031;1500;0;0;0;0;0;0;0
+0;11;11784;1.4766;1019;1500;0;0;0;0;0;0;0
+0.1;11;11784;1.4766;1008;1500;0;0;0;0;0;0;0
+0.2;11;11784;1.4766;996;1500;0;0;0;0;0;0;0
+0.3;11;11784;1.4766;985;1500;0;0;0;0;0;0;0
+0.4;11;11784;1.4766;974;1500;0;0;0;0;0;0;0
+0.5;11;11784;1.4766;963;1500;0;0;0;0;0;0;0
+0.6;11;11784;1.4766;952;1500;0;0;0;0;0;0;0
+0.7;11;11784;1.4766;942;1500;0;0;0;0;0;0;0
+0.8;11;11784;1.4766;931;1500;0;0;0;0;0;0;0
+0.9;11;11784;1.4766;921;1500;0;0;0;0;0;0;0
+1;11;11784;1.4766;910;1500;0;0;0;0;0;0;0
+1.1;11;11784;1.4766;900;1500;0;0;0;0;0;0;0
+1.2;11;11784;1.4766;890;1500;0;0;0;0;0;0;0
+1.3;11;11784;1.4766;880;1500;0;0;0;0;0;0;0
+1.4;11;11784;1.4766;870;1500;0;0;0;0;0;0;0
+1.5;11;11784;1.4766;860;1500;0;0;0;0;0;0;0
+1.6;11;11784;1.4766;851;1500;0;0;0;0;0;0;0
+1.7;11;11784;1.4766;841;1500;0;0;0;0;0;0;0
+1.8;11;11784;1.4766;832;1500;0;0;0;0;0;0;0
+1.9;11;11784;1.4766;822;1500;0;0;0;0;0;0;0
+2;11;11784;1.4766;813;1500;0;0;0;0;0;0;0
+2.1;11;11784;1.4766;794;1500;0;0;0;0;0;0;0
+2.2;11;11784;1.4766;775;1500;0;0;0;0;0;0;0
+2.3;11;11784;1.4766;757;1500;0;0;0;0;0;0;0
+2.4;11;11784;1.4766;739;1500;0;0;0;0;0;0;0
+2.5;11;11784;1.4766;722;1500;0;0;0;0;0;0;0
+2.6;11;11784;1.4766;705;1500;0;0;0;0;0;0;0
+2.7;11;11784;1.4766;689;1500;0;0;0;0;0;0;0
+2.8;11;11784;1.4766;672;1500;0;0;0;0;0;0;0
+2.9;11;11784;1.4766;657;1500;0;0;0;0;0;0;0
+3;11;11784;1.4766;641;1500;0;0;0;0;0;0;0
+3.1;11;11784;1.4766;626;1500;0;0;0;0;0;0;0
+3.2;11;11784;1.4766;611;1500;0;0;0;0;0;0;0
+3.3;11;11784;1.4766;597;1500;0;0;0;0;0;0;0
+3.4;11;11784;1.4766;583;1500;0;0;0;0;0;0;0
+3.5;11;11784;1.4766;569;1500;0;0;0;0;0;0;0
+3.6;11;11784;1.4766;556;1500;0;0;0;0;0;0;0
+3.7;11;11784;1.4766;543;1500;0;0;0;0;0;0;0
+3.8;11;11784;1.4766;530;1500;0;0;0;0;0;0;0
+3.9;11;11784;1.4766;518;1500;0;0;0;0;0;0;0
+4;11;11784;1.4766;506;1500;0;0;0;0;0;0;0
+4.1;11;11784;1.4766;494;1500;0;0;0;0;0;0;0
+4.2;11;11784;1.4766;482;1500;0;0;0;0;0;0;0
+4.3;11;11784;1.4766;471;1500;0;0;0;0;0;0;0
+4.4;11;11784;1.4766;460;1500;0;0;0;0;0;0;0
+4.5;11;11784;1.4766;449;1500;0;0;0;0;0;0;0
+4.6;11;11784;1.4766;438;1500;0;0;0;0;0;0;0
+4.7;11;11784;1.4766;428;1500;0;0;0;0;0;0;0
+4.8;11;11784;1.4766;418;1500;0;0;0;0;0;0;0
+4.9;11;11784;1.4766;408;1500;0;0;0;0;0;0;0
+5;11;11784;1.4766;399;1500;0;0;0;0;0;0;0
+5.1;11;11784;1.4766;377;1500;0;0;0;0;0;0;0
+5.2;11;11784;1.4766;357;1500;0;0;0;0;0;0;0
+5.3;11;11784;1.4766;338;1500;0;0;0;0;0;0;0
+5.4;11;11784;1.4766;319;1500;0;0;0;0;0;0;0
+5.5;11;11784;1.4766;302;1500;0;0;0;0;0;0;0
+5.6;11;11784;1.4766;286;1500;0;0;0;0;0;0;0
+5.7;11;11784;1.4766;271;1500;0;0;0;0;0;0;0
+5.8;11;11784;1.4766;256;1500;0;0;0;0;0;0;0
+5.9;11;11784;1.4766;242;1500;0;0;0;0;0;0;0
+6;11;11784;1.4766;229;1500;0;0;0;0;0;0;0
+6.1;11;11784;1.4766;217;1500;0;0;0;0;0;0;0
+6.2;11;11784;1.4766;205;1500;0;0;0;0;0;0;0
+6.3;11;11784;1.4766;194;1500;0;0;0;0;0;0;0
+6.4;11;11784;1.4766;184;1500;0;0;0;0;0;0;0
+6.5;11;11784;1.4766;174;1500;0;0;0;0;0;0;0
+6.6;11;11784;1.4766;164;1500;0;0;0;0;0;0;0
+6.7;11;11784;1.4766;155;1500;0;0;0;0;0;0;0
+6.8;11;11784;1.4766;147;1500;0;0;0;0;0;0;0
+6.9;11;11784;1.4766;139;1500;0;0;0;0;0;0;0
+7;11;11784;1.4766;132;1500;0;0;0;0;0;0;0
+7.1;11;11784;1.4766;125;1500;0;0;0;0;0;0;0
+7.2;11;11784;1.4766;118;1500;0;0;0;0;0;0;0
+7.3;11;11784;1.4766;112;1500;0;0;0;0;0;0;0
+7.4;11;11784;1.4766;106;1500;0;0;0;0;0;0;0
+7.5;11;11784;1.4766;100;1500;0;0;0;0;0;0;0
+7.6;11;11784;1.4766;94;1500;0;0;0;0;0;0;0
+7.7;11;11784;1.4766;89;1500;0;0;0;0;0;0;0
+7.8;11;11784;1.4766;85;1500;0;0;0;0;0;0;0
+7.9;11;11784;1.4766;80;1500;0;0;0;0;0;0;0
+8;11;11784;1.4766;76;1500;0;0;0;0;0;0;0
+8.1;11;11784;1.4766;68;1500;0;0;0;0;0;0;0
+8.2;11;11784;1.4766;61;1500;0;0;0;0;0;0;0
+8.3;11;11784;1.4766;55;1500;0;0;0;0;0;0;0
+8.4;11;11784;1.4766;49;1500;0;0;0;0;0;0;0
+8.5;11;11784;1.4766;44;1500;0;0;0;0;0;0;0
+8.6;11;11784;1.4766;39;1500;0;0;0;0;0;0;0
+8.7;11;11784;1.4766;35;1500;0;0;0;0;0;0;0
+8.8;11;11784;1.4766;32;1500;0;0;0;0;0;0;0
+8.9;11;11784;1.4766;29;1500;0;0;0;0;0;0;0
+9;11;11784;1.4766;26;1500;0;0;0;0;0;0;0
+9.1;11;11784;1.4766;23;1500;0;0;0;0;0;0;0
+9.2;11;11784;1.4766;21;1500;0;0;0;0;0;0;0
+9.3;11;11784;1.4766;18;1500;0;0;0;0;0;0;0
+9.4;11;11784;1.4766;17;1500;0;0;0;0;0;0;0
+9.5;11;11784;1.4766;15;1500;0;0;0;0;0;0;0
+9.6;11;11784;1.4766;13;1500;0;0;0;0;0;0;0
+9.7;11;11784;1.4766;12;1500;0;0;0;0;0;0;0
+9.8;11;11784;1.4766;11;1500;0;0;0;0;0;0;0
+9.9;11;11784;1.4766;10;1500;0;0;0;0;0;0;0
+10;11;11784;1.4766;9;1500;0;0;0;0;0;0;0
+10.1;11;11784;1.4766;8;1500;0;0;0;0;0;0;0
+10.2;11;11784;1.4766;7;1500;0;0;0;0;0;0;0
+10.3;11;11784;1.4766;6;1500;0;0;0;0;0;0;0
+10.4;11;11784;1.4766;6;1500;0;0;0;0;0;0;0
+10.5;11;11784;1.4766;5;1500;0;0;0;0;0;0;0
+10.6;11;11784;1.4766;5;1500;0;0;0;0;0;0;0
+10.7;11;11784;1.4766;4;1500;0;0;0;0;0;0;0
+10.8;11;11784;1.4766;4;1500;0;0;0;0;0;0;0
+10.9;11;11784;1.4766;3;1500;0;0;0;0;0;0;0
+11;11;11784;1.4766;3;1500;0;0;0;0;0;0;0
+11.1;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+11.2;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+11.3;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+11.4;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+11.5;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+11.6;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+11.7;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+11.8;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+11.9;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+12;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+12.1;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+12.2;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+12.3;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+12.4;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+12.5;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+12.6;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+12.7;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+12.8;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+12.9;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+13;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+13.1;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+13.2;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+13.3;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+13.4;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+13.5;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+13.6;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+13.7;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+13.8;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+13.9;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+14;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+14.1;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+14.2;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+14.3;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+14.4;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+14.5;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+14.6;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+14.7;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+14.8;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+14.9;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+15;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+15.1;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+15.2;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+15.3;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+15.4;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+15.5;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+15.6;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+15.7;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+15.8;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+15.9;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+16;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+16.1;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+16.2;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+16.3;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+16.4;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+16.5;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+16.6;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+16.7;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+16.8;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+16.9;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+17;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+17.1;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+17.2;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+17.3;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+17.4;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+17.5;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+17.6;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+17.7;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+17.8;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+17.9;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+18;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+18.1;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+18.2;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+18.3;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+18.4;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+18.5;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+18.6;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+18.7;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+18.8;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+18.9;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+19;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+19.1;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+19.2;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+19.3;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+19.4;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+19.5;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+19.6;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+19.7;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+19.8;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+19.9;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
+20;11;11784;1.4766;0;1500;0;0;0;0;0;0;0
diff --git a/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs12_cdlc_mimo2x2_dl.csv b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs12_cdlc_mimo2x2_dl.csv
new file mode 100644
index 0000000000..1f07918bde
--- /dev/null
+++ b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs12_cdlc_mimo2x2_dl.csv
@@ -0,0 +1,302 @@
+SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
+-10;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
+-9.9;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
+-9.8;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
+-9.7;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
+-9.6;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
+-9.5;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
+-9.4;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
+-9.3;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
+-9.2;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
+-9.1;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
+-9;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
+-8.9;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
+-8.8;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
+-8.7;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
+-8.6;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
+-8.5;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
+-8.4;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
+-8.3;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
+-8.2;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
+-8.1;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
+-8;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
+-7.9;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
+-7.8;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
+-7.7;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
+-7.6;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
+-7.5;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
+-7.4;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
+-7.3;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
+-7.2;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
+-7.1;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
+-7;12;13576;1.6953;1500;1500;0;0;0;0;0;0;0
+-6.9;12;13576;1.6953;1499;1500;0;0;0;0;0;0;0
+-6.8;12;13576;1.6953;1498;1500;0;0;0;0;0;0;0
+-6.7;12;13576;1.6953;1497;1500;0;0;0;0;0;0;0
+-6.6;12;13576;1.6953;1496;1500;0;0;0;0;0;0;0
+-6.5;12;13576;1.6953;1495;1500;0;0;0;0;0;0;0
+-6.4;12;13576;1.6953;1494;1500;0;0;0;0;0;0;0
+-6.3;12;13576;1.6953;1493;1500;0;0;0;0;0;0;0
+-6.2;12;13576;1.6953;1493;1500;0;0;0;0;0;0;0
+-6.1;12;13576;1.6953;1492;1500;0;0;0;0;0;0;0
+-6;12;13576;1.6953;1491;1500;0;0;0;0;0;0;0
+-5.9;12;13576;1.6953;1490;1500;0;0;0;0;0;0;0
+-5.8;12;13576;1.6953;1489;1500;0;0;0;0;0;0;0
+-5.7;12;13576;1.6953;1488;1500;0;0;0;0;0;0;0
+-5.6;12;13576;1.6953;1487;1500;0;0;0;0;0;0;0
+-5.5;12;13576;1.6953;1486;1500;0;0;0;0;0;0;0
+-5.4;12;13576;1.6953;1485;1500;0;0;0;0;0;0;0
+-5.3;12;13576;1.6953;1484;1500;0;0;0;0;0;0;0
+-5.2;12;13576;1.6953;1483;1500;0;0;0;0;0;0;0
+-5.1;12;13576;1.6953;1482;1500;0;0;0;0;0;0;0
+-5;12;13576;1.6953;1481;1500;0;0;0;0;0;0;0
+-4.9;12;13576;1.6953;1481;1500;0;0;0;0;0;0;0
+-4.8;12;13576;1.6953;1480;1500;0;0;0;0;0;0;0
+-4.7;12;13576;1.6953;1479;1500;0;0;0;0;0;0;0
+-4.6;12;13576;1.6953;1478;1500;0;0;0;0;0;0;0
+-4.5;12;13576;1.6953;1477;1500;0;0;0;0;0;0;0
+-4.4;12;13576;1.6953;1476;1500;0;0;0;0;0;0;0
+-4.3;12;13576;1.6953;1475;1500;0;0;0;0;0;0;0
+-4.2;12;13576;1.6953;1474;1500;0;0;0;0;0;0;0
+-4.1;12;13576;1.6953;1473;1500;0;0;0;0;0;0;0
+-4;12;13576;1.6953;1472;1500;0;0;0;0;0;0;0
+-3.9;12;13576;1.6953;1463;1500;0;0;0;0;0;0;0
+-3.8;12;13576;1.6953;1454;1500;0;0;0;0;0;0;0
+-3.7;12;13576;1.6953;1444;1500;0;0;0;0;0;0;0
+-3.6;12;13576;1.6953;1435;1500;0;0;0;0;0;0;0
+-3.5;12;13576;1.6953;1426;1500;0;0;0;0;0;0;0
+-3.4;12;13576;1.6953;1417;1500;0;0;0;0;0;0;0
+-3.3;12;13576;1.6953;1408;1500;0;0;0;0;0;0;0
+-3.2;12;13576;1.6953;1399;1500;0;0;0;0;0;0;0
+-3.1;12;13576;1.6953;1390;1500;0;0;0;0;0;0;0
+-3;12;13576;1.6953;1381;1500;0;0;0;0;0;0;0
+-2.9;12;13576;1.6953;1372;1500;0;0;0;0;0;0;0
+-2.8;12;13576;1.6953;1364;1500;0;0;0;0;0;0;0
+-2.7;12;13576;1.6953;1355;1500;0;0;0;0;0;0;0
+-2.6;12;13576;1.6953;1346;1500;0;0;0;0;0;0;0
+-2.5;12;13576;1.6953;1338;1500;0;0;0;0;0;0;0
+-2.4;12;13576;1.6953;1329;1500;0;0;0;0;0;0;0
+-2.3;12;13576;1.6953;1321;1500;0;0;0;0;0;0;0
+-2.2;12;13576;1.6953;1312;1500;0;0;0;0;0;0;0
+-2.1;12;13576;1.6953;1304;1500;0;0;0;0;0;0;0
+-2;12;13576;1.6953;1296;1500;0;0;0;0;0;0;0
+-1.9;12;13576;1.6953;1287;1500;0;0;0;0;0;0;0
+-1.8;12;13576;1.6953;1279;1500;0;0;0;0;0;0;0
+-1.7;12;13576;1.6953;1271;1500;0;0;0;0;0;0;0
+-1.6;12;13576;1.6953;1263;1500;0;0;0;0;0;0;0
+-1.5;12;13576;1.6953;1255;1500;0;0;0;0;0;0;0
+-1.4;12;13576;1.6953;1247;1500;0;0;0;0;0;0;0
+-1.3;12;13576;1.6953;1239;1500;0;0;0;0;0;0;0
+-1.2;12;13576;1.6953;1231;1500;0;0;0;0;0;0;0
+-1.1;12;13576;1.6953;1223;1500;0;0;0;0;0;0;0
+-1;12;13576;1.6953;1215;1500;0;0;0;0;0;0;0
+-0.9;12;13576;1.6953;1203;1500;0;0;0;0;0;0;0
+-0.8;12;13576;1.6953;1191;1500;0;0;0;0;0;0;0
+-0.7;12;13576;1.6953;1179;1500;0;0;0;0;0;0;0
+-0.6;12;13576;1.6953;1166;1500;0;0;0;0;0;0;0
+-0.5;12;13576;1.6953;1155;1500;0;0;0;0;0;0;0
+-0.4;12;13576;1.6953;1143;1500;0;0;0;0;0;0;0
+-0.3;12;13576;1.6953;1131;1500;0;0;0;0;0;0;0
+-0.2;12;13576;1.6953;1120;1500;0;0;0;0;0;0;0
+-0.1;12;13576;1.6953;1108;1500;0;0;0;0;0;0;0
+0;12;13576;1.6953;1097;1500;0;0;0;0;0;0;0
+0.1;12;13576;1.6953;1086;1500;0;0;0;0;0;0;0
+0.2;12;13576;1.6953;1074;1500;0;0;0;0;0;0;0
+0.3;12;13576;1.6953;1063;1500;0;0;0;0;0;0;0
+0.4;12;13576;1.6953;1053;1500;0;0;0;0;0;0;0
+0.5;12;13576;1.6953;1042;1500;0;0;0;0;0;0;0
+0.6;12;13576;1.6953;1031;1500;0;0;0;0;0;0;0
+0.7;12;13576;1.6953;1021;1500;0;0;0;0;0;0;0
+0.8;12;13576;1.6953;1010;1500;0;0;0;0;0;0;0
+0.9;12;13576;1.6953;1000;1500;0;0;0;0;0;0;0
+1;12;13576;1.6953;990;1500;0;0;0;0;0;0;0
+1.1;12;13576;1.6953;979;1500;0;0;0;0;0;0;0
+1.2;12;13576;1.6953;969;1500;0;0;0;0;0;0;0
+1.3;12;13576;1.6953;960;1500;0;0;0;0;0;0;0
+1.4;12;13576;1.6953;950;1500;0;0;0;0;0;0;0
+1.5;12;13576;1.6953;940;1500;0;0;0;0;0;0;0
+1.6;12;13576;1.6953;930;1500;0;0;0;0;0;0;0
+1.7;12;13576;1.6953;921;1500;0;0;0;0;0;0;0
+1.8;12;13576;1.6953;911;1500;0;0;0;0;0;0;0
+1.9;12;13576;1.6953;902;1500;0;0;0;0;0;0;0
+2;12;13576;1.6953;893;1500;0;0;0;0;0;0;0
+2.1;12;13576;1.6953;880;1500;0;0;0;0;0;0;0
+2.2;12;13576;1.6953;868;1500;0;0;0;0;0;0;0
+2.3;12;13576;1.6953;856;1500;0;0;0;0;0;0;0
+2.4;12;13576;1.6953;844;1500;0;0;0;0;0;0;0
+2.5;12;13576;1.6953;832;1500;0;0;0;0;0;0;0
+2.6;12;13576;1.6953;820;1500;0;0;0;0;0;0;0
+2.7;12;13576;1.6953;808;1500;0;0;0;0;0;0;0
+2.8;12;13576;1.6953;797;1500;0;0;0;0;0;0;0
+2.9;12;13576;1.6953;786;1500;0;0;0;0;0;0;0
+3;12;13576;1.6953;774;1500;0;0;0;0;0;0;0
+3.1;12;13576;1.6953;763;1500;0;0;0;0;0;0;0
+3.2;12;13576;1.6953;753;1500;0;0;0;0;0;0;0
+3.3;12;13576;1.6953;742;1500;0;0;0;0;0;0;0
+3.4;12;13576;1.6953;732;1500;0;0;0;0;0;0;0
+3.5;12;13576;1.6953;721;1500;0;0;0;0;0;0;0
+3.6;12;13576;1.6953;711;1500;0;0;0;0;0;0;0
+3.7;12;13576;1.6953;701;1500;0;0;0;0;0;0;0
+3.8;12;13576;1.6953;691;1500;0;0;0;0;0;0;0
+3.9;12;13576;1.6953;681;1500;0;0;0;0;0;0;0
+4;12;13576;1.6953;672;1500;0;0;0;0;0;0;0
+4.1;12;13576;1.6953;662;1500;0;0;0;0;0;0;0
+4.2;12;13576;1.6953;653;1500;0;0;0;0;0;0;0
+4.3;12;13576;1.6953;644;1500;0;0;0;0;0;0;0
+4.4;12;13576;1.6953;634;1500;0;0;0;0;0;0;0
+4.5;12;13576;1.6953;626;1500;0;0;0;0;0;0;0
+4.6;12;13576;1.6953;617;1500;0;0;0;0;0;0;0
+4.7;12;13576;1.6953;608;1500;0;0;0;0;0;0;0
+4.8;12;13576;1.6953;599;1500;0;0;0;0;0;0;0
+4.9;12;13576;1.6953;591;1500;0;0;0;0;0;0;0
+5;12;13576;1.6953;583;1500;0;0;0;0;0;0;0
+5.1;12;13576;1.6953;560;1500;0;0;0;0;0;0;0
+5.2;12;13576;1.6953;539;1500;0;0;0;0;0;0;0
+5.3;12;13576;1.6953;519;1500;0;0;0;0;0;0;0
+5.4;12;13576;1.6953;499;1500;0;0;0;0;0;0;0
+5.5;12;13576;1.6953;480;1500;0;0;0;0;0;0;0
+5.6;12;13576;1.6953;462;1500;0;0;0;0;0;0;0
+5.7;12;13576;1.6953;444;1500;0;0;0;0;0;0;0
+5.8;12;13576;1.6953;427;1500;0;0;0;0;0;0;0
+5.9;12;13576;1.6953;411;1500;0;0;0;0;0;0;0
+6;12;13576;1.6953;396;1500;0;0;0;0;0;0;0
+6.1;12;13576;1.6953;380;1500;0;0;0;0;0;0;0
+6.2;12;13576;1.6953;366;1500;0;0;0;0;0;0;0
+6.3;12;13576;1.6953;352;1500;0;0;0;0;0;0;0
+6.4;12;13576;1.6953;339;1500;0;0;0;0;0;0;0
+6.5;12;13576;1.6953;326;1500;0;0;0;0;0;0;0
+6.6;12;13576;1.6953;314;1500;0;0;0;0;0;0;0
+6.7;12;13576;1.6953;302;1500;0;0;0;0;0;0;0
+6.8;12;13576;1.6953;290;1500;0;0;0;0;0;0;0
+6.9;12;13576;1.6953;279;1500;0;0;0;0;0;0;0
+7;12;13576;1.6953;269;1500;0;0;0;0;0;0;0
+7.1;12;13576;1.6953;258;1500;0;0;0;0;0;0;0
+7.2;12;13576;1.6953;249;1500;0;0;0;0;0;0;0
+7.3;12;13576;1.6953;239;1500;0;0;0;0;0;0;0
+7.4;12;13576;1.6953;230;1500;0;0;0;0;0;0;0
+7.5;12;13576;1.6953;221;1500;0;0;0;0;0;0;0
+7.6;12;13576;1.6953;213;1500;0;0;0;0;0;0;0
+7.7;12;13576;1.6953;205;1500;0;0;0;0;0;0;0
+7.8;12;13576;1.6953;197;1500;0;0;0;0;0;0;0
+7.9;12;13576;1.6953;190;1500;0;0;0;0;0;0;0
+8;12;13576;1.6953;182;1500;0;0;0;0;0;0;0
+8.1;12;13576;1.6953;169;1500;0;0;0;0;0;0;0
+8.2;12;13576;1.6953;156;1500;0;0;0;0;0;0;0
+8.3;12;13576;1.6953;144;1500;0;0;0;0;0;0;0
+8.4;12;13576;1.6953;133;1500;0;0;0;0;0;0;0
+8.5;12;13576;1.6953;123;1500;0;0;0;0;0;0;0
+8.6;12;13576;1.6953;114;1500;0;0;0;0;0;0;0
+8.7;12;13576;1.6953;105;1500;0;0;0;0;0;0;0
+8.8;12;13576;1.6953;97;1500;0;0;0;0;0;0;0
+8.9;12;13576;1.6953;90;1500;0;0;0;0;0;0;0
+9;12;13576;1.6953;83;1500;0;0;0;0;0;0;0
+9.1;12;13576;1.6953;77;1500;0;0;0;0;0;0;0
+9.2;12;13576;1.6953;71;1500;0;0;0;0;0;0;0
+9.3;12;13576;1.6953;66;1500;0;0;0;0;0;0;0
+9.4;12;13576;1.6953;61;1500;0;0;0;0;0;0;0
+9.5;12;13576;1.6953;56;1500;0;0;0;0;0;0;0
+9.6;12;13576;1.6953;52;1500;0;0;0;0;0;0;0
+9.7;12;13576;1.6953;48;1500;0;0;0;0;0;0;0
+9.8;12;13576;1.6953;44;1500;0;0;0;0;0;0;0
+9.9;12;13576;1.6953;41;1500;0;0;0;0;0;0;0
+10;12;13576;1.6953;38;1500;0;0;0;0;0;0;0
+10.1;12;13576;1.6953;35;1500;0;0;0;0;0;0;0
+10.2;12;13576;1.6953;32;1500;0;0;0;0;0;0;0
+10.3;12;13576;1.6953;30;1500;0;0;0;0;0;0;0
+10.4;12;13576;1.6953;28;1500;0;0;0;0;0;0;0
+10.5;12;13576;1.6953;25;1500;0;0;0;0;0;0;0
+10.6;12;13576;1.6953;24;1500;0;0;0;0;0;0;0
+10.7;12;13576;1.6953;22;1500;0;0;0;0;0;0;0
+10.8;12;13576;1.6953;20;1500;0;0;0;0;0;0;0
+10.9;12;13576;1.6953;19;1500;0;0;0;0;0;0;0
+11;12;13576;1.6953;17;1500;0;0;0;0;0;0;0
+11.1;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+11.2;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+11.3;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+11.4;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+11.5;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+11.6;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+11.7;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+11.8;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+11.9;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+12;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+12.1;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+12.2;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+12.3;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+12.4;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+12.5;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+12.6;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+12.7;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+12.8;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+12.9;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+13;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+13.1;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+13.2;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+13.3;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+13.4;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+13.5;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+13.6;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+13.7;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+13.8;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+13.9;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+14;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+14.1;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+14.2;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+14.3;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+14.4;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+14.5;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+14.6;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+14.7;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+14.8;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+14.9;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+15;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+15.1;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+15.2;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+15.3;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+15.4;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+15.5;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+15.6;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+15.7;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+15.8;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+15.9;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+16;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+16.1;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+16.2;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+16.3;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+16.4;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+16.5;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+16.6;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+16.7;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+16.8;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+16.9;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+17;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+17.1;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+17.2;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+17.3;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+17.4;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+17.5;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+17.6;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+17.7;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+17.8;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+17.9;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+18;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+18.1;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+18.2;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+18.3;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+18.4;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+18.5;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+18.6;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+18.7;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+18.8;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+18.9;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+19;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+19.1;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+19.2;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+19.3;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+19.4;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+19.5;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+19.6;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+19.7;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+19.8;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+19.9;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
+20;12;13576;1.6953;0;1500;0;0;0;0;0;0;0
diff --git a/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs13_cdlc_mimo2x2_dl.csv b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs13_cdlc_mimo2x2_dl.csv
new file mode 100644
index 0000000000..e5b82ae977
--- /dev/null
+++ b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs13_cdlc_mimo2x2_dl.csv
@@ -0,0 +1,302 @@
+SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
+-10;13;15112;1.9141;1500;1500;0;0;0;0;0;0;0
+-9.9;13;15112;1.9141;1500;1500;0;0;0;0;0;0;0
+-9.8;13;15112;1.9141;1500;1500;0;0;0;0;0;0;0
+-9.7;13;15112;1.9141;1500;1500;0;0;0;0;0;0;0
+-9.6;13;15112;1.9141;1500;1500;0;0;0;0;0;0;0
+-9.5;13;15112;1.9141;1500;1500;0;0;0;0;0;0;0
+-9.4;13;15112;1.9141;1500;1500;0;0;0;0;0;0;0
+-9.3;13;15112;1.9141;1500;1500;0;0;0;0;0;0;0
+-9.2;13;15112;1.9141;1500;1500;0;0;0;0;0;0;0
+-9.1;13;15112;1.9141;1500;1500;0;0;0;0;0;0;0
+-9;13;15112;1.9141;1500;1500;0;0;0;0;0;0;0
+-8.9;13;15112;1.9141;1500;1500;0;0;0;0;0;0;0
+-8.8;13;15112;1.9141;1500;1500;0;0;0;0;0;0;0
+-8.7;13;15112;1.9141;1500;1500;0;0;0;0;0;0;0
+-8.6;13;15112;1.9141;1500;1500;0;0;0;0;0;0;0
+-8.5;13;15112;1.9141;1500;1500;0;0;0;0;0;0;0
+-8.4;13;15112;1.9141;1500;1500;0;0;0;0;0;0;0
+-8.3;13;15112;1.9141;1500;1500;0;0;0;0;0;0;0
+-8.2;13;15112;1.9141;1500;1500;0;0;0;0;0;0;0
+-8.1;13;15112;1.9141;1500;1500;0;0;0;0;0;0;0
+-8;13;15112;1.9141;1500;1500;0;0;0;0;0;0;0
+-7.9;13;15112;1.9141;1500;1500;0;0;0;0;0;0;0
+-7.8;13;15112;1.9141;1500;1500;0;0;0;0;0;0;0
+-7.7;13;15112;1.9141;1500;1500;0;0;0;0;0;0;0
+-7.6;13;15112;1.9141;1500;1500;0;0;0;0;0;0;0
+-7.5;13;15112;1.9141;1500;1500;0;0;0;0;0;0;0
+-7.4;13;15112;1.9141;1500;1500;0;0;0;0;0;0;0
+-7.3;13;15112;1.9141;1500;1500;0;0;0;0;0;0;0
+-7.2;13;15112;1.9141;1500;1500;0;0;0;0;0;0;0
+-7.1;13;15112;1.9141;1500;1500;0;0;0;0;0;0;0
+-7;13;15112;1.9141;1500;1500;0;0;0;0;0;0;0
+-6.9;13;15112;1.9141;1500;1500;0;0;0;0;0;0;0
+-6.8;13;15112;1.9141;1499;1500;0;0;0;0;0;0;0
+-6.7;13;15112;1.9141;1499;1500;0;0;0;0;0;0;0
+-6.6;13;15112;1.9141;1499;1500;0;0;0;0;0;0;0
+-6.5;13;15112;1.9141;1498;1500;0;0;0;0;0;0;0
+-6.4;13;15112;1.9141;1498;1500;0;0;0;0;0;0;0
+-6.3;13;15112;1.9141;1498;1500;0;0;0;0;0;0;0
+-6.2;13;15112;1.9141;1497;1500;0;0;0;0;0;0;0
+-6.1;13;15112;1.9141;1497;1500;0;0;0;0;0;0;0
+-6;13;15112;1.9141;1497;1500;0;0;0;0;0;0;0
+-5.9;13;15112;1.9141;1496;1500;0;0;0;0;0;0;0
+-5.8;13;15112;1.9141;1496;1500;0;0;0;0;0;0;0
+-5.7;13;15112;1.9141;1496;1500;0;0;0;0;0;0;0
+-5.6;13;15112;1.9141;1495;1500;0;0;0;0;0;0;0
+-5.5;13;15112;1.9141;1495;1500;0;0;0;0;0;0;0
+-5.4;13;15112;1.9141;1495;1500;0;0;0;0;0;0;0
+-5.3;13;15112;1.9141;1494;1500;0;0;0;0;0;0;0
+-5.2;13;15112;1.9141;1494;1500;0;0;0;0;0;0;0
+-5.1;13;15112;1.9141;1494;1500;0;0;0;0;0;0;0
+-5;13;15112;1.9141;1493;1500;0;0;0;0;0;0;0
+-4.9;13;15112;1.9141;1493;1500;0;0;0;0;0;0;0
+-4.8;13;15112;1.9141;1493;1500;0;0;0;0;0;0;0
+-4.7;13;15112;1.9141;1493;1500;0;0;0;0;0;0;0
+-4.6;13;15112;1.9141;1492;1500;0;0;0;0;0;0;0
+-4.5;13;15112;1.9141;1492;1500;0;0;0;0;0;0;0
+-4.4;13;15112;1.9141;1492;1500;0;0;0;0;0;0;0
+-4.3;13;15112;1.9141;1491;1500;0;0;0;0;0;0;0
+-4.2;13;15112;1.9141;1491;1500;0;0;0;0;0;0;0
+-4.1;13;15112;1.9141;1491;1500;0;0;0;0;0;0;0
+-4;13;15112;1.9141;1490;1500;0;0;0;0;0;0;0
+-3.9;13;15112;1.9141;1483;1500;0;0;0;0;0;0;0
+-3.8;13;15112;1.9141;1475;1500;0;0;0;0;0;0;0
+-3.7;13;15112;1.9141;1467;1500;0;0;0;0;0;0;0
+-3.6;13;15112;1.9141;1460;1500;0;0;0;0;0;0;0
+-3.5;13;15112;1.9141;1452;1500;0;0;0;0;0;0;0
+-3.4;13;15112;1.9141;1445;1500;0;0;0;0;0;0;0
+-3.3;13;15112;1.9141;1437;1500;0;0;0;0;0;0;0
+-3.2;13;15112;1.9141;1430;1500;0;0;0;0;0;0;0
+-3.1;13;15112;1.9141;1423;1500;0;0;0;0;0;0;0
+-3;13;15112;1.9141;1415;1500;0;0;0;0;0;0;0
+-2.9;13;15112;1.9141;1408;1500;0;0;0;0;0;0;0
+-2.8;13;15112;1.9141;1401;1500;0;0;0;0;0;0;0
+-2.7;13;15112;1.9141;1394;1500;0;0;0;0;0;0;0
+-2.6;13;15112;1.9141;1387;1500;0;0;0;0;0;0;0
+-2.5;13;15112;1.9141;1379;1500;0;0;0;0;0;0;0
+-2.4;13;15112;1.9141;1372;1500;0;0;0;0;0;0;0
+-2.3;13;15112;1.9141;1365;1500;0;0;0;0;0;0;0
+-2.2;13;15112;1.9141;1358;1500;0;0;0;0;0;0;0
+-2.1;13;15112;1.9141;1351;1500;0;0;0;0;0;0;0
+-2;13;15112;1.9141;1344;1500;0;0;0;0;0;0;0
+-1.9;13;15112;1.9141;1337;1500;0;0;0;0;0;0;0
+-1.8;13;15112;1.9141;1331;1500;0;0;0;0;0;0;0
+-1.7;13;15112;1.9141;1324;1500;0;0;0;0;0;0;0
+-1.6;13;15112;1.9141;1317;1500;0;0;0;0;0;0;0
+-1.5;13;15112;1.9141;1310;1500;0;0;0;0;0;0;0
+-1.4;13;15112;1.9141;1303;1500;0;0;0;0;0;0;0
+-1.3;13;15112;1.9141;1297;1500;0;0;0;0;0;0;0
+-1.2;13;15112;1.9141;1290;1500;0;0;0;0;0;0;0
+-1.1;13;15112;1.9141;1283;1500;0;0;0;0;0;0;0
+-1;13;15112;1.9141;1277;1500;0;0;0;0;0;0;0
+-0.9;13;15112;1.9141;1264;1500;0;0;0;0;0;0;0
+-0.8;13;15112;1.9141;1252;1500;0;0;0;0;0;0;0
+-0.7;13;15112;1.9141;1239;1500;0;0;0;0;0;0;0
+-0.6;13;15112;1.9141;1227;1500;0;0;0;0;0;0;0
+-0.5;13;15112;1.9141;1215;1500;0;0;0;0;0;0;0
+-0.4;13;15112;1.9141;1202;1500;0;0;0;0;0;0;0
+-0.3;13;15112;1.9141;1191;1500;0;0;0;0;0;0;0
+-0.2;13;15112;1.9141;1179;1500;0;0;0;0;0;0;0
+-0.1;13;15112;1.9141;1167;1500;0;0;0;0;0;0;0
+0;13;15112;1.9141;1155;1500;0;0;0;0;0;0;0
+0.1;13;15112;1.9141;1144;1500;0;0;0;0;0;0;0
+0.2;13;15112;1.9141;1133;1500;0;0;0;0;0;0;0
+0.3;13;15112;1.9141;1121;1500;0;0;0;0;0;0;0
+0.4;13;15112;1.9141;1110;1500;0;0;0;0;0;0;0
+0.5;13;15112;1.9141;1099;1500;0;0;0;0;0;0;0
+0.6;13;15112;1.9141;1088;1500;0;0;0;0;0;0;0
+0.7;13;15112;1.9141;1077;1500;0;0;0;0;0;0;0
+0.8;13;15112;1.9141;1067;1500;0;0;0;0;0;0;0
+0.9;13;15112;1.9141;1056;1500;0;0;0;0;0;0;0
+1;13;15112;1.9141;1045;1500;0;0;0;0;0;0;0
+1.1;13;15112;1.9141;1035;1500;0;0;0;0;0;0;0
+1.2;13;15112;1.9141;1025;1500;0;0;0;0;0;0;0
+1.3;13;15112;1.9141;1015;1500;0;0;0;0;0;0;0
+1.4;13;15112;1.9141;1005;1500;0;0;0;0;0;0;0
+1.5;13;15112;1.9141;995;1500;0;0;0;0;0;0;0
+1.6;13;15112;1.9141;985;1500;0;0;0;0;0;0;0
+1.7;13;15112;1.9141;975;1500;0;0;0;0;0;0;0
+1.8;13;15112;1.9141;965;1500;0;0;0;0;0;0;0
+1.9;13;15112;1.9141;956;1500;0;0;0;0;0;0;0
+2;13;15112;1.9141;946;1500;0;0;0;0;0;0;0
+2.1;13;15112;1.9141;936;1500;0;0;0;0;0;0;0
+2.2;13;15112;1.9141;926;1500;0;0;0;0;0;0;0
+2.3;13;15112;1.9141;916;1500;0;0;0;0;0;0;0
+2.4;13;15112;1.9141;907;1500;0;0;0;0;0;0;0
+2.5;13;15112;1.9141;897;1500;0;0;0;0;0;0;0
+2.6;13;15112;1.9141;888;1500;0;0;0;0;0;0;0
+2.7;13;15112;1.9141;878;1500;0;0;0;0;0;0;0
+2.8;13;15112;1.9141;869;1500;0;0;0;0;0;0;0
+2.9;13;15112;1.9141;860;1500;0;0;0;0;0;0;0
+3;13;15112;1.9141;851;1500;0;0;0;0;0;0;0
+3.1;13;15112;1.9141;842;1500;0;0;0;0;0;0;0
+3.2;13;15112;1.9141;833;1500;0;0;0;0;0;0;0
+3.3;13;15112;1.9141;824;1500;0;0;0;0;0;0;0
+3.4;13;15112;1.9141;815;1500;0;0;0;0;0;0;0
+3.5;13;15112;1.9141;807;1500;0;0;0;0;0;0;0
+3.6;13;15112;1.9141;798;1500;0;0;0;0;0;0;0
+3.7;13;15112;1.9141;790;1500;0;0;0;0;0;0;0
+3.8;13;15112;1.9141;781;1500;0;0;0;0;0;0;0
+3.9;13;15112;1.9141;773;1500;0;0;0;0;0;0;0
+4;13;15112;1.9141;765;1500;0;0;0;0;0;0;0
+4.1;13;15112;1.9141;757;1500;0;0;0;0;0;0;0
+4.2;13;15112;1.9141;749;1500;0;0;0;0;0;0;0
+4.3;13;15112;1.9141;741;1500;0;0;0;0;0;0;0
+4.4;13;15112;1.9141;733;1500;0;0;0;0;0;0;0
+4.5;13;15112;1.9141;725;1500;0;0;0;0;0;0;0
+4.6;13;15112;1.9141;718;1500;0;0;0;0;0;0;0
+4.7;13;15112;1.9141;710;1500;0;0;0;0;0;0;0
+4.8;13;15112;1.9141;703;1500;0;0;0;0;0;0;0
+4.9;13;15112;1.9141;695;1500;0;0;0;0;0;0;0
+5;13;15112;1.9141;688;1500;0;0;0;0;0;0;0
+5.1;13;15112;1.9141;668;1500;0;0;0;0;0;0;0
+5.2;13;15112;1.9141;649;1500;0;0;0;0;0;0;0
+5.3;13;15112;1.9141;630;1500;0;0;0;0;0;0;0
+5.4;13;15112;1.9141;612;1500;0;0;0;0;0;0;0
+5.5;13;15112;1.9141;594;1500;0;0;0;0;0;0;0
+5.6;13;15112;1.9141;577;1500;0;0;0;0;0;0;0
+5.7;13;15112;1.9141;561;1500;0;0;0;0;0;0;0
+5.8;13;15112;1.9141;545;1500;0;0;0;0;0;0;0
+5.9;13;15112;1.9141;529;1500;0;0;0;0;0;0;0
+6;13;15112;1.9141;514;1500;0;0;0;0;0;0;0
+6.1;13;15112;1.9141;499;1500;0;0;0;0;0;0;0
+6.2;13;15112;1.9141;485;1500;0;0;0;0;0;0;0
+6.3;13;15112;1.9141;471;1500;0;0;0;0;0;0;0
+6.4;13;15112;1.9141;457;1500;0;0;0;0;0;0;0
+6.5;13;15112;1.9141;444;1500;0;0;0;0;0;0;0
+6.6;13;15112;1.9141;431;1500;0;0;0;0;0;0;0
+6.7;13;15112;1.9141;419;1500;0;0;0;0;0;0;0
+6.8;13;15112;1.9141;407;1500;0;0;0;0;0;0;0
+6.9;13;15112;1.9141;395;1500;0;0;0;0;0;0;0
+7;13;15112;1.9141;384;1500;0;0;0;0;0;0;0
+7.1;13;15112;1.9141;373;1500;0;0;0;0;0;0;0
+7.2;13;15112;1.9141;362;1500;0;0;0;0;0;0;0
+7.3;13;15112;1.9141;351;1500;0;0;0;0;0;0;0
+7.4;13;15112;1.9141;341;1500;0;0;0;0;0;0;0
+7.5;13;15112;1.9141;332;1500;0;0;0;0;0;0;0
+7.6;13;15112;1.9141;322;1500;0;0;0;0;0;0;0
+7.7;13;15112;1.9141;313;1500;0;0;0;0;0;0;0
+7.8;13;15112;1.9141;304;1500;0;0;0;0;0;0;0
+7.9;13;15112;1.9141;295;1500;0;0;0;0;0;0;0
+8;13;15112;1.9141;287;1500;0;0;0;0;0;0;0
+8.1;13;15112;1.9141;270;1500;0;0;0;0;0;0;0
+8.2;13;15112;1.9141;254;1500;0;0;0;0;0;0;0
+8.3;13;15112;1.9141;239;1500;0;0;0;0;0;0;0
+8.4;13;15112;1.9141;225;1500;0;0;0;0;0;0;0
+8.5;13;15112;1.9141;211;1500;0;0;0;0;0;0;0
+8.6;13;15112;1.9141;199;1500;0;0;0;0;0;0;0
+8.7;13;15112;1.9141;187;1500;0;0;0;0;0;0;0
+8.8;13;15112;1.9141;176;1500;0;0;0;0;0;0;0
+8.9;13;15112;1.9141;166;1500;0;0;0;0;0;0;0
+9;13;15112;1.9141;156;1500;0;0;0;0;0;0;0
+9.1;13;15112;1.9141;147;1500;0;0;0;0;0;0;0
+9.2;13;15112;1.9141;138;1500;0;0;0;0;0;0;0
+9.3;13;15112;1.9141;130;1500;0;0;0;0;0;0;0
+9.4;13;15112;1.9141;122;1500;0;0;0;0;0;0;0
+9.5;13;15112;1.9141;115;1500;0;0;0;0;0;0;0
+9.6;13;15112;1.9141;108;1500;0;0;0;0;0;0;0
+9.7;13;15112;1.9141;102;1500;0;0;0;0;0;0;0
+9.8;13;15112;1.9141;96;1500;0;0;0;0;0;0;0
+9.9;13;15112;1.9141;90;1500;0;0;0;0;0;0;0
+10;13;15112;1.9141;85;1500;0;0;0;0;0;0;0
+10.1;13;15112;1.9141;80;1500;0;0;0;0;0;0;0
+10.2;13;15112;1.9141;75;1500;0;0;0;0;0;0;0
+10.3;13;15112;1.9141;71;1500;0;0;0;0;0;0;0
+10.4;13;15112;1.9141;67;1500;0;0;0;0;0;0;0
+10.5;13;15112;1.9141;63;1500;0;0;0;0;0;0;0
+10.6;13;15112;1.9141;59;1500;0;0;0;0;0;0;0
+10.7;13;15112;1.9141;56;1500;0;0;0;0;0;0;0
+10.8;13;15112;1.9141;52;1500;0;0;0;0;0;0;0
+10.9;13;15112;1.9141;49;1500;0;0;0;0;0;0;0
+11;13;15112;1.9141;46;1500;0;0;0;0;0;0;0
+11.1;13;15112;1.9141;41;1500;0;0;0;0;0;0;0
+11.2;13;15112;1.9141;37;1500;0;0;0;0;0;0;0
+11.3;13;15112;1.9141;32;1500;0;0;0;0;0;0;0
+11.4;13;15112;1.9141;29;1500;0;0;0;0;0;0;0
+11.5;13;15112;1.9141;26;1500;0;0;0;0;0;0;0
+11.6;13;15112;1.9141;23;1500;0;0;0;0;0;0;0
+11.7;13;15112;1.9141;20;1500;0;0;0;0;0;0;0
+11.8;13;15112;1.9141;18;1500;0;0;0;0;0;0;0
+11.9;13;15112;1.9141;16;1500;0;0;0;0;0;0;0
+12;13;15112;1.9141;14;1500;0;0;0;0;0;0;0
+12.1;13;15112;1.9141;13;1500;0;0;0;0;0;0;0
+12.2;13;15112;1.9141;11;1500;0;0;0;0;0;0;0
+12.3;13;15112;1.9141;10;1500;0;0;0;0;0;0;0
+12.4;13;15112;1.9141;9;1500;0;0;0;0;0;0;0
+12.5;13;15112;1.9141;8;1500;0;0;0;0;0;0;0
+12.6;13;15112;1.9141;7;1500;0;0;0;0;0;0;0
+12.7;13;15112;1.9141;6;1500;0;0;0;0;0;0;0
+12.8;13;15112;1.9141;6;1500;0;0;0;0;0;0;0
+12.9;13;15112;1.9141;5;1500;0;0;0;0;0;0;0
+13;13;15112;1.9141;4;1500;0;0;0;0;0;0;0
+13.1;13;15112;1.9141;4;1500;0;0;0;0;0;0;0
+13.2;13;15112;1.9141;3;1500;0;0;0;0;0;0;0
+13.3;13;15112;1.9141;3;1500;0;0;0;0;0;0;0
+13.4;13;15112;1.9141;3;1500;0;0;0;0;0;0;0
+13.5;13;15112;1.9141;2;1500;0;0;0;0;0;0;0
+13.6;13;15112;1.9141;2;1500;0;0;0;0;0;0;0
+13.7;13;15112;1.9141;2;1500;0;0;0;0;0;0;0
+13.8;13;15112;1.9141;2;1500;0;0;0;0;0;0;0
+13.9;13;15112;1.9141;2;1500;0;0;0;0;0;0;0
+14;13;15112;1.9141;1;1500;0;0;0;0;0;0;0
+14.1;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+14.2;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+14.3;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+14.4;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+14.5;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+14.6;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+14.7;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+14.8;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+14.9;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+15;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+15.1;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+15.2;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+15.3;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+15.4;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+15.5;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+15.6;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+15.7;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+15.8;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+15.9;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+16;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+16.1;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+16.2;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+16.3;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+16.4;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+16.5;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+16.6;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+16.7;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+16.8;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+16.9;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+17;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+17.1;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+17.2;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+17.3;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+17.4;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+17.5;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+17.6;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+17.7;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+17.8;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+17.9;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+18;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+18.1;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+18.2;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+18.3;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+18.4;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+18.5;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+18.6;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+18.7;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+18.8;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+18.9;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+19;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+19.1;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+19.2;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+19.3;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+19.4;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+19.5;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+19.6;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+19.7;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+19.8;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+19.9;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
+20;13;15112;1.9141;0;1500;0;0;0;0;0;0;0
diff --git a/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs14_cdlc_mimo2x2_dl.csv b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs14_cdlc_mimo2x2_dl.csv
new file mode 100644
index 0000000000..defc88f8ee
--- /dev/null
+++ b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs14_cdlc_mimo2x2_dl.csv
@@ -0,0 +1,302 @@
+SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
+-5;14;17424;2.1602;1500;1500;0;0;0;0;0;0;0
+-4.9;14;15112;2.1602;1498;1500;0;0;0;0;0;0;0
+-4.8;14;15112;2.1602;1495;1500;0;0;0;0;0;0;0
+-4.7;14;15112;2.1602;1493;1500;0;0;0;0;0;0;0
+-4.6;14;15112;2.1602;1491;1500;0;0;0;0;0;0;0
+-4.5;14;15112;2.1602;1488;1500;0;0;0;0;0;0;0
+-4.4;14;15112;2.1602;1486;1500;0;0;0;0;0;0;0
+-4.3;14;15112;2.1602;1484;1500;0;0;0;0;0;0;0
+-4.2;14;15112;2.1602;1482;1500;0;0;0;0;0;0;0
+-4.1;14;15112;2.1602;1479;1500;0;0;0;0;0;0;0
+-4;14;15112;2.1602;1477;1500;0;0;0;0;0;0;0
+-3.9;14;15112;2.1602;1475;1500;0;0;0;0;0;0;0
+-3.8;14;15112;2.1602;1472;1500;0;0;0;0;0;0;0
+-3.7;14;15112;2.1602;1470;1500;0;0;0;0;0;0;0
+-3.6;14;15112;2.1602;1468;1500;0;0;0;0;0;0;0
+-3.5;14;15112;2.1602;1466;1500;0;0;0;0;0;0;0
+-3.4;14;15112;2.1602;1463;1500;0;0;0;0;0;0;0
+-3.3;14;15112;2.1602;1461;1500;0;0;0;0;0;0;0
+-3.2;14;15112;2.1602;1459;1500;0;0;0;0;0;0;0
+-3.1;14;15112;2.1602;1457;1500;0;0;0;0;0;0;0
+-3;14;15112;2.1602;1454;1500;0;0;0;0;0;0;0
+-2.9;14;15112;2.1602;1452;1500;0;0;0;0;0;0;0
+-2.8;14;15112;2.1602;1450;1500;0;0;0;0;0;0;0
+-2.7;14;15112;2.1602;1448;1500;0;0;0;0;0;0;0
+-2.6;14;15112;2.1602;1445;1500;0;0;0;0;0;0;0
+-2.5;14;15112;2.1602;1443;1500;0;0;0;0;0;0;0
+-2.4;14;15112;2.1602;1441;1500;0;0;0;0;0;0;0
+-2.3;14;15112;2.1602;1439;1500;0;0;0;0;0;0;0
+-2.2;14;15112;2.1602;1437;1500;0;0;0;0;0;0;0
+-2.1;14;15112;2.1602;1434;1500;0;0;0;0;0;0;0
+-2;14;15112;2.1602;1432;1500;0;0;0;0;0;0;0
+-1.9;14;15112;2.1602;1421;1500;0;0;0;0;0;0;0
+-1.8;14;15112;2.1602;1411;1500;0;0;0;0;0;0;0
+-1.7;14;15112;2.1602;1400;1500;0;0;0;0;0;0;0
+-1.6;14;15112;2.1602;1389;1500;0;0;0;0;0;0;0
+-1.5;14;15112;2.1602;1379;1500;0;0;0;0;0;0;0
+-1.4;14;15112;2.1602;1369;1500;0;0;0;0;0;0;0
+-1.3;14;15112;2.1602;1358;1500;0;0;0;0;0;0;0
+-1.2;14;15112;2.1602;1348;1500;0;0;0;0;0;0;0
+-1.1;14;15112;2.1602;1338;1500;0;0;0;0;0;0;0
+-1;14;15112;2.1602;1328;1500;0;0;0;0;0;0;0
+-0.9;14;15112;2.1602;1318;1500;0;0;0;0;0;0;0
+-0.8;14;15112;2.1602;1308;1500;0;0;0;0;0;0;0
+-0.7;14;15112;2.1602;1298;1500;0;0;0;0;0;0;0
+-0.6;14;15112;2.1602;1288;1500;0;0;0;0;0;0;0
+-0.5;14;15112;2.1602;1278;1500;0;0;0;0;0;0;0
+-0.4;14;15112;2.1602;1269;1500;0;0;0;0;0;0;0
+-0.3;14;15112;2.1602;1259;1500;0;0;0;0;0;0;0
+-0.2;14;15112;2.1602;1250;1500;0;0;0;0;0;0;0
+-0.1;14;15112;2.1602;1240;1500;0;0;0;0;0;0;0
+0;14;15112;2.1602;1231;1500;0;0;0;0;0;0;0
+0.1;14;15112;2.1602;1222;1500;0;0;0;0;0;0;0
+0.2;14;15112;2.1602;1212;1500;0;0;0;0;0;0;0
+0.3;14;15112;2.1602;1203;1500;0;0;0;0;0;0;0
+0.4;14;15112;2.1602;1194;1500;0;0;0;0;0;0;0
+0.5;14;15112;2.1602;1185;1500;0;0;0;0;0;0;0
+0.6;14;15112;2.1602;1176;1500;0;0;0;0;0;0;0
+0.7;14;15112;2.1602;1167;1500;0;0;0;0;0;0;0
+0.8;14;15112;2.1602;1159;1500;0;0;0;0;0;0;0
+0.9;14;15112;2.1602;1150;1500;0;0;0;0;0;0;0
+1;14;15112;2.1602;1141;1500;0;0;0;0;0;0;0
+1.1;14;15112;2.1602;1131;1500;0;0;0;0;0;0;0
+1.2;14;15112;2.1602;1120;1500;0;0;0;0;0;0;0
+1.3;14;15112;2.1602;1110;1500;0;0;0;0;0;0;0
+1.4;14;15112;2.1602;1100;1500;0;0;0;0;0;0;0
+1.5;14;15112;2.1602;1090;1500;0;0;0;0;0;0;0
+1.6;14;15112;2.1602;1080;1500;0;0;0;0;0;0;0
+1.7;14;15112;2.1602;1070;1500;0;0;0;0;0;0;0
+1.8;14;15112;2.1602;1060;1500;0;0;0;0;0;0;0
+1.9;14;15112;2.1602;1050;1500;0;0;0;0;0;0;0
+2;14;15112;2.1602;1040;1500;0;0;0;0;0;0;0
+2.1;14;15112;2.1602;1031;1500;0;0;0;0;0;0;0
+2.2;14;15112;2.1602;1021;1500;0;0;0;0;0;0;0
+2.3;14;15112;2.1602;1012;1500;0;0;0;0;0;0;0
+2.4;14;15112;2.1602;1002;1500;0;0;0;0;0;0;0
+2.5;14;15112;2.1602;993;1500;0;0;0;0;0;0;0
+2.6;14;15112;2.1602;984;1500;0;0;0;0;0;0;0
+2.7;14;15112;2.1602;975;1500;0;0;0;0;0;0;0
+2.8;14;15112;2.1602;966;1500;0;0;0;0;0;0;0
+2.9;14;15112;2.1602;957;1500;0;0;0;0;0;0;0
+3;14;15112;2.1602;948;1500;0;0;0;0;0;0;0
+3.1;14;15112;2.1602;939;1500;0;0;0;0;0;0;0
+3.2;14;15112;2.1602;931;1500;0;0;0;0;0;0;0
+3.3;14;15112;2.1602;922;1500;0;0;0;0;0;0;0
+3.4;14;15112;2.1602;914;1500;0;0;0;0;0;0;0
+3.5;14;15112;2.1602;905;1500;0;0;0;0;0;0;0
+3.6;14;15112;2.1602;897;1500;0;0;0;0;0;0;0
+3.7;14;15112;2.1602;889;1500;0;0;0;0;0;0;0
+3.8;14;15112;2.1602;880;1500;0;0;0;0;0;0;0
+3.9;14;15112;2.1602;872;1500;0;0;0;0;0;0;0
+4;14;15112;2.1602;864;1500;0;0;0;0;0;0;0
+4.1;14;15112;2.1602;854;1500;0;0;0;0;0;0;0
+4.2;14;15112;2.1602;845;1500;0;0;0;0;0;0;0
+4.3;14;15112;2.1602;835;1500;0;0;0;0;0;0;0
+4.4;14;15112;2.1602;826;1500;0;0;0;0;0;0;0
+4.5;14;15112;2.1602;816;1500;0;0;0;0;0;0;0
+4.6;14;15112;2.1602;807;1500;0;0;0;0;0;0;0
+4.7;14;15112;2.1602;798;1500;0;0;0;0;0;0;0
+4.8;14;15112;2.1602;789;1500;0;0;0;0;0;0;0
+4.9;14;15112;2.1602;780;1500;0;0;0;0;0;0;0
+5;14;15112;2.1602;771;1500;0;0;0;0;0;0;0
+5.1;14;15112;2.1602;763;1500;0;0;0;0;0;0;0
+5.2;14;15112;2.1602;754;1500;0;0;0;0;0;0;0
+5.3;14;15112;2.1602;746;1500;0;0;0;0;0;0;0
+5.4;14;15112;2.1602;737;1500;0;0;0;0;0;0;0
+5.5;14;15112;2.1602;729;1500;0;0;0;0;0;0;0
+5.6;14;15112;2.1602;721;1500;0;0;0;0;0;0;0
+5.7;14;15112;2.1602;712;1500;0;0;0;0;0;0;0
+5.8;14;15112;2.1602;704;1500;0;0;0;0;0;0;0
+5.9;14;15112;2.1602;696;1500;0;0;0;0;0;0;0
+6;14;15112;2.1602;689;1500;0;0;0;0;0;0;0
+6.1;14;15112;2.1602;681;1500;0;0;0;0;0;0;0
+6.2;14;15112;2.1602;673;1500;0;0;0;0;0;0;0
+6.3;14;15112;2.1602;665;1500;0;0;0;0;0;0;0
+6.4;14;15112;2.1602;658;1500;0;0;0;0;0;0;0
+6.5;14;15112;2.1602;650;1500;0;0;0;0;0;0;0
+6.6;14;15112;2.1602;643;1500;0;0;0;0;0;0;0
+6.7;14;15112;2.1602;636;1500;0;0;0;0;0;0;0
+6.8;14;15112;2.1602;629;1500;0;0;0;0;0;0;0
+6.9;14;15112;2.1602;622;1500;0;0;0;0;0;0;0
+7;14;15112;2.1602;615;1500;0;0;0;0;0;0;0
+7.1;14;15112;2.1602;595;1500;0;0;0;0;0;0;0
+7.2;14;15112;2.1602;576;1500;0;0;0;0;0;0;0
+7.3;14;15112;2.1602;558;1500;0;0;0;0;0;0;0
+7.4;14;15112;2.1602;541;1500;0;0;0;0;0;0;0
+7.5;14;15112;2.1602;524;1500;0;0;0;0;0;0;0
+7.6;14;15112;2.1602;507;1500;0;0;0;0;0;0;0
+7.7;14;15112;2.1602;491;1500;0;0;0;0;0;0;0
+7.8;14;15112;2.1602;476;1500;0;0;0;0;0;0;0
+7.9;14;15112;2.1602;461;1500;0;0;0;0;0;0;0
+8;14;15112;2.1602;446;1500;0;0;0;0;0;0;0
+8.1;14;15112;2.1602;432;1500;0;0;0;0;0;0;0
+8.2;14;15112;2.1602;419;1500;0;0;0;0;0;0;0
+8.3;14;15112;2.1602;405;1500;0;0;0;0;0;0;0
+8.4;14;15112;2.1602;393;1500;0;0;0;0;0;0;0
+8.5;14;15112;2.1602;380;1500;0;0;0;0;0;0;0
+8.6;14;15112;2.1602;368;1500;0;0;0;0;0;0;0
+8.7;14;15112;2.1602;357;1500;0;0;0;0;0;0;0
+8.8;14;15112;2.1602;345;1500;0;0;0;0;0;0;0
+8.9;14;15112;2.1602;334;1500;0;0;0;0;0;0;0
+9;14;15112;2.1602;324;1500;0;0;0;0;0;0;0
+9.1;14;15112;2.1602;314;1500;0;0;0;0;0;0;0
+9.2;14;15112;2.1602;304;1500;0;0;0;0;0;0;0
+9.3;14;15112;2.1602;294;1500;0;0;0;0;0;0;0
+9.4;14;15112;2.1602;285;1500;0;0;0;0;0;0;0
+9.5;14;15112;2.1602;276;1500;0;0;0;0;0;0;0
+9.6;14;15112;2.1602;267;1500;0;0;0;0;0;0;0
+9.7;14;15112;2.1602;259;1500;0;0;0;0;0;0;0
+9.8;14;15112;2.1602;251;1500;0;0;0;0;0;0;0
+9.9;14;15112;2.1602;243;1500;0;0;0;0;0;0;0
+10;14;15112;2.1602;235;1500;0;0;0;0;0;0;0
+10.1;14;15112;2.1602;222;1500;0;0;0;0;0;0;0
+10.2;14;15112;2.1602;209;1500;0;0;0;0;0;0;0
+10.3;14;15112;2.1602;197;1500;0;0;0;0;0;0;0
+10.4;14;15112;2.1602;186;1500;0;0;0;0;0;0;0
+10.5;14;15112;2.1602;176;1500;0;0;0;0;0;0;0
+10.6;14;15112;2.1602;166;1500;0;0;0;0;0;0;0
+10.7;14;15112;2.1602;156;1500;0;0;0;0;0;0;0
+10.8;14;15112;2.1602;148;1500;0;0;0;0;0;0;0
+10.9;14;15112;2.1602;139;1500;0;0;0;0;0;0;0
+11;14;15112;2.1602;131;1500;0;0;0;0;0;0;0
+11.1;14;15112;2.1602;124;1500;0;0;0;0;0;0;0
+11.2;14;15112;2.1602;117;1500;0;0;0;0;0;0;0
+11.3;14;15112;2.1602;110;1500;0;0;0;0;0;0;0
+11.4;14;15112;2.1602;104;1500;0;0;0;0;0;0;0
+11.5;14;15112;2.1602;98;1500;0;0;0;0;0;0;0
+11.6;14;15112;2.1602;93;1500;0;0;0;0;0;0;0
+11.7;14;15112;2.1602;87;1500;0;0;0;0;0;0;0
+11.8;14;15112;2.1602;82;1500;0;0;0;0;0;0;0
+11.9;14;15112;2.1602;78;1500;0;0;0;0;0;0;0
+12;14;15112;2.1602;73;1500;0;0;0;0;0;0;0
+12.1;14;15112;2.1602;69;1500;0;0;0;0;0;0;0
+12.2;14;15112;2.1602;65;1500;0;0;0;0;0;0;0
+12.3;14;15112;2.1602;62;1500;0;0;0;0;0;0;0
+12.4;14;15112;2.1602;58;1500;0;0;0;0;0;0;0
+12.5;14;15112;2.1602;55;1500;0;0;0;0;0;0;0
+12.6;14;15112;2.1602;52;1500;0;0;0;0;0;0;0
+12.7;14;15112;2.1602;49;1500;0;0;0;0;0;0;0
+12.8;14;15112;2.1602;46;1500;0;0;0;0;0;0;0
+12.9;14;15112;2.1602;43;1500;0;0;0;0;0;0;0
+13;14;15112;2.1602;41;1500;0;0;0;0;0;0;0
+13.1;14;15112;2.1602;37;1500;0;0;0;0;0;0;0
+13.2;14;15112;2.1602;33;1500;0;0;0;0;0;0;0
+13.3;14;15112;2.1602;30;1500;0;0;0;0;0;0;0
+13.4;14;15112;2.1602;27;1500;0;0;0;0;0;0;0
+13.5;14;15112;2.1602;24;1500;0;0;0;0;0;0;0
+13.6;14;15112;2.1602;21;1500;0;0;0;0;0;0;0
+13.7;14;15112;2.1602;19;1500;0;0;0;0;0;0;0
+13.8;14;15112;2.1602;17;1500;0;0;0;0;0;0;0
+13.9;14;15112;2.1602;15;1500;0;0;0;0;0;0;0
+14;14;15112;2.1602;14;1500;0;0;0;0;0;0;0
+14.1;14;15112;2.1602;12;1500;0;0;0;0;0;0;0
+14.2;14;15112;2.1602;11;1500;0;0;0;0;0;0;0
+14.3;14;15112;2.1602;10;1500;0;0;0;0;0;0;0
+14.4;14;15112;2.1602;9;1500;0;0;0;0;0;0;0
+14.5;14;15112;2.1602;8;1500;0;0;0;0;0;0;0
+14.6;14;15112;2.1602;7;1500;0;0;0;0;0;0;0
+14.7;14;15112;2.1602;6;1500;0;0;0;0;0;0;0
+14.8;14;15112;2.1602;6;1500;0;0;0;0;0;0;0
+14.9;14;15112;2.1602;5;1500;0;0;0;0;0;0;0
+15;14;15112;2.1602;5;1500;0;0;0;0;0;0;0
+15.1;14;15112;2.1602;4;1500;0;0;0;0;0;0;0
+15.2;14;15112;2.1602;4;1500;0;0;0;0;0;0;0
+15.3;14;15112;2.1602;3;1500;0;0;0;0;0;0;0
+15.4;14;15112;2.1602;3;1500;0;0;0;0;0;0;0
+15.5;14;15112;2.1602;3;1500;0;0;0;0;0;0;0
+15.6;14;15112;2.1602;2;1500;0;0;0;0;0;0;0
+15.7;14;15112;2.1602;2;1500;0;0;0;0;0;0;0
+15.8;14;15112;2.1602;2;1500;0;0;0;0;0;0;0
+15.9;14;15112;2.1602;2;1500;0;0;0;0;0;0;0
+16;14;15112;2.1602;2;1500;0;0;0;0;0;0;0
+16.1;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+16.2;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+16.3;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+16.4;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+16.5;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+16.6;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+16.7;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+16.8;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+16.9;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+17;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+17.1;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+17.2;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+17.3;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+17.4;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+17.5;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+17.6;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+17.7;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+17.8;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+17.9;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+18;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+18.1;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+18.2;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+18.3;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+18.4;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+18.5;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+18.6;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+18.7;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+18.8;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+18.9;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+19;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+19.1;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+19.2;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+19.3;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+19.4;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+19.5;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+19.6;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+19.7;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+19.8;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+19.9;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+20;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+20.1;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+20.2;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+20.3;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+20.4;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+20.5;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+20.6;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+20.7;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+20.8;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+20.9;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+21;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+21.1;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+21.2;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+21.3;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+21.4;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+21.5;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+21.6;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+21.7;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+21.8;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+21.9;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+22;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+22.1;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+22.2;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+22.3;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+22.4;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+22.5;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+22.6;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+22.7;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+22.8;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+22.9;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+23;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+23.1;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+23.2;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+23.3;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+23.4;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+23.5;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+23.6;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+23.7;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+23.8;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+23.9;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+24;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+24.1;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+24.2;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+24.3;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+24.4;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+24.5;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+24.6;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+24.7;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+24.8;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+24.9;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
+25;14;15112;2.1602;0;1500;0;0;0;0;0;0;0
diff --git a/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs15_cdlc_mimo2x2_dl.csv b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs15_cdlc_mimo2x2_dl.csv
new file mode 100644
index 0000000000..cc7ba53ef8
--- /dev/null
+++ b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs15_cdlc_mimo2x2_dl.csv
@@ -0,0 +1,302 @@
+SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
+-5;15;18960;2.4063;1500;1500;0;0;0;0;0;0;0
+-4.9;15;18960;2.4063;1499;1500;0;0;0;0;0;0;0
+-4.8;15;18960;2.4063;1497;1500;0;0;0;0;0;0;0
+-4.7;15;18960;2.4063;1496;1500;0;0;0;0;0;0;0
+-4.6;15;18960;2.4063;1494;1500;0;0;0;0;0;0;0
+-4.5;15;18960;2.4063;1493;1500;0;0;0;0;0;0;0
+-4.4;15;18960;2.4063;1491;1500;0;0;0;0;0;0;0
+-4.3;15;18960;2.4063;1490;1500;0;0;0;0;0;0;0
+-4.2;15;18960;2.4063;1488;1500;0;0;0;0;0;0;0
+-4.1;15;18960;2.4063;1487;1500;0;0;0;0;0;0;0
+-4;15;18960;2.4063;1485;1500;0;0;0;0;0;0;0
+-3.9;15;18960;2.4063;1484;1500;0;0;0;0;0;0;0
+-3.8;15;18960;2.4063;1482;1500;0;0;0;0;0;0;0
+-3.7;15;18960;2.4063;1481;1500;0;0;0;0;0;0;0
+-3.6;15;18960;2.4063;1479;1500;0;0;0;0;0;0;0
+-3.5;15;18960;2.4063;1478;1500;0;0;0;0;0;0;0
+-3.4;15;18960;2.4063;1476;1500;0;0;0;0;0;0;0
+-3.3;15;18960;2.4063;1475;1500;0;0;0;0;0;0;0
+-3.2;15;18960;2.4063;1474;1500;0;0;0;0;0;0;0
+-3.1;15;18960;2.4063;1472;1500;0;0;0;0;0;0;0
+-3;15;18960;2.4063;1471;1500;0;0;0;0;0;0;0
+-2.9;15;18960;2.4063;1469;1500;0;0;0;0;0;0;0
+-2.8;15;18960;2.4063;1468;1500;0;0;0;0;0;0;0
+-2.7;15;18960;2.4063;1466;1500;0;0;0;0;0;0;0
+-2.6;15;18960;2.4063;1465;1500;0;0;0;0;0;0;0
+-2.5;15;18960;2.4063;1463;1500;0;0;0;0;0;0;0
+-2.4;15;18960;2.4063;1462;1500;0;0;0;0;0;0;0
+-2.3;15;18960;2.4063;1461;1500;0;0;0;0;0;0;0
+-2.2;15;18960;2.4063;1459;1500;0;0;0;0;0;0;0
+-2.1;15;18960;2.4063;1458;1500;0;0;0;0;0;0;0
+-2;15;18960;2.4063;1456;1500;0;0;0;0;0;0;0
+-1.9;15;18960;2.4063;1446;1500;0;0;0;0;0;0;0
+-1.8;15;18960;2.4063;1436;1500;0;0;0;0;0;0;0
+-1.7;15;18960;2.4063;1426;1500;0;0;0;0;0;0;0
+-1.6;15;18960;2.4063;1416;1500;0;0;0;0;0;0;0
+-1.5;15;18960;2.4063;1406;1500;0;0;0;0;0;0;0
+-1.4;15;18960;2.4063;1397;1500;0;0;0;0;0;0;0
+-1.3;15;18960;2.4063;1387;1500;0;0;0;0;0;0;0
+-1.2;15;18960;2.4063;1377;1500;0;0;0;0;0;0;0
+-1.1;15;18960;2.4063;1368;1500;0;0;0;0;0;0;0
+-1;15;18960;2.4063;1358;1500;0;0;0;0;0;0;0
+-0.9;15;18960;2.4063;1349;1500;0;0;0;0;0;0;0
+-0.8;15;18960;2.4063;1340;1500;0;0;0;0;0;0;0
+-0.7;15;18960;2.4063;1330;1500;0;0;0;0;0;0;0
+-0.6;15;18960;2.4063;1321;1500;0;0;0;0;0;0;0
+-0.5;15;18960;2.4063;1312;1500;0;0;0;0;0;0;0
+-0.4;15;18960;2.4063;1303;1500;0;0;0;0;0;0;0
+-0.3;15;18960;2.4063;1294;1500;0;0;0;0;0;0;0
+-0.2;15;18960;2.4063;1285;1500;0;0;0;0;0;0;0
+-0.1;15;18960;2.4063;1276;1500;0;0;0;0;0;0;0
+0;15;18960;2.4063;1267;1500;0;0;0;0;0;0;0
+0.1;15;18960;2.4063;1259;1500;0;0;0;0;0;0;0
+0.2;15;18960;2.4063;1250;1500;0;0;0;0;0;0;0
+0.3;15;18960;2.4063;1241;1500;0;0;0;0;0;0;0
+0.4;15;18960;2.4063;1233;1500;0;0;0;0;0;0;0
+0.5;15;18960;2.4063;1224;1500;0;0;0;0;0;0;0
+0.6;15;18960;2.4063;1216;1500;0;0;0;0;0;0;0
+0.7;15;18960;2.4063;1207;1500;0;0;0;0;0;0;0
+0.8;15;18960;2.4063;1199;1500;0;0;0;0;0;0;0
+0.9;15;18960;2.4063;1190;1500;0;0;0;0;0;0;0
+1;15;18960;2.4063;1182;1500;0;0;0;0;0;0;0
+1.1;15;18960;2.4063;1171;1500;0;0;0;0;0;0;0
+1.2;15;18960;2.4063;1160;1500;0;0;0;0;0;0;0
+1.3;15;18960;2.4063;1150;1500;0;0;0;0;0;0;0
+1.4;15;18960;2.4063;1139;1500;0;0;0;0;0;0;0
+1.5;15;18960;2.4063;1128;1500;0;0;0;0;0;0;0
+1.6;15;18960;2.4063;1118;1500;0;0;0;0;0;0;0
+1.7;15;18960;2.4063;1107;1500;0;0;0;0;0;0;0
+1.8;15;18960;2.4063;1097;1500;0;0;0;0;0;0;0
+1.9;15;18960;2.4063;1087;1500;0;0;0;0;0;0;0
+2;15;18960;2.4063;1077;1500;0;0;0;0;0;0;0
+2.1;15;18960;2.4063;1067;1500;0;0;0;0;0;0;0
+2.2;15;18960;2.4063;1057;1500;0;0;0;0;0;0;0
+2.3;15;18960;2.4063;1047;1500;0;0;0;0;0;0;0
+2.4;15;18960;2.4063;1037;1500;0;0;0;0;0;0;0
+2.5;15;18960;2.4063;1028;1500;0;0;0;0;0;0;0
+2.6;15;18960;2.4063;1018;1500;0;0;0;0;0;0;0
+2.7;15;18960;2.4063;1009;1500;0;0;0;0;0;0;0
+2.8;15;18960;2.4063;999;1500;0;0;0;0;0;0;0
+2.9;15;18960;2.4063;990;1500;0;0;0;0;0;0;0
+3;15;18960;2.4063;981;1500;0;0;0;0;0;0;0
+3.1;15;18960;2.4063;972;1500;0;0;0;0;0;0;0
+3.2;15;18960;2.4063;963;1500;0;0;0;0;0;0;0
+3.3;15;18960;2.4063;954;1500;0;0;0;0;0;0;0
+3.4;15;18960;2.4063;945;1500;0;0;0;0;0;0;0
+3.5;15;18960;2.4063;936;1500;0;0;0;0;0;0;0
+3.6;15;18960;2.4063;927;1500;0;0;0;0;0;0;0
+3.7;15;18960;2.4063;919;1500;0;0;0;0;0;0;0
+3.8;15;18960;2.4063;910;1500;0;0;0;0;0;0;0
+3.9;15;18960;2.4063;902;1500;0;0;0;0;0;0;0
+4;15;18960;2.4063;893;1500;0;0;0;0;0;0;0
+4.1;15;18960;2.4063;885;1500;0;0;0;0;0;0;0
+4.2;15;18960;2.4063;877;1500;0;0;0;0;0;0;0
+4.3;15;18960;2.4063;869;1500;0;0;0;0;0;0;0
+4.4;15;18960;2.4063;861;1500;0;0;0;0;0;0;0
+4.5;15;18960;2.4063;853;1500;0;0;0;0;0;0;0
+4.6;15;18960;2.4063;846;1500;0;0;0;0;0;0;0
+4.7;15;18960;2.4063;838;1500;0;0;0;0;0;0;0
+4.8;15;18960;2.4063;830;1500;0;0;0;0;0;0;0
+4.9;15;18960;2.4063;823;1500;0;0;0;0;0;0;0
+5;15;18960;2.4063;815;1500;0;0;0;0;0;0;0
+5.1;15;18960;2.4063;808;1500;0;0;0;0;0;0;0
+5.2;15;18960;2.4063;801;1500;0;0;0;0;0;0;0
+5.3;15;18960;2.4063;793;1500;0;0;0;0;0;0;0
+5.4;15;18960;2.4063;786;1500;0;0;0;0;0;0;0
+5.5;15;18960;2.4063;779;1500;0;0;0;0;0;0;0
+5.6;15;18960;2.4063;772;1500;0;0;0;0;0;0;0
+5.7;15;18960;2.4063;765;1500;0;0;0;0;0;0;0
+5.8;15;18960;2.4063;758;1500;0;0;0;0;0;0;0
+5.9;15;18960;2.4063;751;1500;0;0;0;0;0;0;0
+6;15;18960;2.4063;744;1500;0;0;0;0;0;0;0
+6.1;15;18960;2.4063;737;1500;0;0;0;0;0;0;0
+6.2;15;18960;2.4063;731;1500;0;0;0;0;0;0;0
+6.3;15;18960;2.4063;724;1500;0;0;0;0;0;0;0
+6.4;15;18960;2.4063;717;1500;0;0;0;0;0;0;0
+6.5;15;18960;2.4063;711;1500;0;0;0;0;0;0;0
+6.6;15;18960;2.4063;704;1500;0;0;0;0;0;0;0
+6.7;15;18960;2.4063;698;1500;0;0;0;0;0;0;0
+6.8;15;18960;2.4063;692;1500;0;0;0;0;0;0;0
+6.9;15;18960;2.4063;685;1500;0;0;0;0;0;0;0
+7;15;18960;2.4063;679;1500;0;0;0;0;0;0;0
+7.1;15;18960;2.4063;665;1500;0;0;0;0;0;0;0
+7.2;15;18960;2.4063;650;1500;0;0;0;0;0;0;0
+7.3;15;18960;2.4063;636;1500;0;0;0;0;0;0;0
+7.4;15;18960;2.4063;623;1500;0;0;0;0;0;0;0
+7.5;15;18960;2.4063;609;1500;0;0;0;0;0;0;0
+7.6;15;18960;2.4063;596;1500;0;0;0;0;0;0;0
+7.7;15;18960;2.4063;584;1500;0;0;0;0;0;0;0
+7.8;15;18960;2.4063;571;1500;0;0;0;0;0;0;0
+7.9;15;18960;2.4063;559;1500;0;0;0;0;0;0;0
+8;15;18960;2.4063;547;1500;0;0;0;0;0;0;0
+8.1;15;18960;2.4063;535;1500;0;0;0;0;0;0;0
+8.2;15;18960;2.4063;524;1500;0;0;0;0;0;0;0
+8.3;15;18960;2.4063;513;1500;0;0;0;0;0;0;0
+8.4;15;18960;2.4063;502;1500;0;0;0;0;0;0;0
+8.5;15;18960;2.4063;491;1500;0;0;0;0;0;0;0
+8.6;15;18960;2.4063;480;1500;0;0;0;0;0;0;0
+8.7;15;18960;2.4063;470;1500;0;0;0;0;0;0;0
+8.8;15;18960;2.4063;460;1500;0;0;0;0;0;0;0
+8.9;15;18960;2.4063;450;1500;0;0;0;0;0;0;0
+9;15;18960;2.4063;441;1500;0;0;0;0;0;0;0
+9.1;15;18960;2.4063;431;1500;0;0;0;0;0;0;0
+9.2;15;18960;2.4063;422;1500;0;0;0;0;0;0;0
+9.3;15;18960;2.4063;413;1500;0;0;0;0;0;0;0
+9.4;15;18960;2.4063;404;1500;0;0;0;0;0;0;0
+9.5;15;18960;2.4063;395;1500;0;0;0;0;0;0;0
+9.6;15;18960;2.4063;387;1500;0;0;0;0;0;0;0
+9.7;15;18960;2.4063;379;1500;0;0;0;0;0;0;0
+9.8;15;18960;2.4063;371;1500;0;0;0;0;0;0;0
+9.9;15;18960;2.4063;363;1500;0;0;0;0;0;0;0
+10;15;18960;2.4063;355;1500;0;0;0;0;0;0;0
+10.1;15;18960;2.4063;338;1500;0;0;0;0;0;0;0
+10.2;15;18960;2.4063;323;1500;0;0;0;0;0;0;0
+10.3;15;18960;2.4063;308;1500;0;0;0;0;0;0;0
+10.4;15;18960;2.4063;294;1500;0;0;0;0;0;0;0
+10.5;15;18960;2.4063;280;1500;0;0;0;0;0;0;0
+10.6;15;18960;2.4063;267;1500;0;0;0;0;0;0;0
+10.7;15;18960;2.4063;255;1500;0;0;0;0;0;0;0
+10.8;15;18960;2.4063;243;1500;0;0;0;0;0;0;0
+10.9;15;18960;2.4063;232;1500;0;0;0;0;0;0;0
+11;15;18960;2.4063;221;1500;0;0;0;0;0;0;0
+11.1;15;18960;2.4063;211;1500;0;0;0;0;0;0;0
+11.2;15;18960;2.4063;202;1500;0;0;0;0;0;0;0
+11.3;15;18960;2.4063;192;1500;0;0;0;0;0;0;0
+11.4;15;18960;2.4063;183;1500;0;0;0;0;0;0;0
+11.5;15;18960;2.4063;175;1500;0;0;0;0;0;0;0
+11.6;15;18960;2.4063;167;1500;0;0;0;0;0;0;0
+11.7;15;18960;2.4063;159;1500;0;0;0;0;0;0;0
+11.8;15;18960;2.4063;152;1500;0;0;0;0;0;0;0
+11.9;15;18960;2.4063;145;1500;0;0;0;0;0;0;0
+12;15;18960;2.4063;138;1500;0;0;0;0;0;0;0
+12.1;15;18960;2.4063;132;1500;0;0;0;0;0;0;0
+12.2;15;18960;2.4063;126;1500;0;0;0;0;0;0;0
+12.3;15;18960;2.4063;120;1500;0;0;0;0;0;0;0
+12.4;15;18960;2.4063;114;1500;0;0;0;0;0;0;0
+12.5;15;18960;2.4063;109;1500;0;0;0;0;0;0;0
+12.6;15;18960;2.4063;104;1500;0;0;0;0;0;0;0
+12.7;15;18960;2.4063;99;1500;0;0;0;0;0;0;0
+12.8;15;18960;2.4063;95;1500;0;0;0;0;0;0;0
+12.9;15;18960;2.4063;90;1500;0;0;0;0;0;0;0
+13;15;18960;2.4063;86;1500;0;0;0;0;0;0;0
+13.1;15;18960;2.4063;80;1500;0;0;0;0;0;0;0
+13.2;15;18960;2.4063;75;1500;0;0;0;0;0;0;0
+13.3;15;18960;2.4063;69;1500;0;0;0;0;0;0;0
+13.4;15;18960;2.4063;64;1500;0;0;0;0;0;0;0
+13.5;15;18960;2.4063;60;1500;0;0;0;0;0;0;0
+13.6;15;18960;2.4063;56;1500;0;0;0;0;0;0;0
+13.7;15;18960;2.4063;52;1500;0;0;0;0;0;0;0
+13.8;15;18960;2.4063;48;1500;0;0;0;0;0;0;0
+13.9;15;18960;2.4063;45;1500;0;0;0;0;0;0;0
+14;15;18960;2.4063;41;1500;0;0;0;0;0;0;0
+14.1;15;18960;2.4063;39;1500;0;0;0;0;0;0;0
+14.2;15;18960;2.4063;36;1500;0;0;0;0;0;0;0
+14.3;15;18960;2.4063;33;1500;0;0;0;0;0;0;0
+14.4;15;18960;2.4063;31;1500;0;0;0;0;0;0;0
+14.5;15;18960;2.4063;29;1500;0;0;0;0;0;0;0
+14.6;15;18960;2.4063;27;1500;0;0;0;0;0;0;0
+14.7;15;18960;2.4063;25;1500;0;0;0;0;0;0;0
+14.8;15;18960;2.4063;23;1500;0;0;0;0;0;0;0
+14.9;15;18960;2.4063;21;1500;0;0;0;0;0;0;0
+15;15;18960;2.4063;20;1500;0;0;0;0;0;0;0
+15.1;15;18960;2.4063;19;1500;0;0;0;0;0;0;0
+15.2;15;18960;2.4063;17;1500;0;0;0;0;0;0;0
+15.3;15;18960;2.4063;16;1500;0;0;0;0;0;0;0
+15.4;15;18960;2.4063;15;1500;0;0;0;0;0;0;0
+15.5;15;18960;2.4063;14;1500;0;0;0;0;0;0;0
+15.6;15;18960;2.4063;13;1500;0;0;0;0;0;0;0
+15.7;15;18960;2.4063;12;1500;0;0;0;0;0;0;0
+15.8;15;18960;2.4063;11;1500;0;0;0;0;0;0;0
+15.9;15;18960;2.4063;10;1500;0;0;0;0;0;0;0
+16;15;18960;2.4063;10;1500;0;0;0;0;0;0;0
+16.1;15;18960;2.4063;8;1500;0;0;0;0;0;0;0
+16.2;15;18960;2.4063;7;1500;0;0;0;0;0;0;0
+16.3;15;18960;2.4063;7;1500;0;0;0;0;0;0;0
+16.4;15;18960;2.4063;6;1500;0;0;0;0;0;0;0
+16.5;15;18960;2.4063;5;1500;0;0;0;0;0;0;0
+16.6;15;18960;2.4063;5;1500;0;0;0;0;0;0;0
+16.7;15;18960;2.4063;4;1500;0;0;0;0;0;0;0
+16.8;15;18960;2.4063;4;1500;0;0;0;0;0;0;0
+16.9;15;18960;2.4063;3;1500;0;0;0;0;0;0;0
+17;15;18960;2.4063;3;1500;0;0;0;0;0;0;0
+17.1;15;18960;2.4063;2;1500;0;0;0;0;0;0;0
+17.2;15;18960;2.4063;2;1500;0;0;0;0;0;0;0
+17.3;15;18960;2.4063;2;1500;0;0;0;0;0;0;0
+17.4;15;18960;2.4063;2;1500;0;0;0;0;0;0;0
+17.5;15;18960;2.4063;1;1500;0;0;0;0;0;0;0
+17.6;15;18960;2.4063;1;1500;0;0;0;0;0;0;0
+17.7;15;18960;2.4063;1;1500;0;0;0;0;0;0;0
+17.8;15;18960;2.4063;1;1500;0;0;0;0;0;0;0
+17.9;15;18960;2.4063;1;1500;0;0;0;0;0;0;0
+18;15;18960;2.4063;1;1500;0;0;0;0;0;0;0
+18.1;15;18960;2.4063;1;1500;0;0;0;0;0;0;0
+18.2;15;18960;2.4063;1;1500;0;0;0;0;0;0;0
+18.3;15;18960;2.4063;1;1500;0;0;0;0;0;0;0
+18.4;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+18.5;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+18.6;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+18.7;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+18.8;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+18.9;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+19;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+19.1;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+19.2;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+19.3;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+19.4;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+19.5;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+19.6;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+19.7;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+19.8;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+19.9;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+20;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+20.1;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+20.2;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+20.3;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+20.4;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+20.5;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+20.6;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+20.7;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+20.8;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+20.9;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+21;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+21.1;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+21.2;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+21.3;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+21.4;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+21.5;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+21.6;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+21.7;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+21.8;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+21.9;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+22;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+22.1;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+22.2;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+22.3;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+22.4;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+22.5;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+22.6;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+22.7;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+22.8;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+22.9;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+23;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+23.1;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+23.2;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+23.3;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+23.4;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+23.5;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+23.6;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+23.7;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+23.8;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+23.9;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+24;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+24.1;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+24.2;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+24.3;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+24.4;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+24.5;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+24.6;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+24.7;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+24.8;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+24.9;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
+25;15;18960;2.4063;0;1500;0;0;0;0;0;0;0
diff --git a/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs16_cdlc_mimo2x2_dl.csv b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs16_cdlc_mimo2x2_dl.csv
new file mode 100644
index 0000000000..f71039be8a
--- /dev/null
+++ b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs16_cdlc_mimo2x2_dl.csv
@@ -0,0 +1,302 @@
+SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
+-5;16;20496;2.5703;1500;1500;0;0;0;0;0;0;0
+-4.9;16;20496;2.5703;1499;1500;0;0;0;0;0;0;0
+-4.8;16;20496;2.5703;1498;1500;0;0;0;0;0;0;0
+-4.7;16;20496;2.5703;1497;1500;0;0;0;0;0;0;0
+-4.6;16;20496;2.5703;1496;1500;0;0;0;0;0;0;0
+-4.5;16;20496;2.5703;1495;1500;0;0;0;0;0;0;0
+-4.4;16;20496;2.5703;1494;1500;0;0;0;0;0;0;0
+-4.3;16;20496;2.5703;1493;1500;0;0;0;0;0;0;0
+-4.2;16;20496;2.5703;1492;1500;0;0;0;0;0;0;0
+-4.1;16;20496;2.5703;1491;1500;0;0;0;0;0;0;0
+-4;16;20496;2.5703;1490;1500;0;0;0;0;0;0;0
+-3.9;16;20496;2.5703;1489;1500;0;0;0;0;0;0;0
+-3.8;16;20496;2.5703;1488;1500;0;0;0;0;0;0;0
+-3.7;16;20496;2.5703;1487;1500;0;0;0;0;0;0;0
+-3.6;16;20496;2.5703;1486;1500;0;0;0;0;0;0;0
+-3.5;16;20496;2.5703;1485;1500;0;0;0;0;0;0;0
+-3.4;16;20496;2.5703;1484;1500;0;0;0;0;0;0;0
+-3.3;16;20496;2.5703;1484;1500;0;0;0;0;0;0;0
+-3.2;16;20496;2.5703;1483;1500;0;0;0;0;0;0;0
+-3.1;16;20496;2.5703;1482;1500;0;0;0;0;0;0;0
+-3;16;20496;2.5703;1481;1500;0;0;0;0;0;0;0
+-2.9;16;20496;2.5703;1480;1500;0;0;0;0;0;0;0
+-2.8;16;20496;2.5703;1479;1500;0;0;0;0;0;0;0
+-2.7;16;20496;2.5703;1478;1500;0;0;0;0;0;0;0
+-2.6;16;20496;2.5703;1477;1500;0;0;0;0;0;0;0
+-2.5;16;20496;2.5703;1476;1500;0;0;0;0;0;0;0
+-2.4;16;20496;2.5703;1475;1500;0;0;0;0;0;0;0
+-2.3;16;20496;2.5703;1474;1500;0;0;0;0;0;0;0
+-2.2;16;20496;2.5703;1473;1500;0;0;0;0;0;0;0
+-2.1;16;20496;2.5703;1472;1500;0;0;0;0;0;0;0
+-2;16;20496;2.5703;1471;1500;0;0;0;0;0;0;0
+-1.9;16;20496;2.5703;1463;1500;0;0;0;0;0;0;0
+-1.8;16;20496;2.5703;1455;1500;0;0;0;0;0;0;0
+-1.7;16;20496;2.5703;1447;1500;0;0;0;0;0;0;0
+-1.6;16;20496;2.5703;1439;1500;0;0;0;0;0;0;0
+-1.5;16;20496;2.5703;1431;1500;0;0;0;0;0;0;0
+-1.4;16;20496;2.5703;1423;1500;0;0;0;0;0;0;0
+-1.3;16;20496;2.5703;1415;1500;0;0;0;0;0;0;0
+-1.2;16;20496;2.5703;1407;1500;0;0;0;0;0;0;0
+-1.1;16;20496;2.5703;1399;1500;0;0;0;0;0;0;0
+-1;16;20496;2.5703;1391;1500;0;0;0;0;0;0;0
+-0.9;16;20496;2.5703;1383;1500;0;0;0;0;0;0;0
+-0.8;16;20496;2.5703;1376;1500;0;0;0;0;0;0;0
+-0.7;16;20496;2.5703;1368;1500;0;0;0;0;0;0;0
+-0.6;16;20496;2.5703;1360;1500;0;0;0;0;0;0;0
+-0.5;16;20496;2.5703;1353;1500;0;0;0;0;0;0;0
+-0.4;16;20496;2.5703;1345;1500;0;0;0;0;0;0;0
+-0.3;16;20496;2.5703;1338;1500;0;0;0;0;0;0;0
+-0.2;16;20496;2.5703;1330;1500;0;0;0;0;0;0;0
+-0.1;16;20496;2.5703;1323;1500;0;0;0;0;0;0;0
+0;16;20496;2.5703;1315;1500;0;0;0;0;0;0;0
+0.1;16;20496;2.5703;1308;1500;0;0;0;0;0;0;0
+0.2;16;20496;2.5703;1301;1500;0;0;0;0;0;0;0
+0.3;16;20496;2.5703;1294;1500;0;0;0;0;0;0;0
+0.4;16;20496;2.5703;1286;1500;0;0;0;0;0;0;0
+0.5;16;20496;2.5703;1279;1500;0;0;0;0;0;0;0
+0.6;16;20496;2.5703;1272;1500;0;0;0;0;0;0;0
+0.7;16;20496;2.5703;1265;1500;0;0;0;0;0;0;0
+0.8;16;20496;2.5703;1258;1500;0;0;0;0;0;0;0
+0.9;16;20496;2.5703;1251;1500;0;0;0;0;0;0;0
+1;16;20496;2.5703;1244;1500;0;0;0;0;0;0;0
+1.1;16;20496;2.5703;1232;1500;0;0;0;0;0;0;0
+1.2;16;20496;2.5703;1220;1500;0;0;0;0;0;0;0
+1.3;16;20496;2.5703;1209;1500;0;0;0;0;0;0;0
+1.4;16;20496;2.5703;1197;1500;0;0;0;0;0;0;0
+1.5;16;20496;2.5703;1186;1500;0;0;0;0;0;0;0
+1.6;16;20496;2.5703;1175;1500;0;0;0;0;0;0;0
+1.7;16;20496;2.5703;1163;1500;0;0;0;0;0;0;0
+1.8;16;20496;2.5703;1152;1500;0;0;0;0;0;0;0
+1.9;16;20496;2.5703;1141;1500;0;0;0;0;0;0;0
+2;16;20496;2.5703;1130;1500;0;0;0;0;0;0;0
+2.1;16;20496;2.5703;1120;1500;0;0;0;0;0;0;0
+2.2;16;20496;2.5703;1109;1500;0;0;0;0;0;0;0
+2.3;16;20496;2.5703;1098;1500;0;0;0;0;0;0;0
+2.4;16;20496;2.5703;1088;1500;0;0;0;0;0;0;0
+2.5;16;20496;2.5703;1078;1500;0;0;0;0;0;0;0
+2.6;16;20496;2.5703;1067;1500;0;0;0;0;0;0;0
+2.7;16;20496;2.5703;1057;1500;0;0;0;0;0;0;0
+2.8;16;20496;2.5703;1047;1500;0;0;0;0;0;0;0
+2.9;16;20496;2.5703;1037;1500;0;0;0;0;0;0;0
+3;16;20496;2.5703;1027;1500;0;0;0;0;0;0;0
+3.1;16;20496;2.5703;1017;1500;0;0;0;0;0;0;0
+3.2;16;20496;2.5703;1008;1500;0;0;0;0;0;0;0
+3.3;16;20496;2.5703;998;1500;0;0;0;0;0;0;0
+3.4;16;20496;2.5703;989;1500;0;0;0;0;0;0;0
+3.5;16;20496;2.5703;979;1500;0;0;0;0;0;0;0
+3.6;16;20496;2.5703;970;1500;0;0;0;0;0;0;0
+3.7;16;20496;2.5703;961;1500;0;0;0;0;0;0;0
+3.8;16;20496;2.5703;951;1500;0;0;0;0;0;0;0
+3.9;16;20496;2.5703;942;1500;0;0;0;0;0;0;0
+4;16;20496;2.5703;933;1500;0;0;0;0;0;0;0
+4.1;16;20496;2.5703;927;1500;0;0;0;0;0;0;0
+4.2;16;20496;2.5703;920;1500;0;0;0;0;0;0;0
+4.3;16;20496;2.5703;913;1500;0;0;0;0;0;0;0
+4.4;16;20496;2.5703;906;1500;0;0;0;0;0;0;0
+4.5;16;20496;2.5703;900;1500;0;0;0;0;0;0;0
+4.6;16;20496;2.5703;893;1500;0;0;0;0;0;0;0
+4.7;16;20496;2.5703;886;1500;0;0;0;0;0;0;0
+4.8;16;20496;2.5703;880;1500;0;0;0;0;0;0;0
+4.9;16;20496;2.5703;873;1500;0;0;0;0;0;0;0
+5;16;20496;2.5703;867;1500;0;0;0;0;0;0;0
+5.1;16;20496;2.5703;861;1500;0;0;0;0;0;0;0
+5.2;16;20496;2.5703;854;1500;0;0;0;0;0;0;0
+5.3;16;20496;2.5703;848;1500;0;0;0;0;0;0;0
+5.4;16;20496;2.5703;842;1500;0;0;0;0;0;0;0
+5.5;16;20496;2.5703;836;1500;0;0;0;0;0;0;0
+5.6;16;20496;2.5703;829;1500;0;0;0;0;0;0;0
+5.7;16;20496;2.5703;823;1500;0;0;0;0;0;0;0
+5.8;16;20496;2.5703;817;1500;0;0;0;0;0;0;0
+5.9;16;20496;2.5703;811;1500;0;0;0;0;0;0;0
+6;16;20496;2.5703;805;1500;0;0;0;0;0;0;0
+6.1;16;20496;2.5703;799;1500;0;0;0;0;0;0;0
+6.2;16;20496;2.5703;793;1500;0;0;0;0;0;0;0
+6.3;16;20496;2.5703;788;1500;0;0;0;0;0;0;0
+6.4;16;20496;2.5703;782;1500;0;0;0;0;0;0;0
+6.5;16;20496;2.5703;776;1500;0;0;0;0;0;0;0
+6.6;16;20496;2.5703;770;1500;0;0;0;0;0;0;0
+6.7;16;20496;2.5703;765;1500;0;0;0;0;0;0;0
+6.8;16;20496;2.5703;759;1500;0;0;0;0;0;0;0
+6.9;16;20496;2.5703;753;1500;0;0;0;0;0;0;0
+7;16;20496;2.5703;748;1500;0;0;0;0;0;0;0
+7.1;16;20496;2.5703;736;1500;0;0;0;0;0;0;0
+7.2;16;20496;2.5703;725;1500;0;0;0;0;0;0;0
+7.3;16;20496;2.5703;713;1500;0;0;0;0;0;0;0
+7.4;16;20496;2.5703;702;1500;0;0;0;0;0;0;0
+7.5;16;20496;2.5703;691;1500;0;0;0;0;0;0;0
+7.6;16;20496;2.5703;681;1500;0;0;0;0;0;0;0
+7.7;16;20496;2.5703;670;1500;0;0;0;0;0;0;0
+7.8;16;20496;2.5703;660;1500;0;0;0;0;0;0;0
+7.9;16;20496;2.5703;649;1500;0;0;0;0;0;0;0
+8;16;20496;2.5703;639;1500;0;0;0;0;0;0;0
+8.1;16;20496;2.5703;629;1500;0;0;0;0;0;0;0
+8.2;16;20496;2.5703;619;1500;0;0;0;0;0;0;0
+8.3;16;20496;2.5703;610;1500;0;0;0;0;0;0;0
+8.4;16;20496;2.5703;600;1500;0;0;0;0;0;0;0
+8.5;16;20496;2.5703;591;1500;0;0;0;0;0;0;0
+8.6;16;20496;2.5703;582;1500;0;0;0;0;0;0;0
+8.7;16;20496;2.5703;573;1500;0;0;0;0;0;0;0
+8.8;16;20496;2.5703;564;1500;0;0;0;0;0;0;0
+8.9;16;20496;2.5703;555;1500;0;0;0;0;0;0;0
+9;16;20496;2.5703;546;1500;0;0;0;0;0;0;0
+9.1;16;20496;2.5703;538;1500;0;0;0;0;0;0;0
+9.2;16;20496;2.5703;529;1500;0;0;0;0;0;0;0
+9.3;16;20496;2.5703;521;1500;0;0;0;0;0;0;0
+9.4;16;20496;2.5703;513;1500;0;0;0;0;0;0;0
+9.5;16;20496;2.5703;505;1500;0;0;0;0;0;0;0
+9.6;16;20496;2.5703;497;1500;0;0;0;0;0;0;0
+9.7;16;20496;2.5703;489;1500;0;0;0;0;0;0;0
+9.8;16;20496;2.5703;482;1500;0;0;0;0;0;0;0
+9.9;16;20496;2.5703;474;1500;0;0;0;0;0;0;0
+10;16;20496;2.5703;467;1500;0;0;0;0;0;0;0
+10.1;16;20496;2.5703;449;1500;0;0;0;0;0;0;0
+10.2;16;20496;2.5703;432;1500;0;0;0;0;0;0;0
+10.3;16;20496;2.5703;416;1500;0;0;0;0;0;0;0
+10.4;16;20496;2.5703;400;1500;0;0;0;0;0;0;0
+10.5;16;20496;2.5703;384;1500;0;0;0;0;0;0;0
+10.6;16;20496;2.5703;370;1500;0;0;0;0;0;0;0
+10.7;16;20496;2.5703;356;1500;0;0;0;0;0;0;0
+10.8;16;20496;2.5703;342;1500;0;0;0;0;0;0;0
+10.9;16;20496;2.5703;329;1500;0;0;0;0;0;0;0
+11;16;20496;2.5703;317;1500;0;0;0;0;0;0;0
+11.1;16;20496;2.5703;305;1500;0;0;0;0;0;0;0
+11.2;16;20496;2.5703;293;1500;0;0;0;0;0;0;0
+11.3;16;20496;2.5703;282;1500;0;0;0;0;0;0;0
+11.4;16;20496;2.5703;271;1500;0;0;0;0;0;0;0
+11.5;16;20496;2.5703;261;1500;0;0;0;0;0;0;0
+11.6;16;20496;2.5703;251;1500;0;0;0;0;0;0;0
+11.7;16;20496;2.5703;241;1500;0;0;0;0;0;0;0
+11.8;16;20496;2.5703;232;1500;0;0;0;0;0;0;0
+11.9;16;20496;2.5703;223;1500;0;0;0;0;0;0;0
+12;16;20496;2.5703;215;1500;0;0;0;0;0;0;0
+12.1;16;20496;2.5703;207;1500;0;0;0;0;0;0;0
+12.2;16;20496;2.5703;199;1500;0;0;0;0;0;0;0
+12.3;16;20496;2.5703;191;1500;0;0;0;0;0;0;0
+12.4;16;20496;2.5703;184;1500;0;0;0;0;0;0;0
+12.5;16;20496;2.5703;177;1500;0;0;0;0;0;0;0
+12.6;16;20496;2.5703;170;1500;0;0;0;0;0;0;0
+12.7;16;20496;2.5703;164;1500;0;0;0;0;0;0;0
+12.8;16;20496;2.5703;157;1500;0;0;0;0;0;0;0
+12.9;16;20496;2.5703;151;1500;0;0;0;0;0;0;0
+13;16;20496;2.5703;146;1500;0;0;0;0;0;0;0
+13.1;16;20496;2.5703;138;1500;0;0;0;0;0;0;0
+13.2;16;20496;2.5703;130;1500;0;0;0;0;0;0;0
+13.3;16;20496;2.5703;123;1500;0;0;0;0;0;0;0
+13.4;16;20496;2.5703;116;1500;0;0;0;0;0;0;0
+13.5;16;20496;2.5703;110;1500;0;0;0;0;0;0;0
+13.6;16;20496;2.5703;104;1500;0;0;0;0;0;0;0
+13.7;16;20496;2.5703;99;1500;0;0;0;0;0;0;0
+13.8;16;20496;2.5703;93;1500;0;0;0;0;0;0;0
+13.9;16;20496;2.5703;88;1500;0;0;0;0;0;0;0
+14;16;20496;2.5703;83;1500;0;0;0;0;0;0;0
+14.1;16;20496;2.5703;79;1500;0;0;0;0;0;0;0
+14.2;16;20496;2.5703;75;1500;0;0;0;0;0;0;0
+14.3;16;20496;2.5703;71;1500;0;0;0;0;0;0;0
+14.4;16;20496;2.5703;67;1500;0;0;0;0;0;0;0
+14.5;16;20496;2.5703;63;1500;0;0;0;0;0;0;0
+14.6;16;20496;2.5703;60;1500;0;0;0;0;0;0;0
+14.7;16;20496;2.5703;56;1500;0;0;0;0;0;0;0
+14.8;16;20496;2.5703;53;1500;0;0;0;0;0;0;0
+14.9;16;20496;2.5703;51;1500;0;0;0;0;0;0;0
+15;16;20496;2.5703;48;1500;0;0;0;0;0;0;0
+15.1;16;20496;2.5703;45;1500;0;0;0;0;0;0;0
+15.2;16;20496;2.5703;43;1500;0;0;0;0;0;0;0
+15.3;16;20496;2.5703;40;1500;0;0;0;0;0;0;0
+15.4;16;20496;2.5703;38;1500;0;0;0;0;0;0;0
+15.5;16;20496;2.5703;36;1500;0;0;0;0;0;0;0
+15.6;16;20496;2.5703;34;1500;0;0;0;0;0;0;0
+15.7;16;20496;2.5703;32;1500;0;0;0;0;0;0;0
+15.8;16;20496;2.5703;31;1500;0;0;0;0;0;0;0
+15.9;16;20496;2.5703;29;1500;0;0;0;0;0;0;0
+16;16;20496;2.5703;27;1500;0;0;0;0;0;0;0
+16.1;16;20496;2.5703;25;1500;0;0;0;0;0;0;0
+16.2;16;20496;2.5703;22;1500;0;0;0;0;0;0;0
+16.3;16;20496;2.5703;20;1500;0;0;0;0;0;0;0
+16.4;16;20496;2.5703;18;1500;0;0;0;0;0;0;0
+16.5;16;20496;2.5703;16;1500;0;0;0;0;0;0;0
+16.6;16;20496;2.5703;15;1500;0;0;0;0;0;0;0
+16.7;16;20496;2.5703;13;1500;0;0;0;0;0;0;0
+16.8;16;20496;2.5703;12;1500;0;0;0;0;0;0;0
+16.9;16;20496;2.5703;11;1500;0;0;0;0;0;0;0
+17;16;20496;2.5703;10;1500;0;0;0;0;0;0;0
+17.1;16;20496;2.5703;9;1500;0;0;0;0;0;0;0
+17.2;16;20496;2.5703;8;1500;0;0;0;0;0;0;0
+17.3;16;20496;2.5703;7;1500;0;0;0;0;0;0;0
+17.4;16;20496;2.5703;7;1500;0;0;0;0;0;0;0
+17.5;16;20496;2.5703;6;1500;0;0;0;0;0;0;0
+17.6;16;20496;2.5703;5;1500;0;0;0;0;0;0;0
+17.7;16;20496;2.5703;5;1500;0;0;0;0;0;0;0
+17.8;16;20496;2.5703;4;1500;0;0;0;0;0;0;0
+17.9;16;20496;2.5703;4;1500;0;0;0;0;0;0;0
+18;16;20496;2.5703;4;1500;0;0;0;0;0;0;0
+18.1;16;20496;2.5703;3;1500;0;0;0;0;0;0;0
+18.2;16;20496;2.5703;3;1500;0;0;0;0;0;0;0
+18.3;16;20496;2.5703;3;1500;0;0;0;0;0;0;0
+18.4;16;20496;2.5703;2;1500;0;0;0;0;0;0;0
+18.5;16;20496;2.5703;2;1500;0;0;0;0;0;0;0
+18.6;16;20496;2.5703;2;1500;0;0;0;0;0;0;0
+18.7;16;20496;2.5703;2;1500;0;0;0;0;0;0;0
+18.8;16;20496;2.5703;2;1500;0;0;0;0;0;0;0
+18.9;16;20496;2.5703;1;1500;0;0;0;0;0;0;0
+19;16;20496;2.5703;1;1500;0;0;0;0;0;0;0
+19.1;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+19.2;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+19.3;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+19.4;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+19.5;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+19.6;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+19.7;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+19.8;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+19.9;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+20;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+20.1;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+20.2;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+20.3;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+20.4;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+20.5;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+20.6;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+20.7;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+20.8;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+20.9;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+21;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+21.1;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+21.2;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+21.3;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+21.4;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+21.5;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+21.6;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+21.7;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+21.8;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+21.9;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+22;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+22.1;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+22.2;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+22.3;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+22.4;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+22.5;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+22.6;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+22.7;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+22.8;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+22.9;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+23;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+23.1;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+23.2;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+23.3;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+23.4;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+23.5;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+23.6;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+23.7;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+23.8;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+23.9;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+24;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+24.1;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+24.2;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+24.3;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+24.4;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+24.5;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+24.6;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+24.7;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+24.8;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+24.9;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
+25;16;20496;2.5703;0;1500;0;0;0;0;0;0;0
diff --git a/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs17_cdlc_mimo2x2_dl.csv b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs17_cdlc_mimo2x2_dl.csv
new file mode 100644
index 0000000000..1383afa2b3
--- /dev/null
+++ b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs17_cdlc_mimo2x2_dl.csv
@@ -0,0 +1,302 @@
+SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
+-5;17;20496;2.5664;1500;1500;0;0;0;0;0;0;0
+-4.9;17;20496;2.5664;1500;1500;0;0;0;0;0;0;0
+-4.8;17;20496;2.5664;1500;1500;0;0;0;0;0;0;0
+-4.7;17;20496;2.5664;1499;1500;0;0;0;0;0;0;0
+-4.6;17;20496;2.5664;1499;1500;0;0;0;0;0;0;0
+-4.5;17;20496;2.5664;1499;1500;0;0;0;0;0;0;0
+-4.4;17;20496;2.5664;1499;1500;0;0;0;0;0;0;0
+-4.3;17;20496;2.5664;1499;1500;0;0;0;0;0;0;0
+-4.2;17;20496;2.5664;1498;1500;0;0;0;0;0;0;0
+-4.1;17;20496;2.5664;1498;1500;0;0;0;0;0;0;0
+-4;17;20496;2.5664;1498;1500;0;0;0;0;0;0;0
+-3.9;17;20496;2.5664;1498;1500;0;0;0;0;0;0;0
+-3.8;17;20496;2.5664;1497;1500;0;0;0;0;0;0;0
+-3.7;17;20496;2.5664;1497;1500;0;0;0;0;0;0;0
+-3.6;17;20496;2.5664;1497;1500;0;0;0;0;0;0;0
+-3.5;17;20496;2.5664;1497;1500;0;0;0;0;0;0;0
+-3.4;17;20496;2.5664;1497;1500;0;0;0;0;0;0;0
+-3.3;17;20496;2.5664;1496;1500;0;0;0;0;0;0;0
+-3.2;17;20496;2.5664;1496;1500;0;0;0;0;0;0;0
+-3.1;17;20496;2.5664;1496;1500;0;0;0;0;0;0;0
+-3;17;20496;2.5664;1496;1500;0;0;0;0;0;0;0
+-2.9;17;20496;2.5664;1496;1500;0;0;0;0;0;0;0
+-2.8;17;20496;2.5664;1495;1500;0;0;0;0;0;0;0
+-2.7;17;20496;2.5664;1495;1500;0;0;0;0;0;0;0
+-2.6;17;20496;2.5664;1495;1500;0;0;0;0;0;0;0
+-2.5;17;20496;2.5664;1495;1500;0;0;0;0;0;0;0
+-2.4;17;20496;2.5664;1494;1500;0;0;0;0;0;0;0
+-2.3;17;20496;2.5664;1494;1500;0;0;0;0;0;0;0
+-2.2;17;20496;2.5664;1494;1500;0;0;0;0;0;0;0
+-2.1;17;20496;2.5664;1494;1500;0;0;0;0;0;0;0
+-2;17;20496;2.5664;1494;1500;0;0;0;0;0;0;0
+-1.9;17;20496;2.5664;1487;1500;0;0;0;0;0;0;0
+-1.8;17;20496;2.5664;1481;1500;0;0;0;0;0;0;0
+-1.7;17;20496;2.5664;1474;1500;0;0;0;0;0;0;0
+-1.6;17;20496;2.5664;1468;1500;0;0;0;0;0;0;0
+-1.5;17;20496;2.5664;1461;1500;0;0;0;0;0;0;0
+-1.4;17;20496;2.5664;1455;1500;0;0;0;0;0;0;0
+-1.3;17;20496;2.5664;1449;1500;0;0;0;0;0;0;0
+-1.2;17;20496;2.5664;1442;1500;0;0;0;0;0;0;0
+-1.1;17;20496;2.5664;1436;1500;0;0;0;0;0;0;0
+-1;17;20496;2.5664;1430;1500;0;0;0;0;0;0;0
+-0.9;17;20496;2.5664;1423;1500;0;0;0;0;0;0;0
+-0.8;17;20496;2.5664;1417;1500;0;0;0;0;0;0;0
+-0.7;17;20496;2.5664;1411;1500;0;0;0;0;0;0;0
+-0.6;17;20496;2.5664;1405;1500;0;0;0;0;0;0;0
+-0.5;17;20496;2.5664;1399;1500;0;0;0;0;0;0;0
+-0.4;17;20496;2.5664;1393;1500;0;0;0;0;0;0;0
+-0.3;17;20496;2.5664;1386;1500;0;0;0;0;0;0;0
+-0.2;17;20496;2.5664;1380;1500;0;0;0;0;0;0;0
+-0.1;17;20496;2.5664;1374;1500;0;0;0;0;0;0;0
+0;17;20496;2.5664;1368;1500;0;0;0;0;0;0;0
+0.1;17;20496;2.5664;1362;1500;0;0;0;0;0;0;0
+0.2;17;20496;2.5664;1356;1500;0;0;0;0;0;0;0
+0.3;17;20496;2.5664;1350;1500;0;0;0;0;0;0;0
+0.4;17;20496;2.5664;1345;1500;0;0;0;0;0;0;0
+0.5;17;20496;2.5664;1339;1500;0;0;0;0;0;0;0
+0.6;17;20496;2.5664;1333;1500;0;0;0;0;0;0;0
+0.7;17;20496;2.5664;1327;1500;0;0;0;0;0;0;0
+0.8;17;20496;2.5664;1321;1500;0;0;0;0;0;0;0
+0.9;17;20496;2.5664;1315;1500;0;0;0;0;0;0;0
+1;17;20496;2.5664;1310;1500;0;0;0;0;0;0;0
+1.1;17;20496;2.5664;1299;1500;0;0;0;0;0;0;0
+1.2;17;20496;2.5664;1288;1500;0;0;0;0;0;0;0
+1.3;17;20496;2.5664;1277;1500;0;0;0;0;0;0;0
+1.4;17;20496;2.5664;1266;1500;0;0;0;0;0;0;0
+1.5;17;20496;2.5664;1256;1500;0;0;0;0;0;0;0
+1.6;17;20496;2.5664;1245;1500;0;0;0;0;0;0;0
+1.7;17;20496;2.5664;1235;1500;0;0;0;0;0;0;0
+1.8;17;20496;2.5664;1224;1500;0;0;0;0;0;0;0
+1.9;17;20496;2.5664;1214;1500;0;0;0;0;0;0;0
+2;17;20496;2.5664;1204;1500;0;0;0;0;0;0;0
+2.1;17;20496;2.5664;1194;1500;0;0;0;0;0;0;0
+2.2;17;20496;2.5664;1184;1500;0;0;0;0;0;0;0
+2.3;17;20496;2.5664;1174;1500;0;0;0;0;0;0;0
+2.4;17;20496;2.5664;1164;1500;0;0;0;0;0;0;0
+2.5;17;20496;2.5664;1154;1500;0;0;0;0;0;0;0
+2.6;17;20496;2.5664;1144;1500;0;0;0;0;0;0;0
+2.7;17;20496;2.5664;1135;1500;0;0;0;0;0;0;0
+2.8;17;20496;2.5664;1125;1500;0;0;0;0;0;0;0
+2.9;17;20496;2.5664;1116;1500;0;0;0;0;0;0;0
+3;17;20496;2.5664;1106;1500;0;0;0;0;0;0;0
+3.1;17;20496;2.5664;1097;1500;0;0;0;0;0;0;0
+3.2;17;20496;2.5664;1088;1500;0;0;0;0;0;0;0
+3.3;17;20496;2.5664;1079;1500;0;0;0;0;0;0;0
+3.4;17;20496;2.5664;1070;1500;0;0;0;0;0;0;0
+3.5;17;20496;2.5664;1061;1500;0;0;0;0;0;0;0
+3.6;17;20496;2.5664;1052;1500;0;0;0;0;0;0;0
+3.7;17;20496;2.5664;1043;1500;0;0;0;0;0;0;0
+3.8;17;20496;2.5664;1034;1500;0;0;0;0;0;0;0
+3.9;17;20496;2.5664;1025;1500;0;0;0;0;0;0;0
+4;17;20496;2.5664;1017;1500;0;0;0;0;0;0;0
+4.1;17;20496;2.5664;1009;1500;0;0;0;0;0;0;0
+4.2;17;20496;2.5664;1001;1500;0;0;0;0;0;0;0
+4.3;17;20496;2.5664;993;1500;0;0;0;0;0;0;0
+4.4;17;20496;2.5664;985;1500;0;0;0;0;0;0;0
+4.5;17;20496;2.5664;977;1500;0;0;0;0;0;0;0
+4.6;17;20496;2.5664;969;1500;0;0;0;0;0;0;0
+4.7;17;20496;2.5664;961;1500;0;0;0;0;0;0;0
+4.8;17;20496;2.5664;954;1500;0;0;0;0;0;0;0
+4.9;17;20496;2.5664;946;1500;0;0;0;0;0;0;0
+5;17;20496;2.5664;939;1500;0;0;0;0;0;0;0
+5.1;17;20496;2.5664;931;1500;0;0;0;0;0;0;0
+5.2;17;20496;2.5664;924;1500;0;0;0;0;0;0;0
+5.3;17;20496;2.5664;916;1500;0;0;0;0;0;0;0
+5.4;17;20496;2.5664;909;1500;0;0;0;0;0;0;0
+5.5;17;20496;2.5664;902;1500;0;0;0;0;0;0;0
+5.6;17;20496;2.5664;895;1500;0;0;0;0;0;0;0
+5.7;17;20496;2.5664;888;1500;0;0;0;0;0;0;0
+5.8;17;20496;2.5664;881;1500;0;0;0;0;0;0;0
+5.9;17;20496;2.5664;874;1500;0;0;0;0;0;0;0
+6;17;20496;2.5664;867;1500;0;0;0;0;0;0;0
+6.1;17;20496;2.5664;860;1500;0;0;0;0;0;0;0
+6.2;17;20496;2.5664;853;1500;0;0;0;0;0;0;0
+6.3;17;20496;2.5664;846;1500;0;0;0;0;0;0;0
+6.4;17;20496;2.5664;839;1500;0;0;0;0;0;0;0
+6.5;17;20496;2.5664;833;1500;0;0;0;0;0;0;0
+6.6;17;20496;2.5664;826;1500;0;0;0;0;0;0;0
+6.7;17;20496;2.5664;820;1500;0;0;0;0;0;0;0
+6.8;17;20496;2.5664;813;1500;0;0;0;0;0;0;0
+6.9;17;20496;2.5664;807;1500;0;0;0;0;0;0;0
+7;17;20496;2.5664;800;1500;0;0;0;0;0;0;0
+7.1;17;20496;2.5664;787;1500;0;0;0;0;0;0;0
+7.2;17;20496;2.5664;774;1500;0;0;0;0;0;0;0
+7.3;17;20496;2.5664;761;1500;0;0;0;0;0;0;0
+7.4;17;20496;2.5664;748;1500;0;0;0;0;0;0;0
+7.5;17;20496;2.5664;736;1500;0;0;0;0;0;0;0
+7.6;17;20496;2.5664;723;1500;0;0;0;0;0;0;0
+7.7;17;20496;2.5664;711;1500;0;0;0;0;0;0;0
+7.8;17;20496;2.5664;699;1500;0;0;0;0;0;0;0
+7.9;17;20496;2.5664;688;1500;0;0;0;0;0;0;0
+8;17;20496;2.5664;676;1500;0;0;0;0;0;0;0
+8.1;17;20496;2.5664;665;1500;0;0;0;0;0;0;0
+8.2;17;20496;2.5664;654;1500;0;0;0;0;0;0;0
+8.3;17;20496;2.5664;643;1500;0;0;0;0;0;0;0
+8.4;17;20496;2.5664;632;1500;0;0;0;0;0;0;0
+8.5;17;20496;2.5664;622;1500;0;0;0;0;0;0;0
+8.6;17;20496;2.5664;611;1500;0;0;0;0;0;0;0
+8.7;17;20496;2.5664;601;1500;0;0;0;0;0;0;0
+8.8;17;20496;2.5664;591;1500;0;0;0;0;0;0;0
+8.9;17;20496;2.5664;581;1500;0;0;0;0;0;0;0
+9;17;20496;2.5664;571;1500;0;0;0;0;0;0;0
+9.1;17;20496;2.5664;562;1500;0;0;0;0;0;0;0
+9.2;17;20496;2.5664;553;1500;0;0;0;0;0;0;0
+9.3;17;20496;2.5664;543;1500;0;0;0;0;0;0;0
+9.4;17;20496;2.5664;534;1500;0;0;0;0;0;0;0
+9.5;17;20496;2.5664;525;1500;0;0;0;0;0;0;0
+9.6;17;20496;2.5664;517;1500;0;0;0;0;0;0;0
+9.7;17;20496;2.5664;508;1500;0;0;0;0;0;0;0
+9.8;17;20496;2.5664;500;1500;0;0;0;0;0;0;0
+9.9;17;20496;2.5664;491;1500;0;0;0;0;0;0;0
+10;17;20496;2.5664;483;1500;0;0;0;0;0;0;0
+10.1;17;20496;2.5664;463;1500;0;0;0;0;0;0;0
+10.2;17;20496;2.5664;444;1500;0;0;0;0;0;0;0
+10.3;17;20496;2.5664;426;1500;0;0;0;0;0;0;0
+10.4;17;20496;2.5664;409;1500;0;0;0;0;0;0;0
+10.5;17;20496;2.5664;392;1500;0;0;0;0;0;0;0
+10.6;17;20496;2.5664;376;1500;0;0;0;0;0;0;0
+10.7;17;20496;2.5664;360;1500;0;0;0;0;0;0;0
+10.8;17;20496;2.5664;346;1500;0;0;0;0;0;0;0
+10.9;17;20496;2.5664;331;1500;0;0;0;0;0;0;0
+11;17;20496;2.5664;318;1500;0;0;0;0;0;0;0
+11.1;17;20496;2.5664;305;1500;0;0;0;0;0;0;0
+11.2;17;20496;2.5664;292;1500;0;0;0;0;0;0;0
+11.3;17;20496;2.5664;280;1500;0;0;0;0;0;0;0
+11.4;17;20496;2.5664;269;1500;0;0;0;0;0;0;0
+11.5;17;20496;2.5664;258;1500;0;0;0;0;0;0;0
+11.6;17;20496;2.5664;247;1500;0;0;0;0;0;0;0
+11.7;17;20496;2.5664;237;1500;0;0;0;0;0;0;0
+11.8;17;20496;2.5664;227;1500;0;0;0;0;0;0;0
+11.9;17;20496;2.5664;218;1500;0;0;0;0;0;0;0
+12;17;20496;2.5664;209;1500;0;0;0;0;0;0;0
+12.1;17;20496;2.5664;201;1500;0;0;0;0;0;0;0
+12.2;17;20496;2.5664;192;1500;0;0;0;0;0;0;0
+12.3;17;20496;2.5664;185;1500;0;0;0;0;0;0;0
+12.4;17;20496;2.5664;177;1500;0;0;0;0;0;0;0
+12.5;17;20496;2.5664;170;1500;0;0;0;0;0;0;0
+12.6;17;20496;2.5664;163;1500;0;0;0;0;0;0;0
+12.7;17;20496;2.5664;156;1500;0;0;0;0;0;0;0
+12.8;17;20496;2.5664;150;1500;0;0;0;0;0;0;0
+12.9;17;20496;2.5664;144;1500;0;0;0;0;0;0;0
+13;17;20496;2.5664;138;1500;0;0;0;0;0;0;0
+13.1;17;20496;2.5664;128;1500;0;0;0;0;0;0;0
+13.2;17;20496;2.5664;119;1500;0;0;0;0;0;0;0
+13.3;17;20496;2.5664;110;1500;0;0;0;0;0;0;0
+13.4;17;20496;2.5664;102;1500;0;0;0;0;0;0;0
+13.5;17;20496;2.5664;95;1500;0;0;0;0;0;0;0
+13.6;17;20496;2.5664;88;1500;0;0;0;0;0;0;0
+13.7;17;20496;2.5664;82;1500;0;0;0;0;0;0;0
+13.8;17;20496;2.5664;76;1500;0;0;0;0;0;0;0
+13.9;17;20496;2.5664;70;1500;0;0;0;0;0;0;0
+14;17;20496;2.5664;65;1500;0;0;0;0;0;0;0
+14.1;17;20496;2.5664;61;1500;0;0;0;0;0;0;0
+14.2;17;20496;2.5664;56;1500;0;0;0;0;0;0;0
+14.3;17;20496;2.5664;52;1500;0;0;0;0;0;0;0
+14.4;17;20496;2.5664;49;1500;0;0;0;0;0;0;0
+14.5;17;20496;2.5664;45;1500;0;0;0;0;0;0;0
+14.6;17;20496;2.5664;42;1500;0;0;0;0;0;0;0
+14.7;17;20496;2.5664;39;1500;0;0;0;0;0;0;0
+14.8;17;20496;2.5664;36;1500;0;0;0;0;0;0;0
+14.9;17;20496;2.5664;33;1500;0;0;0;0;0;0;0
+15;17;20496;2.5664;31;1500;0;0;0;0;0;0;0
+15.1;17;20496;2.5664;29;1500;0;0;0;0;0;0;0
+15.2;17;20496;2.5664;27;1500;0;0;0;0;0;0;0
+15.3;17;20496;2.5664;25;1500;0;0;0;0;0;0;0
+15.4;17;20496;2.5664;23;1500;0;0;0;0;0;0;0
+15.5;17;20496;2.5664;21;1500;0;0;0;0;0;0;0
+15.6;17;20496;2.5664;20;1500;0;0;0;0;0;0;0
+15.7;17;20496;2.5664;18;1500;0;0;0;0;0;0;0
+15.8;17;20496;2.5664;17;1500;0;0;0;0;0;0;0
+15.9;17;20496;2.5664;16;1500;0;0;0;0;0;0;0
+16;17;20496;2.5664;15;1500;0;0;0;0;0;0;0
+16.1;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+16.2;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+16.3;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+16.4;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+16.5;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+16.6;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+16.7;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+16.8;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+16.9;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+17;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+17.1;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+17.2;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+17.3;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+17.4;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+17.5;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+17.6;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+17.7;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+17.8;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+17.9;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+18;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+18.1;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+18.2;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+18.3;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+18.4;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+18.5;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+18.6;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+18.7;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+18.8;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+18.9;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+19;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+19.1;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+19.2;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+19.3;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+19.4;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+19.5;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+19.6;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+19.7;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+19.8;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+19.9;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+20;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+20.1;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+20.2;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+20.3;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+20.4;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+20.5;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+20.6;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+20.7;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+20.8;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+20.9;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+21;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+21.1;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+21.2;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+21.3;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+21.4;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+21.5;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+21.6;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+21.7;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+21.8;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+21.9;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+22;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+22.1;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+22.2;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+22.3;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+22.4;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+22.5;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+22.6;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+22.7;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+22.8;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+22.9;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+23;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+23.1;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+23.2;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+23.3;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+23.4;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+23.5;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+23.6;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+23.7;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+23.8;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+23.9;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+24;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+24.1;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+24.2;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+24.3;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+24.4;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+24.5;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+24.6;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+24.7;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+24.8;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+24.9;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
+25;17;20496;2.5664;0;1500;0;0;0;0;0;0;0
diff --git a/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs18_cdlc_mimo2x2_dl.csv b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs18_cdlc_mimo2x2_dl.csv
new file mode 100644
index 0000000000..5fbcf4af7d
--- /dev/null
+++ b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs18_cdlc_mimo2x2_dl.csv
@@ -0,0 +1,302 @@
+SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
+-5;18;21504;2.7305;1500;1500;0;0;0;0;0;0;0
+-4.9;18;21504;2.7305;1500;1500;0;0;0;0;0;0;0
+-4.8;18;21504;2.7305;1500;1500;0;0;0;0;0;0;0
+-4.7;18;21504;2.7305;1500;1500;0;0;0;0;0;0;0
+-4.6;18;21504;2.7305;1499;1500;0;0;0;0;0;0;0
+-4.5;18;21504;2.7305;1499;1500;0;0;0;0;0;0;0
+-4.4;18;21504;2.7305;1499;1500;0;0;0;0;0;0;0
+-4.3;18;21504;2.7305;1499;1500;0;0;0;0;0;0;0
+-4.2;18;21504;2.7305;1499;1500;0;0;0;0;0;0;0
+-4.1;18;21504;2.7305;1499;1500;0;0;0;0;0;0;0
+-4;18;21504;2.7305;1499;1500;0;0;0;0;0;0;0
+-3.9;18;21504;2.7305;1498;1500;0;0;0;0;0;0;0
+-3.8;18;21504;2.7305;1498;1500;0;0;0;0;0;0;0
+-3.7;18;21504;2.7305;1498;1500;0;0;0;0;0;0;0
+-3.6;18;21504;2.7305;1498;1500;0;0;0;0;0;0;0
+-3.5;18;21504;2.7305;1498;1500;0;0;0;0;0;0;0
+-3.4;18;21504;2.7305;1498;1500;0;0;0;0;0;0;0
+-3.3;18;21504;2.7305;1498;1500;0;0;0;0;0;0;0
+-3.2;18;21504;2.7305;1497;1500;0;0;0;0;0;0;0
+-3.1;18;21504;2.7305;1497;1500;0;0;0;0;0;0;0
+-3;18;21504;2.7305;1497;1500;0;0;0;0;0;0;0
+-2.9;18;21504;2.7305;1497;1500;0;0;0;0;0;0;0
+-2.8;18;21504;2.7305;1497;1500;0;0;0;0;0;0;0
+-2.7;18;21504;2.7305;1497;1500;0;0;0;0;0;0;0
+-2.6;18;21504;2.7305;1497;1500;0;0;0;0;0;0;0
+-2.5;18;21504;2.7305;1496;1500;0;0;0;0;0;0;0
+-2.4;18;21504;2.7305;1496;1500;0;0;0;0;0;0;0
+-2.3;18;21504;2.7305;1496;1500;0;0;0;0;0;0;0
+-2.2;18;21504;2.7305;1496;1500;0;0;0;0;0;0;0
+-2.1;18;21504;2.7305;1496;1500;0;0;0;0;0;0;0
+-2;18;21504;2.7305;1496;1500;0;0;0;0;0;0;0
+-1.9;18;21504;2.7305;1490;1500;0;0;0;0;0;0;0
+-1.8;18;21504;2.7305;1484;1500;0;0;0;0;0;0;0
+-1.7;18;21504;2.7305;1478;1500;0;0;0;0;0;0;0
+-1.6;18;21504;2.7305;1472;1500;0;0;0;0;0;0;0
+-1.5;18;21504;2.7305;1467;1500;0;0;0;0;0;0;0
+-1.4;18;21504;2.7305;1461;1500;0;0;0;0;0;0;0
+-1.3;18;21504;2.7305;1455;1500;0;0;0;0;0;0;0
+-1.2;18;21504;2.7305;1449;1500;0;0;0;0;0;0;0
+-1.1;18;21504;2.7305;1444;1500;0;0;0;0;0;0;0
+-1;18;21504;2.7305;1438;1500;0;0;0;0;0;0;0
+-0.9;18;21504;2.7305;1432;1500;0;0;0;0;0;0;0
+-0.8;18;21504;2.7305;1427;1500;0;0;0;0;0;0;0
+-0.7;18;21504;2.7305;1421;1500;0;0;0;0;0;0;0
+-0.6;18;21504;2.7305;1416;1500;0;0;0;0;0;0;0
+-0.5;18;21504;2.7305;1410;1500;0;0;0;0;0;0;0
+-0.4;18;21504;2.7305;1405;1500;0;0;0;0;0;0;0
+-0.3;18;21504;2.7305;1399;1500;0;0;0;0;0;0;0
+-0.2;18;21504;2.7305;1394;1500;0;0;0;0;0;0;0
+-0.1;18;21504;2.7305;1388;1500;0;0;0;0;0;0;0
+0;18;21504;2.7305;1383;1500;0;0;0;0;0;0;0
+0.1;18;21504;2.7305;1377;1500;0;0;0;0;0;0;0
+0.2;18;21504;2.7305;1372;1500;0;0;0;0;0;0;0
+0.3;18;21504;2.7305;1367;1500;0;0;0;0;0;0;0
+0.4;18;21504;2.7305;1361;1500;0;0;0;0;0;0;0
+0.5;18;21504;2.7305;1356;1500;0;0;0;0;0;0;0
+0.6;18;21504;2.7305;1351;1500;0;0;0;0;0;0;0
+0.7;18;21504;2.7305;1345;1500;0;0;0;0;0;0;0
+0.8;18;21504;2.7305;1340;1500;0;0;0;0;0;0;0
+0.9;18;21504;2.7305;1335;1500;0;0;0;0;0;0;0
+1;18;21504;2.7305;1330;1500;0;0;0;0;0;0;0
+1.1;18;21504;2.7305;1319;1500;0;0;0;0;0;0;0
+1.2;18;21504;2.7305;1308;1500;0;0;0;0;0;0;0
+1.3;18;21504;2.7305;1297;1500;0;0;0;0;0;0;0
+1.4;18;21504;2.7305;1287;1500;0;0;0;0;0;0;0
+1.5;18;21504;2.7305;1276;1500;0;0;0;0;0;0;0
+1.6;18;21504;2.7305;1266;1500;0;0;0;0;0;0;0
+1.7;18;21504;2.7305;1255;1500;0;0;0;0;0;0;0
+1.8;18;21504;2.7305;1245;1500;0;0;0;0;0;0;0
+1.9;18;21504;2.7305;1235;1500;0;0;0;0;0;0;0
+2;18;21504;2.7305;1225;1500;0;0;0;0;0;0;0
+2.1;18;21504;2.7305;1215;1500;0;0;0;0;0;0;0
+2.2;18;21504;2.7305;1205;1500;0;0;0;0;0;0;0
+2.3;18;21504;2.7305;1195;1500;0;0;0;0;0;0;0
+2.4;18;21504;2.7305;1185;1500;0;0;0;0;0;0;0
+2.5;18;21504;2.7305;1176;1500;0;0;0;0;0;0;0
+2.6;18;21504;2.7305;1166;1500;0;0;0;0;0;0;0
+2.7;18;21504;2.7305;1157;1500;0;0;0;0;0;0;0
+2.8;18;21504;2.7305;1147;1500;0;0;0;0;0;0;0
+2.9;18;21504;2.7305;1138;1500;0;0;0;0;0;0;0
+3;18;21504;2.7305;1128;1500;0;0;0;0;0;0;0
+3.1;18;21504;2.7305;1119;1500;0;0;0;0;0;0;0
+3.2;18;21504;2.7305;1110;1500;0;0;0;0;0;0;0
+3.3;18;21504;2.7305;1101;1500;0;0;0;0;0;0;0
+3.4;18;21504;2.7305;1092;1500;0;0;0;0;0;0;0
+3.5;18;21504;2.7305;1083;1500;0;0;0;0;0;0;0
+3.6;18;21504;2.7305;1074;1500;0;0;0;0;0;0;0
+3.7;18;21504;2.7305;1065;1500;0;0;0;0;0;0;0
+3.8;18;21504;2.7305;1057;1500;0;0;0;0;0;0;0
+3.9;18;21504;2.7305;1048;1500;0;0;0;0;0;0;0
+4;18;21504;2.7305;1040;1500;0;0;0;0;0;0;0
+4.1;18;21504;2.7305;1031;1500;0;0;0;0;0;0;0
+4.2;18;21504;2.7305;1023;1500;0;0;0;0;0;0;0
+4.3;18;21504;2.7305;1015;1500;0;0;0;0;0;0;0
+4.4;18;21504;2.7305;1007;1500;0;0;0;0;0;0;0
+4.5;18;21504;2.7305;1000;1500;0;0;0;0;0;0;0
+4.6;18;21504;2.7305;992;1500;0;0;0;0;0;0;0
+4.7;18;21504;2.7305;984;1500;0;0;0;0;0;0;0
+4.8;18;21504;2.7305;976;1500;0;0;0;0;0;0;0
+4.9;18;21504;2.7305;969;1500;0;0;0;0;0;0;0
+5;18;21504;2.7305;961;1500;0;0;0;0;0;0;0
+5.1;18;21504;2.7305;954;1500;0;0;0;0;0;0;0
+5.2;18;21504;2.7305;946;1500;0;0;0;0;0;0;0
+5.3;18;21504;2.7305;939;1500;0;0;0;0;0;0;0
+5.4;18;21504;2.7305;931;1500;0;0;0;0;0;0;0
+5.5;18;21504;2.7305;924;1500;0;0;0;0;0;0;0
+5.6;18;21504;2.7305;917;1500;0;0;0;0;0;0;0
+5.7;18;21504;2.7305;910;1500;0;0;0;0;0;0;0
+5.8;18;21504;2.7305;903;1500;0;0;0;0;0;0;0
+5.9;18;21504;2.7305;895;1500;0;0;0;0;0;0;0
+6;18;21504;2.7305;888;1500;0;0;0;0;0;0;0
+6.1;18;21504;2.7305;881;1500;0;0;0;0;0;0;0
+6.2;18;21504;2.7305;875;1500;0;0;0;0;0;0;0
+6.3;18;21504;2.7305;868;1500;0;0;0;0;0;0;0
+6.4;18;21504;2.7305;861;1500;0;0;0;0;0;0;0
+6.5;18;21504;2.7305;854;1500;0;0;0;0;0;0;0
+6.6;18;21504;2.7305;848;1500;0;0;0;0;0;0;0
+6.7;18;21504;2.7305;841;1500;0;0;0;0;0;0;0
+6.8;18;21504;2.7305;834;1500;0;0;0;0;0;0;0
+6.9;18;21504;2.7305;828;1500;0;0;0;0;0;0;0
+7;18;21504;2.7305;821;1500;0;0;0;0;0;0;0
+7.1;18;21504;2.7305;812;1500;0;0;0;0;0;0;0
+7.2;18;21504;2.7305;802;1500;0;0;0;0;0;0;0
+7.3;18;21504;2.7305;792;1500;0;0;0;0;0;0;0
+7.4;18;21504;2.7305;783;1500;0;0;0;0;0;0;0
+7.5;18;21504;2.7305;774;1500;0;0;0;0;0;0;0
+7.6;18;21504;2.7305;764;1500;0;0;0;0;0;0;0
+7.7;18;21504;2.7305;755;1500;0;0;0;0;0;0;0
+7.8;18;21504;2.7305;746;1500;0;0;0;0;0;0;0
+7.9;18;21504;2.7305;737;1500;0;0;0;0;0;0;0
+8;18;21504;2.7305;729;1500;0;0;0;0;0;0;0
+8.1;18;21504;2.7305;720;1500;0;0;0;0;0;0;0
+8.2;18;21504;2.7305;711;1500;0;0;0;0;0;0;0
+8.3;18;21504;2.7305;703;1500;0;0;0;0;0;0;0
+8.4;18;21504;2.7305;694;1500;0;0;0;0;0;0;0
+8.5;18;21504;2.7305;686;1500;0;0;0;0;0;0;0
+8.6;18;21504;2.7305;678;1500;0;0;0;0;0;0;0
+8.7;18;21504;2.7305;670;1500;0;0;0;0;0;0;0
+8.8;18;21504;2.7305;662;1500;0;0;0;0;0;0;0
+8.9;18;21504;2.7305;654;1500;0;0;0;0;0;0;0
+9;18;21504;2.7305;646;1500;0;0;0;0;0;0;0
+9.1;18;21504;2.7305;638;1500;0;0;0;0;0;0;0
+9.2;18;21504;2.7305;631;1500;0;0;0;0;0;0;0
+9.3;18;21504;2.7305;623;1500;0;0;0;0;0;0;0
+9.4;18;21504;2.7305;616;1500;0;0;0;0;0;0;0
+9.5;18;21504;2.7305;609;1500;0;0;0;0;0;0;0
+9.6;18;21504;2.7305;601;1500;0;0;0;0;0;0;0
+9.7;18;21504;2.7305;594;1500;0;0;0;0;0;0;0
+9.8;18;21504;2.7305;587;1500;0;0;0;0;0;0;0
+9.9;18;21504;2.7305;580;1500;0;0;0;0;0;0;0
+10;18;21504;2.7305;573;1500;0;0;0;0;0;0;0
+10.1;18;21504;2.7305;553;1500;0;0;0;0;0;0;0
+10.2;18;21504;2.7305;534;1500;0;0;0;0;0;0;0
+10.3;18;21504;2.7305;515;1500;0;0;0;0;0;0;0
+10.4;18;21504;2.7305;497;1500;0;0;0;0;0;0;0
+10.5;18;21504;2.7305;479;1500;0;0;0;0;0;0;0
+10.6;18;21504;2.7305;462;1500;0;0;0;0;0;0;0
+10.7;18;21504;2.7305;446;1500;0;0;0;0;0;0;0
+10.8;18;21504;2.7305;430;1500;0;0;0;0;0;0;0
+10.9;18;21504;2.7305;415;1500;0;0;0;0;0;0;0
+11;18;21504;2.7305;401;1500;0;0;0;0;0;0;0
+11.1;18;21504;2.7305;387;1500;0;0;0;0;0;0;0
+11.2;18;21504;2.7305;373;1500;0;0;0;0;0;0;0
+11.3;18;21504;2.7305;360;1500;0;0;0;0;0;0;0
+11.4;18;21504;2.7305;347;1500;0;0;0;0;0;0;0
+11.5;18;21504;2.7305;335;1500;0;0;0;0;0;0;0
+11.6;18;21504;2.7305;323;1500;0;0;0;0;0;0;0
+11.7;18;21504;2.7305;312;1500;0;0;0;0;0;0;0
+11.8;18;21504;2.7305;301;1500;0;0;0;0;0;0;0
+11.9;18;21504;2.7305;290;1500;0;0;0;0;0;0;0
+12;18;21504;2.7305;280;1500;0;0;0;0;0;0;0
+12.1;18;21504;2.7305;270;1500;0;0;0;0;0;0;0
+12.2;18;21504;2.7305;261;1500;0;0;0;0;0;0;0
+12.3;18;21504;2.7305;252;1500;0;0;0;0;0;0;0
+12.4;18;21504;2.7305;243;1500;0;0;0;0;0;0;0
+12.5;18;21504;2.7305;234;1500;0;0;0;0;0;0;0
+12.6;18;21504;2.7305;226;1500;0;0;0;0;0;0;0
+12.7;18;21504;2.7305;218;1500;0;0;0;0;0;0;0
+12.8;18;21504;2.7305;210;1500;0;0;0;0;0;0;0
+12.9;18;21504;2.7305;203;1500;0;0;0;0;0;0;0
+13;18;21504;2.7305;196;1500;0;0;0;0;0;0;0
+13.1;18;21504;2.7305;183;1500;0;0;0;0;0;0;0
+13.2;18;21504;2.7305;171;1500;0;0;0;0;0;0;0
+13.3;18;21504;2.7305;160;1500;0;0;0;0;0;0;0
+13.4;18;21504;2.7305;150;1500;0;0;0;0;0;0;0
+13.5;18;21504;2.7305;140;1500;0;0;0;0;0;0;0
+13.6;18;21504;2.7305;131;1500;0;0;0;0;0;0;0
+13.7;18;21504;2.7305;122;1500;0;0;0;0;0;0;0
+13.8;18;21504;2.7305;114;1500;0;0;0;0;0;0;0
+13.9;18;21504;2.7305;107;1500;0;0;0;0;0;0;0
+14;18;21504;2.7305;100;1500;0;0;0;0;0;0;0
+14.1;18;21504;2.7305;93;1500;0;0;0;0;0;0;0
+14.2;18;21504;2.7305;87;1500;0;0;0;0;0;0;0
+14.3;18;21504;2.7305;82;1500;0;0;0;0;0;0;0
+14.4;18;21504;2.7305;76;1500;0;0;0;0;0;0;0
+14.5;18;21504;2.7305;71;1500;0;0;0;0;0;0;0
+14.6;18;21504;2.7305;67;1500;0;0;0;0;0;0;0
+14.7;18;21504;2.7305;62;1500;0;0;0;0;0;0;0
+14.8;18;21504;2.7305;58;1500;0;0;0;0;0;0;0
+14.9;18;21504;2.7305;55;1500;0;0;0;0;0;0;0
+15;18;21504;2.7305;51;1500;0;0;0;0;0;0;0
+15.1;18;21504;2.7305;48;1500;0;0;0;0;0;0;0
+15.2;18;21504;2.7305;45;1500;0;0;0;0;0;0;0
+15.3;18;21504;2.7305;42;1500;0;0;0;0;0;0;0
+15.4;18;21504;2.7305;39;1500;0;0;0;0;0;0;0
+15.5;18;21504;2.7305;36;1500;0;0;0;0;0;0;0
+15.6;18;21504;2.7305;34;1500;0;0;0;0;0;0;0
+15.7;18;21504;2.7305;32;1500;0;0;0;0;0;0;0
+15.8;18;21504;2.7305;30;1500;0;0;0;0;0;0;0
+15.9;18;21504;2.7305;28;1500;0;0;0;0;0;0;0
+16;18;21504;2.7305;26;1500;0;0;0;0;0;0;0
+16.1;18;21504;2.7305;23;1500;0;0;0;0;0;0;0
+16.2;18;21504;2.7305;21;1500;0;0;0;0;0;0;0
+16.3;18;21504;2.7305;18;1500;0;0;0;0;0;0;0
+16.4;18;21504;2.7305;16;1500;0;0;0;0;0;0;0
+16.5;18;21504;2.7305;14;1500;0;0;0;0;0;0;0
+16.6;18;21504;2.7305;13;1500;0;0;0;0;0;0;0
+16.7;18;21504;2.7305;11;1500;0;0;0;0;0;0;0
+16.8;18;21504;2.7305;10;1500;0;0;0;0;0;0;0
+16.9;18;21504;2.7305;9;1500;0;0;0;0;0;0;0
+17;18;21504;2.7305;8;1500;0;0;0;0;0;0;0
+17.1;18;21504;2.7305;7;1500;0;0;0;0;0;0;0
+17.2;18;21504;2.7305;6;1500;0;0;0;0;0;0;0
+17.3;18;21504;2.7305;6;1500;0;0;0;0;0;0;0
+17.4;18;21504;2.7305;5;1500;0;0;0;0;0;0;0
+17.5;18;21504;2.7305;4;1500;0;0;0;0;0;0;0
+17.6;18;21504;2.7305;4;1500;0;0;0;0;0;0;0
+17.7;18;21504;2.7305;3;1500;0;0;0;0;0;0;0
+17.8;18;21504;2.7305;3;1500;0;0;0;0;0;0;0
+17.9;18;21504;2.7305;3;1500;0;0;0;0;0;0;0
+18;18;21504;2.7305;2;1500;0;0;0;0;0;0;0
+18.1;18;21504;2.7305;2;1500;0;0;0;0;0;0;0
+18.2;18;21504;2.7305;2;1500;0;0;0;0;0;0;0
+18.3;18;21504;2.7305;2;1500;0;0;0;0;0;0;0
+18.4;18;21504;2.7305;2;1500;0;0;0;0;0;0;0
+18.5;18;21504;2.7305;1;1500;0;0;0;0;0;0;0
+18.6;18;21504;2.7305;1;1500;0;0;0;0;0;0;0
+18.7;18;21504;2.7305;1;1500;0;0;0;0;0;0;0
+18.8;18;21504;2.7305;1;1500;0;0;0;0;0;0;0
+18.9;18;21504;2.7305;1;1500;0;0;0;0;0;0;0
+19;18;21504;2.7305;1;1500;0;0;0;0;0;0;0
+19.1;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+19.2;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+19.3;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+19.4;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+19.5;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+19.6;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+19.7;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+19.8;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+19.9;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+20;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+20.1;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+20.2;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+20.3;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+20.4;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+20.5;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+20.6;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+20.7;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+20.8;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+20.9;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+21;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+21.1;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+21.2;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+21.3;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+21.4;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+21.5;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+21.6;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+21.7;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+21.8;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+21.9;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+22;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+22.1;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+22.2;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+22.3;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+22.4;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+22.5;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+22.6;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+22.7;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+22.8;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+22.9;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+23;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+23.1;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+23.2;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+23.3;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+23.4;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+23.5;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+23.6;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+23.7;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+23.8;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+23.9;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+24;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+24.1;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+24.2;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+24.3;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+24.4;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+24.5;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+24.6;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+24.7;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+24.8;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+24.9;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
+25;18;21504;2.7305;0;1500;0;0;0;0;0;0;0
diff --git a/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs19_cdlc_mimo2x2_dl.csv b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs19_cdlc_mimo2x2_dl.csv
new file mode 100644
index 0000000000..037e59e6a3
--- /dev/null
+++ b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs19_cdlc_mimo2x2_dl.csv
@@ -0,0 +1,302 @@
+SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
+-5;19;24072;3.0293;1500;1500;0;0;0;0;0;0;0
+-4.9;19;24072;3.0293;1500;1500;0;0;0;0;0;0;0
+-4.8;19;24072;3.0293;1500;1500;0;0;0;0;0;0;0
+-4.7;19;24072;3.0293;1500;1500;0;0;0;0;0;0;0
+-4.6;19;24072;3.0293;1500;1500;0;0;0;0;0;0;0
+-4.5;19;24072;3.0293;1500;1500;0;0;0;0;0;0;0
+-4.4;19;24072;3.0293;1500;1500;0;0;0;0;0;0;0
+-4.3;19;24072;3.0293;1500;1500;0;0;0;0;0;0;0
+-4.2;19;24072;3.0293;1500;1500;0;0;0;0;0;0;0
+-4.1;19;24072;3.0293;1500;1500;0;0;0;0;0;0;0
+-4;19;24072;3.0293;1500;1500;0;0;0;0;0;0;0
+-3.9;19;24072;3.0293;1500;1500;0;0;0;0;0;0;0
+-3.8;19;24072;3.0293;1500;1500;0;0;0;0;0;0;0
+-3.7;19;24072;3.0293;1500;1500;0;0;0;0;0;0;0
+-3.6;19;24072;3.0293;1500;1500;0;0;0;0;0;0;0
+-3.5;19;24072;3.0293;1500;1500;0;0;0;0;0;0;0
+-3.4;19;24072;3.0293;1500;1500;0;0;0;0;0;0;0
+-3.3;19;24072;3.0293;1500;1500;0;0;0;0;0;0;0
+-3.2;19;24072;3.0293;1500;1500;0;0;0;0;0;0;0
+-3.1;19;24072;3.0293;1500;1500;0;0;0;0;0;0;0
+-3;19;24072;3.0293;1500;1500;0;0;0;0;0;0;0
+-2.9;19;24072;3.0293;1500;1500;0;0;0;0;0;0;0
+-2.8;19;24072;3.0293;1500;1500;0;0;0;0;0;0;0
+-2.7;19;24072;3.0293;1500;1500;0;0;0;0;0;0;0
+-2.6;19;24072;3.0293;1500;1500;0;0;0;0;0;0;0
+-2.5;19;24072;3.0293;1500;1500;0;0;0;0;0;0;0
+-2.4;19;24072;3.0293;1500;1500;0;0;0;0;0;0;0
+-2.3;19;24072;3.0293;1500;1500;0;0;0;0;0;0;0
+-2.2;19;24072;3.0293;1500;1500;0;0;0;0;0;0;0
+-2.1;19;24072;3.0293;1500;1500;0;0;0;0;0;0;0
+-2;19;24072;3.0293;1500;1500;0;0;0;0;0;0;0
+-1.9;19;24072;3.0293;1496;1500;0;0;0;0;0;0;0
+-1.8;19;24072;3.0293;1492;1500;0;0;0;0;0;0;0
+-1.7;19;24072;3.0293;1489;1500;0;0;0;0;0;0;0
+-1.6;19;24072;3.0293;1485;1500;0;0;0;0;0;0;0
+-1.5;19;24072;3.0293;1482;1500;0;0;0;0;0;0;0
+-1.4;19;24072;3.0293;1478;1500;0;0;0;0;0;0;0
+-1.3;19;24072;3.0293;1474;1500;0;0;0;0;0;0;0
+-1.2;19;24072;3.0293;1471;1500;0;0;0;0;0;0;0
+-1.1;19;24072;3.0293;1467;1500;0;0;0;0;0;0;0
+-1;19;24072;3.0293;1464;1500;0;0;0;0;0;0;0
+-0.9;19;24072;3.0293;1460;1500;0;0;0;0;0;0;0
+-0.8;19;24072;3.0293;1456;1500;0;0;0;0;0;0;0
+-0.7;19;24072;3.0293;1453;1500;0;0;0;0;0;0;0
+-0.6;19;24072;3.0293;1449;1500;0;0;0;0;0;0;0
+-0.5;19;24072;3.0293;1446;1500;0;0;0;0;0;0;0
+-0.4;19;24072;3.0293;1442;1500;0;0;0;0;0;0;0
+-0.3;19;24072;3.0293;1439;1500;0;0;0;0;0;0;0
+-0.2;19;24072;3.0293;1435;1500;0;0;0;0;0;0;0
+-0.1;19;24072;3.0293;1432;1500;0;0;0;0;0;0;0
+0;19;24072;3.0293;1428;1500;0;0;0;0;0;0;0
+0.1;19;24072;3.0293;1425;1500;0;0;0;0;0;0;0
+0.2;19;24072;3.0293;1421;1500;0;0;0;0;0;0;0
+0.3;19;24072;3.0293;1418;1500;0;0;0;0;0;0;0
+0.4;19;24072;3.0293;1414;1500;0;0;0;0;0;0;0
+0.5;19;24072;3.0293;1411;1500;0;0;0;0;0;0;0
+0.6;19;24072;3.0293;1408;1500;0;0;0;0;0;0;0
+0.7;19;24072;3.0293;1404;1500;0;0;0;0;0;0;0
+0.8;19;24072;3.0293;1401;1500;0;0;0;0;0;0;0
+0.9;19;24072;3.0293;1397;1500;0;0;0;0;0;0;0
+1;19;24072;3.0293;1394;1500;0;0;0;0;0;0;0
+1.1;19;24072;3.0293;1384;1500;0;0;0;0;0;0;0
+1.2;19;24072;3.0293;1373;1500;0;0;0;0;0;0;0
+1.3;19;24072;3.0293;1363;1500;0;0;0;0;0;0;0
+1.4;19;24072;3.0293;1353;1500;0;0;0;0;0;0;0
+1.5;19;24072;3.0293;1343;1500;0;0;0;0;0;0;0
+1.6;19;24072;3.0293;1333;1500;0;0;0;0;0;0;0
+1.7;19;24072;3.0293;1323;1500;0;0;0;0;0;0;0
+1.8;19;24072;3.0293;1313;1500;0;0;0;0;0;0;0
+1.9;19;24072;3.0293;1303;1500;0;0;0;0;0;0;0
+2;19;24072;3.0293;1293;1500;0;0;0;0;0;0;0
+2.1;19;24072;3.0293;1284;1500;0;0;0;0;0;0;0
+2.2;19;24072;3.0293;1274;1500;0;0;0;0;0;0;0
+2.3;19;24072;3.0293;1265;1500;0;0;0;0;0;0;0
+2.4;19;24072;3.0293;1255;1500;0;0;0;0;0;0;0
+2.5;19;24072;3.0293;1246;1500;0;0;0;0;0;0;0
+2.6;19;24072;3.0293;1236;1500;0;0;0;0;0;0;0
+2.7;19;24072;3.0293;1227;1500;0;0;0;0;0;0;0
+2.8;19;24072;3.0293;1218;1500;0;0;0;0;0;0;0
+2.9;19;24072;3.0293;1209;1500;0;0;0;0;0;0;0
+3;19;24072;3.0293;1200;1500;0;0;0;0;0;0;0
+3.1;19;24072;3.0293;1191;1500;0;0;0;0;0;0;0
+3.2;19;24072;3.0293;1182;1500;0;0;0;0;0;0;0
+3.3;19;24072;3.0293;1173;1500;0;0;0;0;0;0;0
+3.4;19;24072;3.0293;1165;1500;0;0;0;0;0;0;0
+3.5;19;24072;3.0293;1156;1500;0;0;0;0;0;0;0
+3.6;19;24072;3.0293;1147;1500;0;0;0;0;0;0;0
+3.7;19;24072;3.0293;1139;1500;0;0;0;0;0;0;0
+3.8;19;24072;3.0293;1130;1500;0;0;0;0;0;0;0
+3.9;19;24072;3.0293;1122;1500;0;0;0;0;0;0;0
+4;19;24072;3.0293;1113;1500;0;0;0;0;0;0;0
+4.1;19;24072;3.0293;1104;1500;0;0;0;0;0;0;0
+4.2;19;24072;3.0293;1095;1500;0;0;0;0;0;0;0
+4.3;19;24072;3.0293;1087;1500;0;0;0;0;0;0;0
+4.4;19;24072;3.0293;1078;1500;0;0;0;0;0;0;0
+4.5;19;24072;3.0293;1069;1500;0;0;0;0;0;0;0
+4.6;19;24072;3.0293;1060;1500;0;0;0;0;0;0;0
+4.7;19;24072;3.0293;1052;1500;0;0;0;0;0;0;0
+4.8;19;24072;3.0293;1043;1500;0;0;0;0;0;0;0
+4.9;19;24072;3.0293;1035;1500;0;0;0;0;0;0;0
+5;19;24072;3.0293;1026;1500;0;0;0;0;0;0;0
+5.1;19;24072;3.0293;1018;1500;0;0;0;0;0;0;0
+5.2;19;24072;3.0293;1010;1500;0;0;0;0;0;0;0
+5.3;19;24072;3.0293;1002;1500;0;0;0;0;0;0;0
+5.4;19;24072;3.0293;993;1500;0;0;0;0;0;0;0
+5.5;19;24072;3.0293;985;1500;0;0;0;0;0;0;0
+5.6;19;24072;3.0293;977;1500;0;0;0;0;0;0;0
+5.7;19;24072;3.0293;970;1500;0;0;0;0;0;0;0
+5.8;19;24072;3.0293;962;1500;0;0;0;0;0;0;0
+5.9;19;24072;3.0293;954;1500;0;0;0;0;0;0;0
+6;19;24072;3.0293;946;1500;0;0;0;0;0;0;0
+6.1;19;24072;3.0293;938;1500;0;0;0;0;0;0;0
+6.2;19;24072;3.0293;931;1500;0;0;0;0;0;0;0
+6.3;19;24072;3.0293;923;1500;0;0;0;0;0;0;0
+6.4;19;24072;3.0293;916;1500;0;0;0;0;0;0;0
+6.5;19;24072;3.0293;908;1500;0;0;0;0;0;0;0
+6.6;19;24072;3.0293;901;1500;0;0;0;0;0;0;0
+6.7;19;24072;3.0293;894;1500;0;0;0;0;0;0;0
+6.8;19;24072;3.0293;886;1500;0;0;0;0;0;0;0
+6.9;19;24072;3.0293;879;1500;0;0;0;0;0;0;0
+7;19;24072;3.0293;872;1500;0;0;0;0;0;0;0
+7.1;19;24072;3.0293;865;1500;0;0;0;0;0;0;0
+7.2;19;24072;3.0293;858;1500;0;0;0;0;0;0;0
+7.3;19;24072;3.0293;850;1500;0;0;0;0;0;0;0
+7.4;19;24072;3.0293;843;1500;0;0;0;0;0;0;0
+7.5;19;24072;3.0293;836;1500;0;0;0;0;0;0;0
+7.6;19;24072;3.0293;829;1500;0;0;0;0;0;0;0
+7.7;19;24072;3.0293;822;1500;0;0;0;0;0;0;0
+7.8;19;24072;3.0293;815;1500;0;0;0;0;0;0;0
+7.9;19;24072;3.0293;808;1500;0;0;0;0;0;0;0
+8;19;24072;3.0293;802;1500;0;0;0;0;0;0;0
+8.1;19;24072;3.0293;795;1500;0;0;0;0;0;0;0
+8.2;19;24072;3.0293;788;1500;0;0;0;0;0;0;0
+8.3;19;24072;3.0293;781;1500;0;0;0;0;0;0;0
+8.4;19;24072;3.0293;775;1500;0;0;0;0;0;0;0
+8.5;19;24072;3.0293;768;1500;0;0;0;0;0;0;0
+8.6;19;24072;3.0293;762;1500;0;0;0;0;0;0;0
+8.7;19;24072;3.0293;756;1500;0;0;0;0;0;0;0
+8.8;19;24072;3.0293;749;1500;0;0;0;0;0;0;0
+8.9;19;24072;3.0293;743;1500;0;0;0;0;0;0;0
+9;19;24072;3.0293;737;1500;0;0;0;0;0;0;0
+9.1;19;24072;3.0293;730;1500;0;0;0;0;0;0;0
+9.2;19;24072;3.0293;724;1500;0;0;0;0;0;0;0
+9.3;19;24072;3.0293;718;1500;0;0;0;0;0;0;0
+9.4;19;24072;3.0293;712;1500;0;0;0;0;0;0;0
+9.5;19;24072;3.0293;706;1500;0;0;0;0;0;0;0
+9.6;19;24072;3.0293;700;1500;0;0;0;0;0;0;0
+9.7;19;24072;3.0293;694;1500;0;0;0;0;0;0;0
+9.8;19;24072;3.0293;688;1500;0;0;0;0;0;0;0
+9.9;19;24072;3.0293;683;1500;0;0;0;0;0;0;0
+10;19;24072;3.0293;677;1500;0;0;0;0;0;0;0
+10.1;19;24072;3.0293;662;1500;0;0;0;0;0;0;0
+10.2;19;24072;3.0293;647;1500;0;0;0;0;0;0;0
+10.3;19;24072;3.0293;632;1500;0;0;0;0;0;0;0
+10.4;19;24072;3.0293;618;1500;0;0;0;0;0;0;0
+10.5;19;24072;3.0293;603;1500;0;0;0;0;0;0;0
+10.6;19;24072;3.0293;590;1500;0;0;0;0;0;0;0
+10.7;19;24072;3.0293;576;1500;0;0;0;0;0;0;0
+10.8;19;24072;3.0293;563;1500;0;0;0;0;0;0;0
+10.9;19;24072;3.0293;550;1500;0;0;0;0;0;0;0
+11;19;24072;3.0293;538;1500;0;0;0;0;0;0;0
+11.1;19;24072;3.0293;526;1500;0;0;0;0;0;0;0
+11.2;19;24072;3.0293;514;1500;0;0;0;0;0;0;0
+11.3;19;24072;3.0293;502;1500;0;0;0;0;0;0;0
+11.4;19;24072;3.0293;491;1500;0;0;0;0;0;0;0
+11.5;19;24072;3.0293;480;1500;0;0;0;0;0;0;0
+11.6;19;24072;3.0293;469;1500;0;0;0;0;0;0;0
+11.7;19;24072;3.0293;458;1500;0;0;0;0;0;0;0
+11.8;19;24072;3.0293;448;1500;0;0;0;0;0;0;0
+11.9;19;24072;3.0293;437;1500;0;0;0;0;0;0;0
+12;19;24072;3.0293;428;1500;0;0;0;0;0;0;0
+12.1;19;24072;3.0293;418;1500;0;0;0;0;0;0;0
+12.2;19;24072;3.0293;408;1500;0;0;0;0;0;0;0
+12.3;19;24072;3.0293;399;1500;0;0;0;0;0;0;0
+12.4;19;24072;3.0293;390;1500;0;0;0;0;0;0;0
+12.5;19;24072;3.0293;381;1500;0;0;0;0;0;0;0
+12.6;19;24072;3.0293;372;1500;0;0;0;0;0;0;0
+12.7;19;24072;3.0293;364;1500;0;0;0;0;0;0;0
+12.8;19;24072;3.0293;356;1500;0;0;0;0;0;0;0
+12.9;19;24072;3.0293;348;1500;0;0;0;0;0;0;0
+13;19;24072;3.0293;340;1500;0;0;0;0;0;0;0
+13.1;19;24072;3.0293;322;1500;0;0;0;0;0;0;0
+13.2;19;24072;3.0293;306;1500;0;0;0;0;0;0;0
+13.3;19;24072;3.0293;290;1500;0;0;0;0;0;0;0
+13.4;19;24072;3.0293;275;1500;0;0;0;0;0;0;0
+13.5;19;24072;3.0293;261;1500;0;0;0;0;0;0;0
+13.6;19;24072;3.0293;247;1500;0;0;0;0;0;0;0
+13.7;19;24072;3.0293;235;1500;0;0;0;0;0;0;0
+13.8;19;24072;3.0293;222;1500;0;0;0;0;0;0;0
+13.9;19;24072;3.0293;211;1500;0;0;0;0;0;0;0
+14;19;24072;3.0293;200;1500;0;0;0;0;0;0;0
+14.1;19;24072;3.0293;190;1500;0;0;0;0;0;0;0
+14.2;19;24072;3.0293;180;1500;0;0;0;0;0;0;0
+14.3;19;24072;3.0293;171;1500;0;0;0;0;0;0;0
+14.4;19;24072;3.0293;162;1500;0;0;0;0;0;0;0
+14.5;19;24072;3.0293;154;1500;0;0;0;0;0;0;0
+14.6;19;24072;3.0293;146;1500;0;0;0;0;0;0;0
+14.7;19;24072;3.0293;138;1500;0;0;0;0;0;0;0
+14.8;19;24072;3.0293;131;1500;0;0;0;0;0;0;0
+14.9;19;24072;3.0293;124;1500;0;0;0;0;0;0;0
+15;19;24072;3.0293;118;1500;0;0;0;0;0;0;0
+15.1;19;24072;3.0293;112;1500;0;0;0;0;0;0;0
+15.2;19;24072;3.0293;106;1500;0;0;0;0;0;0;0
+15.3;19;24072;3.0293;101;1500;0;0;0;0;0;0;0
+15.4;19;24072;3.0293;95;1500;0;0;0;0;0;0;0
+15.5;19;24072;3.0293;90;1500;0;0;0;0;0;0;0
+15.6;19;24072;3.0293;86;1500;0;0;0;0;0;0;0
+15.7;19;24072;3.0293;81;1500;0;0;0;0;0;0;0
+15.8;19;24072;3.0293;77;1500;0;0;0;0;0;0;0
+15.9;19;24072;3.0293;73;1500;0;0;0;0;0;0;0
+16;19;24072;3.0293;69;1500;0;0;0;0;0;0;0
+16.1;19;24072;3.0293;64;1500;0;0;0;0;0;0;0
+16.2;19;24072;3.0293;59;1500;0;0;0;0;0;0;0
+16.3;19;24072;3.0293;54;1500;0;0;0;0;0;0;0
+16.4;19;24072;3.0293;50;1500;0;0;0;0;0;0;0
+16.5;19;24072;3.0293;46;1500;0;0;0;0;0;0;0
+16.6;19;24072;3.0293;43;1500;0;0;0;0;0;0;0
+16.7;19;24072;3.0293;39;1500;0;0;0;0;0;0;0
+16.8;19;24072;3.0293;36;1500;0;0;0;0;0;0;0
+16.9;19;24072;3.0293;33;1500;0;0;0;0;0;0;0
+17;19;24072;3.0293;31;1500;0;0;0;0;0;0;0
+17.1;19;24072;3.0293;28;1500;0;0;0;0;0;0;0
+17.2;19;24072;3.0293;26;1500;0;0;0;0;0;0;0
+17.3;19;24072;3.0293;24;1500;0;0;0;0;0;0;0
+17.4;19;24072;3.0293;22;1500;0;0;0;0;0;0;0
+17.5;19;24072;3.0293;21;1500;0;0;0;0;0;0;0
+17.6;19;24072;3.0293;19;1500;0;0;0;0;0;0;0
+17.7;19;24072;3.0293;17;1500;0;0;0;0;0;0;0
+17.8;19;24072;3.0293;16;1500;0;0;0;0;0;0;0
+17.9;19;24072;3.0293;15;1500;0;0;0;0;0;0;0
+18;19;24072;3.0293;14;1500;0;0;0;0;0;0;0
+18.1;19;24072;3.0293;13;1500;0;0;0;0;0;0;0
+18.2;19;24072;3.0293;12;1500;0;0;0;0;0;0;0
+18.3;19;24072;3.0293;11;1500;0;0;0;0;0;0;0
+18.4;19;24072;3.0293;10;1500;0;0;0;0;0;0;0
+18.5;19;24072;3.0293;9;1500;0;0;0;0;0;0;0
+18.6;19;24072;3.0293;8;1500;0;0;0;0;0;0;0
+18.7;19;24072;3.0293;8;1500;0;0;0;0;0;0;0
+18.8;19;24072;3.0293;7;1500;0;0;0;0;0;0;0
+18.9;19;24072;3.0293;7;1500;0;0;0;0;0;0;0
+19;19;24072;3.0293;6;1500;0;0;0;0;0;0;0
+19.1;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+19.2;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+19.3;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+19.4;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+19.5;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+19.6;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+19.7;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+19.8;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+19.9;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+20;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+20.1;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+20.2;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+20.3;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+20.4;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+20.5;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+20.6;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+20.7;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+20.8;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+20.9;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+21;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+21.1;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+21.2;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+21.3;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+21.4;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+21.5;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+21.6;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+21.7;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+21.8;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+21.9;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+22;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+22.1;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+22.2;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+22.3;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+22.4;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+22.5;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+22.6;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+22.7;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+22.8;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+22.9;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+23;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+23.1;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+23.2;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+23.3;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+23.4;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+23.5;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+23.6;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+23.7;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+23.8;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+23.9;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+24;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+24.1;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+24.2;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+24.3;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+24.4;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+24.5;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+24.6;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+24.7;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+24.8;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+24.9;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
+25;19;24072;3.0293;0;1500;0;0;0;0;0;0;0
diff --git a/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs1_cdlc_mimo2x2_dl.csv b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs1_cdlc_mimo2x2_dl.csv
new file mode 100644
index 0000000000..5a967572f4
--- /dev/null
+++ b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs1_cdlc_mimo2x2_dl.csv
@@ -0,0 +1,152 @@
+SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
+-15;1;2472;0.3066;1491;1500;0;0;0;0;0;0;0
+-14.9;1;2472;0.3066;1481;1500;0;0;0;0;0;0;0
+-14.8;1;2472;0.3066;1472;1500;0;0;0;0;0;0;0
+-14.7;1;2472;0.3066;1463;1500;0;0;0;0;0;0;0
+-14.6;1;2472;0.3066;1454;1500;0;0;0;0;0;0;0
+-14.5;1;2472;0.3066;1445;1500;0;0;0;0;0;0;0
+-14.4;1;2472;0.3066;1436;1500;0;0;0;0;0;0;0
+-14.3;1;2472;0.3066;1427;1500;0;0;0;0;0;0;0
+-14.2;1;2472;0.3066;1418;1500;0;0;0;0;0;0;0
+-14.1;1;2472;0.3066;1409;1500;0;0;0;0;0;0;0
+-14;1;2472;0.3066;1400;1500;0;0;0;0;0;0;0
+-13.9;1;2472;0.3066;1392;1500;0;0;0;0;0;0;0
+-13.8;1;2472;0.3066;1383;1500;0;0;0;0;0;0;0
+-13.7;1;2472;0.3066;1374;1500;0;0;0;0;0;0;0
+-13.6;1;2472;0.3066;1366;1500;0;0;0;0;0;0;0
+-13.5;1;2472;0.3066;1357;1500;0;0;0;0;0;0;0
+-13.4;1;2472;0.3066;1349;1500;0;0;0;0;0;0;0
+-13.3;1;2472;0.3066;1341;1500;0;0;0;0;0;0;0
+-13.2;1;2472;0.3066;1332;1500;0;0;0;0;0;0;0
+-13.1;1;2472;0.3066;1324;1500;0;0;0;0;0;0;0
+-13;1;2472;0.3066;1316;1500;0;0;0;0;0;0;0
+-12.9;1;2472;0.3066;1307;1500;0;0;0;0;0;0;0
+-12.8;1;2472;0.3066;1299;1500;0;0;0;0;0;0;0
+-12.7;1;2472;0.3066;1291;1500;0;0;0;0;0;0;0
+-12.6;1;2472;0.3066;1283;1500;0;0;0;0;0;0;0
+-12.5;1;2472;0.3066;1275;1500;0;0;0;0;0;0;0
+-12.4;1;2472;0.3066;1267;1500;0;0;0;0;0;0;0
+-12.3;1;2472;0.3066;1259;1500;0;0;0;0;0;0;0
+-12.2;1;2472;0.3066;1251;1500;0;0;0;0;0;0;0
+-12.1;1;2472;0.3066;1244;1500;0;0;0;0;0;0;0
+-12;1;2472;0.3066;1236;1500;0;0;0;0;0;0;0
+-11.9;1;2472;0.3066;1222;1500;0;0;0;0;0;0;0
+-11.8;1;2472;0.3066;1207;1500;0;0;0;0;0;0;0
+-11.7;1;2472;0.3066;1193;1500;0;0;0;0;0;0;0
+-11.6;1;2472;0.3066;1179;1500;0;0;0;0;0;0;0
+-11.5;1;2472;0.3066;1166;1500;0;0;0;0;0;0;0
+-11.4;1;2472;0.3066;1152;1500;0;0;0;0;0;0;0
+-11.3;1;2472;0.3066;1139;1500;0;0;0;0;0;0;0
+-11.2;1;2472;0.3066;1126;1500;0;0;0;0;0;0;0
+-11.1;1;2472;0.3066;1113;1500;0;0;0;0;0;0;0
+-11;1;2472;0.3066;1100;1500;0;0;0;0;0;0;0
+-10.9;1;2472;0.3066;1087;1500;0;0;0;0;0;0;0
+-10.8;1;2472;0.3066;1074;1500;0;0;0;0;0;0;0
+-10.7;1;2472;0.3066;1062;1500;0;0;0;0;0;0;0
+-10.6;1;2472;0.3066;1049;1500;0;0;0;0;0;0;0
+-10.5;1;2472;0.3066;1037;1500;0;0;0;0;0;0;0
+-10.4;1;2472;0.3066;1025;1500;0;0;0;0;0;0;0
+-10.3;1;2472;0.3066;1013;1500;0;0;0;0;0;0;0
+-10.2;1;2472;0.3066;1001;1500;0;0;0;0;0;0;0
+-10.1;1;2472;0.3066;990;1500;0;0;0;0;0;0;0
+-10;1;2472;0.3066;978;1500;0;0;0;0;0;0;0
+-9.9;1;2472;0.3066;967;1500;0;0;0;0;0;0;0
+-9.8;1;2472;0.3066;956;1500;0;0;0;0;0;0;0
+-9.7;1;2472;0.3066;945;1500;0;0;0;0;0;0;0
+-9.6;1;2472;0.3066;934;1500;0;0;0;0;0;0;0
+-9.5;1;2472;0.3066;923;1500;0;0;0;0;0;0;0
+-9.4;1;2472;0.3066;912;1500;0;0;0;0;0;0;0
+-9.3;1;2472;0.3066;902;1500;0;0;0;0;0;0;0
+-9.2;1;2472;0.3066;891;1500;0;0;0;0;0;0;0
+-9.1;1;2472;0.3066;881;1500;0;0;0;0;0;0;0
+-9;1;2472;0.3066;870;1500;0;0;0;0;0;0;0
+-8.9;1;2472;0.3066;847;1500;0;0;0;0;0;0;0
+-8.8;1;2472;0.3066;825;1500;0;0;0;0;0;0;0
+-8.7;1;2472;0.3066;802;1500;0;0;0;0;0;0;0
+-8.6;1;2472;0.3066;781;1500;0;0;0;0;0;0;0
+-8.5;1;2472;0.3066;760;1500;0;0;0;0;0;0;0
+-8.4;1;2472;0.3066;740;1500;0;0;0;0;0;0;0
+-8.3;1;2472;0.3066;720;1500;0;0;0;0;0;0;0
+-8.2;1;2472;0.3066;701;1500;0;0;0;0;0;0;0
+-8.1;1;2472;0.3066;682;1500;0;0;0;0;0;0;0
+-8;1;2472;0.3066;664;1500;0;0;0;0;0;0;0
+-7.9;1;2472;0.3066;646;1500;0;0;0;0;0;0;0
+-7.8;1;2472;0.3066;629;1500;0;0;0;0;0;0;0
+-7.7;1;2472;0.3066;612;1500;0;0;0;0;0;0;0
+-7.6;1;2472;0.3066;596;1500;0;0;0;0;0;0;0
+-7.5;1;2472;0.3066;580;1500;0;0;0;0;0;0;0
+-7.4;1;2472;0.3066;564;1500;0;0;0;0;0;0;0
+-7.3;1;2472;0.3066;549;1500;0;0;0;0;0;0;0
+-7.2;1;2472;0.3066;534;1500;0;0;0;0;0;0;0
+-7.1;1;2472;0.3066;520;1500;0;0;0;0;0;0;0
+-7;1;2472;0.3066;506;1500;0;0;0;0;0;0;0
+-6.9;1;2472;0.3066;493;1500;0;0;0;0;0;0;0
+-6.8;1;2472;0.3066;480;1500;0;0;0;0;0;0;0
+-6.7;1;2472;0.3066;467;1500;0;0;0;0;0;0;0
+-6.6;1;2472;0.3066;454;1500;0;0;0;0;0;0;0
+-6.5;1;2472;0.3066;442;1500;0;0;0;0;0;0;0
+-6.4;1;2472;0.3066;430;1500;0;0;0;0;0;0;0
+-6.3;1;2472;0.3066;419;1500;0;0;0;0;0;0;0
+-6.2;1;2472;0.3066;408;1500;0;0;0;0;0;0;0
+-6.1;1;2472;0.3066;397;1500;0;0;0;0;0;0;0
+-6;1;2472;0.3066;386;1500;0;0;0;0;0;0;0
+-5.9;1;2472;0.3066;355;1500;0;0;0;0;0;0;0
+-5.8;1;2472;0.3066;326;1500;0;0;0;0;0;0;0
+-5.7;1;2472;0.3066;300;1500;0;0;0;0;0;0;0
+-5.6;1;2472;0.3066;276;1500;0;0;0;0;0;0;0
+-5.5;1;2472;0.3066;253;1500;0;0;0;0;0;0;0
+-5.4;1;2472;0.3066;233;1500;0;0;0;0;0;0;0
+-5.3;1;2472;0.3066;214;1500;0;0;0;0;0;0;0
+-5.2;1;2472;0.3066;197;1500;0;0;0;0;0;0;0
+-5.1;1;2472;0.3066;181;1500;0;0;0;0;0;0;0
+-5;1;2472;0.3066;166;1500;0;0;0;0;0;0;0
+-4.9;1;2472;0.3066;153;1500;0;0;0;0;0;0;0
+-4.8;1;2472;0.3066;141;1500;0;0;0;0;0;0;0
+-4.7;1;2472;0.3066;129;1500;0;0;0;0;0;0;0
+-4.6;1;2472;0.3066;119;1500;0;0;0;0;0;0;0
+-4.5;1;2472;0.3066;109;1500;0;0;0;0;0;0;0
+-4.4;1;2472;0.3066;100;1500;0;0;0;0;0;0;0
+-4.3;1;2472;0.3066;92;1500;0;0;0;0;0;0;0
+-4.2;1;2472;0.3066;85;1500;0;0;0;0;0;0;0
+-4.1;1;2472;0.3066;78;1500;0;0;0;0;0;0;0
+-4;1;2472;0.3066;72;1500;0;0;0;0;0;0;0
+-3.9;1;2472;0.3066;66;1500;0;0;0;0;0;0;0
+-3.8;1;2472;0.3066;61;1500;0;0;0;0;0;0;0
+-3.7;1;2472;0.3066;56;1500;0;0;0;0;0;0;0
+-3.6;1;2472;0.3066;51;1500;0;0;0;0;0;0;0
+-3.5;1;2472;0.3066;47;1500;0;0;0;0;0;0;0
+-3.4;1;2472;0.3066;43;1500;0;0;0;0;0;0;0
+-3.3;1;2472;0.3066;40;1500;0;0;0;0;0;0;0
+-3.2;1;2472;0.3066;37;1500;0;0;0;0;0;0;0
+-3.1;1;2472;0.3066;34;1500;0;0;0;0;0;0;0
+-3;1;2472;0.3066;31;1500;0;0;0;0;0;0;0
+-2.9;1;2472;0.3066;26;1500;0;0;0;0;0;0;0
+-2.8;1;2472;0.3066;22;1500;0;0;0;0;0;0;0
+-2.7;1;2472;0.3066;18;1500;0;0;0;0;0;0;0
+-2.6;1;2472;0.3066;15;1500;0;0;0;0;0;0;0
+-2.5;1;2472;0.3066;13;1500;0;0;0;0;0;0;0
+-2.4;1;2472;0.3066;11;1500;0;0;0;0;0;0;0
+-2.3;1;2472;0.3066;9;1500;0;0;0;0;0;0;0
+-2.2;1;2472;0.3066;7;1500;0;0;0;0;0;0;0
+-2.1;1;2472;0.3066;6;1500;0;0;0;0;0;0;0
+-2;1;2472;0.3066;5;1500;0;0;0;0;0;0;0
+-1.9;1;2472;0.3066;4;1500;0;0;0;0;0;0;0
+-1.8;1;2472;0.3066;4;1500;0;0;0;0;0;0;0
+-1.7;1;2472;0.3066;3;1500;0;0;0;0;0;0;0
+-1.6;1;2472;0.3066;3;1500;0;0;0;0;0;0;0
+-1.5;1;2472;0.3066;2;1500;0;0;0;0;0;0;0
+-1.4;1;2472;0.3066;2;1500;0;0;0;0;0;0;0
+-1.3;1;2472;0.3066;2;1500;0;0;0;0;0;0;0
+-1.2;1;2472;0.3066;1;1500;0;0;0;0;0;0;0
+-1.1;1;2472;0.3066;1;1500;0;0;0;0;0;0;0
+-1;1;2472;0.3066;1;1500;0;0;0;0;0;0;0
+-0.9;1;2472;0.3066;1;1500;0;0;0;0;0;0;0
+-0.8;1;2472;0.3066;1;1500;0;0;0;0;0;0;0
+-0.7;1;2472;0.3066;1;1500;0;0;0;0;0;0;0
+-0.6;1;2472;0.3066;0;1500;0;0;0;0;0;0;0
+-0.5;1;2472;0.3066;0;1500;0;0;0;0;0;0;0
+-0.4;1;2472;0.3066;0;1500;0;0;0;0;0;0;0
+-0.3;1;2472;0.3066;0;1500;0;0;0;0;0;0;0
+-0.2;1;2472;0.3066;0;1500;0;0;0;0;0;0;0
+-0.1;1;2472;0.3066;0;1500;0;0;0;0;0;0;0
+0;1;2472;0.3066;0;1500;0;0;0;0;0;0;0
diff --git a/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs20_cdlc_mimo2x2_dl.csv b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs20_cdlc_mimo2x2_dl.csv
new file mode 100644
index 0000000000..05673b15e5
--- /dev/null
+++ b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs20_cdlc_mimo2x2_dl.csv
@@ -0,0 +1,302 @@
+SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
+-2;20;26632;3.3223;1500;1500;0;0;0;0;0;0;0
+-1.9;20;26632;3.3223;1498;1500;0;0;0;0;0;0;0
+-1.8;20;26632;3.3223;1496;1500;0;0;0;0;0;0;0
+-1.7;20;26632;3.3223;1494;1500;0;0;0;0;0;0;0
+-1.6;20;26632;3.3223;1492;1500;0;0;0;0;0;0;0
+-1.5;20;26632;3.3223;1490;1500;0;0;0;0;0;0;0
+-1.4;20;26632;3.3223;1488;1500;0;0;0;0;0;0;0
+-1.3;20;26632;3.3223;1486;1500;0;0;0;0;0;0;0
+-1.2;20;26632;3.3223;1484;1500;0;0;0;0;0;0;0
+-1.1;20;26632;3.3223;1482;1500;0;0;0;0;0;0;0
+-1;20;26632;3.3223;1480;1500;0;0;0;0;0;0;0
+-0.9;20;26632;3.3223;1478;1500;0;0;0;0;0;0;0
+-0.8;20;26632;3.3223;1476;1500;0;0;0;0;0;0;0
+-0.7;20;26632;3.3223;1474;1500;0;0;0;0;0;0;0
+-0.6;20;26632;3.3223;1472;1500;0;0;0;0;0;0;0
+-0.5;20;26632;3.3223;1470;1500;0;0;0;0;0;0;0
+-0.4;20;26632;3.3223;1468;1500;0;0;0;0;0;0;0
+-0.3;20;26632;3.3223;1466;1500;0;0;0;0;0;0;0
+-0.2;20;26632;3.3223;1464;1500;0;0;0;0;0;0;0
+-0.1;20;26632;3.3223;1462;1500;0;0;0;0;0;0;0
+0;20;26632;3.3223;1460;1500;0;0;0;0;0;0;0
+0.1;20;26632;3.3223;1459;1500;0;0;0;0;0;0;0
+0.2;20;26632;3.3223;1457;1500;0;0;0;0;0;0;0
+0.3;20;26632;3.3223;1455;1500;0;0;0;0;0;0;0
+0.4;20;26632;3.3223;1453;1500;0;0;0;0;0;0;0
+0.5;20;26632;3.3223;1451;1500;0;0;0;0;0;0;0
+0.6;20;26632;3.3223;1449;1500;0;0;0;0;0;0;0
+0.7;20;26632;3.3223;1447;1500;0;0;0;0;0;0;0
+0.8;20;26632;3.3223;1445;1500;0;0;0;0;0;0;0
+0.9;20;26632;3.3223;1443;1500;0;0;0;0;0;0;0
+1;20;26632;3.3223;1441;1500;0;0;0;0;0;0;0
+1.1;20;26632;3.3223;1431;1500;0;0;0;0;0;0;0
+1.2;20;26632;3.3223;1422;1500;0;0;0;0;0;0;0
+1.3;20;26632;3.3223;1412;1500;0;0;0;0;0;0;0
+1.4;20;26632;3.3223;1403;1500;0;0;0;0;0;0;0
+1.5;20;26632;3.3223;1393;1500;0;0;0;0;0;0;0
+1.6;20;26632;3.3223;1384;1500;0;0;0;0;0;0;0
+1.7;20;26632;3.3223;1375;1500;0;0;0;0;0;0;0
+1.8;20;26632;3.3223;1365;1500;0;0;0;0;0;0;0
+1.9;20;26632;3.3223;1356;1500;0;0;0;0;0;0;0
+2;20;26632;3.3223;1347;1500;0;0;0;0;0;0;0
+2.1;20;26632;3.3223;1338;1500;0;0;0;0;0;0;0
+2.2;20;26632;3.3223;1329;1500;0;0;0;0;0;0;0
+2.3;20;26632;3.3223;1320;1500;0;0;0;0;0;0;0
+2.4;20;26632;3.3223;1311;1500;0;0;0;0;0;0;0
+2.5;20;26632;3.3223;1302;1500;0;0;0;0;0;0;0
+2.6;20;26632;3.3223;1294;1500;0;0;0;0;0;0;0
+2.7;20;26632;3.3223;1285;1500;0;0;0;0;0;0;0
+2.8;20;26632;3.3223;1276;1500;0;0;0;0;0;0;0
+2.9;20;26632;3.3223;1268;1500;0;0;0;0;0;0;0
+3;20;26632;3.3223;1259;1500;0;0;0;0;0;0;0
+3.1;20;26632;3.3223;1251;1500;0;0;0;0;0;0;0
+3.2;20;26632;3.3223;1242;1500;0;0;0;0;0;0;0
+3.3;20;26632;3.3223;1234;1500;0;0;0;0;0;0;0
+3.4;20;26632;3.3223;1226;1500;0;0;0;0;0;0;0
+3.5;20;26632;3.3223;1218;1500;0;0;0;0;0;0;0
+3.6;20;26632;3.3223;1209;1500;0;0;0;0;0;0;0
+3.7;20;26632;3.3223;1201;1500;0;0;0;0;0;0;0
+3.8;20;26632;3.3223;1193;1500;0;0;0;0;0;0;0
+3.9;20;26632;3.3223;1185;1500;0;0;0;0;0;0;0
+4;20;26632;3.3223;1177;1500;0;0;0;0;0;0;0
+4.1;20;26632;3.3223;1167;1500;0;0;0;0;0;0;0
+4.2;20;26632;3.3223;1157;1500;0;0;0;0;0;0;0
+4.3;20;26632;3.3223;1147;1500;0;0;0;0;0;0;0
+4.4;20;26632;3.3223;1138;1500;0;0;0;0;0;0;0
+4.5;20;26632;3.3223;1128;1500;0;0;0;0;0;0;0
+4.6;20;26632;3.3223;1118;1500;0;0;0;0;0;0;0
+4.7;20;26632;3.3223;1109;1500;0;0;0;0;0;0;0
+4.8;20;26632;3.3223;1099;1500;0;0;0;0;0;0;0
+4.9;20;26632;3.3223;1090;1500;0;0;0;0;0;0;0
+5;20;26632;3.3223;1081;1500;0;0;0;0;0;0;0
+5.1;20;26632;3.3223;1072;1500;0;0;0;0;0;0;0
+5.2;20;26632;3.3223;1063;1500;0;0;0;0;0;0;0
+5.3;20;26632;3.3223;1054;1500;0;0;0;0;0;0;0
+5.4;20;26632;3.3223;1045;1500;0;0;0;0;0;0;0
+5.5;20;26632;3.3223;1036;1500;0;0;0;0;0;0;0
+5.6;20;26632;3.3223;1027;1500;0;0;0;0;0;0;0
+5.7;20;26632;3.3223;1018;1500;0;0;0;0;0;0;0
+5.8;20;26632;3.3223;1010;1500;0;0;0;0;0;0;0
+5.9;20;26632;3.3223;1001;1500;0;0;0;0;0;0;0
+6;20;26632;3.3223;992;1500;0;0;0;0;0;0;0
+6.1;20;26632;3.3223;984;1500;0;0;0;0;0;0;0
+6.2;20;26632;3.3223;976;1500;0;0;0;0;0;0;0
+6.3;20;26632;3.3223;967;1500;0;0;0;0;0;0;0
+6.4;20;26632;3.3223;959;1500;0;0;0;0;0;0;0
+6.5;20;26632;3.3223;951;1500;0;0;0;0;0;0;0
+6.6;20;26632;3.3223;943;1500;0;0;0;0;0;0;0
+6.7;20;26632;3.3223;935;1500;0;0;0;0;0;0;0
+6.8;20;26632;3.3223;927;1500;0;0;0;0;0;0;0
+6.9;20;26632;3.3223;919;1500;0;0;0;0;0;0;0
+7;20;26632;3.3223;911;1500;0;0;0;0;0;0;0
+7.1;20;26632;3.3223;905;1500;0;0;0;0;0;0;0
+7.2;20;26632;3.3223;899;1500;0;0;0;0;0;0;0
+7.3;20;26632;3.3223;894;1500;0;0;0;0;0;0;0
+7.4;20;26632;3.3223;888;1500;0;0;0;0;0;0;0
+7.5;20;26632;3.3223;882;1500;0;0;0;0;0;0;0
+7.6;20;26632;3.3223;876;1500;0;0;0;0;0;0;0
+7.7;20;26632;3.3223;871;1500;0;0;0;0;0;0;0
+7.8;20;26632;3.3223;865;1500;0;0;0;0;0;0;0
+7.9;20;26632;3.3223;859;1500;0;0;0;0;0;0;0
+8;20;26632;3.3223;854;1500;0;0;0;0;0;0;0
+8.1;20;26632;3.3223;848;1500;0;0;0;0;0;0;0
+8.2;20;26632;3.3223;843;1500;0;0;0;0;0;0;0
+8.3;20;26632;3.3223;837;1500;0;0;0;0;0;0;0
+8.4;20;26632;3.3223;832;1500;0;0;0;0;0;0;0
+8.5;20;26632;3.3223;826;1500;0;0;0;0;0;0;0
+8.6;20;26632;3.3223;821;1500;0;0;0;0;0;0;0
+8.7;20;26632;3.3223;816;1500;0;0;0;0;0;0;0
+8.8;20;26632;3.3223;810;1500;0;0;0;0;0;0;0
+8.9;20;26632;3.3223;805;1500;0;0;0;0;0;0;0
+9;20;26632;3.3223;800;1500;0;0;0;0;0;0;0
+9.1;20;26632;3.3223;795;1500;0;0;0;0;0;0;0
+9.2;20;26632;3.3223;790;1500;0;0;0;0;0;0;0
+9.3;20;26632;3.3223;784;1500;0;0;0;0;0;0;0
+9.4;20;26632;3.3223;779;1500;0;0;0;0;0;0;0
+9.5;20;26632;3.3223;774;1500;0;0;0;0;0;0;0
+9.6;20;26632;3.3223;769;1500;0;0;0;0;0;0;0
+9.7;20;26632;3.3223;764;1500;0;0;0;0;0;0;0
+9.8;20;26632;3.3223;759;1500;0;0;0;0;0;0;0
+9.9;20;26632;3.3223;754;1500;0;0;0;0;0;0;0
+10;20;26632;3.3223;749;1500;0;0;0;0;0;0;0
+10.1;20;26632;3.3223;737;1500;0;0;0;0;0;0;0
+10.2;20;26632;3.3223;725;1500;0;0;0;0;0;0;0
+10.3;20;26632;3.3223;713;1500;0;0;0;0;0;0;0
+10.4;20;26632;3.3223;701;1500;0;0;0;0;0;0;0
+10.5;20;26632;3.3223;689;1500;0;0;0;0;0;0;0
+10.6;20;26632;3.3223;678;1500;0;0;0;0;0;0;0
+10.7;20;26632;3.3223;666;1500;0;0;0;0;0;0;0
+10.8;20;26632;3.3223;655;1500;0;0;0;0;0;0;0
+10.9;20;26632;3.3223;644;1500;0;0;0;0;0;0;0
+11;20;26632;3.3223;634;1500;0;0;0;0;0;0;0
+11.1;20;26632;3.3223;623;1500;0;0;0;0;0;0;0
+11.2;20;26632;3.3223;613;1500;0;0;0;0;0;0;0
+11.3;20;26632;3.3223;603;1500;0;0;0;0;0;0;0
+11.4;20;26632;3.3223;593;1500;0;0;0;0;0;0;0
+11.5;20;26632;3.3223;583;1500;0;0;0;0;0;0;0
+11.6;20;26632;3.3223;573;1500;0;0;0;0;0;0;0
+11.7;20;26632;3.3223;563;1500;0;0;0;0;0;0;0
+11.8;20;26632;3.3223;554;1500;0;0;0;0;0;0;0
+11.9;20;26632;3.3223;545;1500;0;0;0;0;0;0;0
+12;20;26632;3.3223;536;1500;0;0;0;0;0;0;0
+12.1;20;26632;3.3223;527;1500;0;0;0;0;0;0;0
+12.2;20;26632;3.3223;518;1500;0;0;0;0;0;0;0
+12.3;20;26632;3.3223;509;1500;0;0;0;0;0;0;0
+12.4;20;26632;3.3223;501;1500;0;0;0;0;0;0;0
+12.5;20;26632;3.3223;493;1500;0;0;0;0;0;0;0
+12.6;20;26632;3.3223;484;1500;0;0;0;0;0;0;0
+12.7;20;26632;3.3223;476;1500;0;0;0;0;0;0;0
+12.8;20;26632;3.3223;468;1500;0;0;0;0;0;0;0
+12.9;20;26632;3.3223;461;1500;0;0;0;0;0;0;0
+13;20;26632;3.3223;453;1500;0;0;0;0;0;0;0
+13.1;20;26632;3.3223;435;1500;0;0;0;0;0;0;0
+13.2;20;26632;3.3223;418;1500;0;0;0;0;0;0;0
+13.3;20;26632;3.3223;401;1500;0;0;0;0;0;0;0
+13.4;20;26632;3.3223;385;1500;0;0;0;0;0;0;0
+13.5;20;26632;3.3223;370;1500;0;0;0;0;0;0;0
+13.6;20;26632;3.3223;355;1500;0;0;0;0;0;0;0
+13.7;20;26632;3.3223;341;1500;0;0;0;0;0;0;0
+13.8;20;26632;3.3223;328;1500;0;0;0;0;0;0;0
+13.9;20;26632;3.3223;315;1500;0;0;0;0;0;0;0
+14;20;26632;3.3223;302;1500;0;0;0;0;0;0;0
+14.1;20;26632;3.3223;290;1500;0;0;0;0;0;0;0
+14.2;20;26632;3.3223;279;1500;0;0;0;0;0;0;0
+14.3;20;26632;3.3223;267;1500;0;0;0;0;0;0;0
+14.4;20;26632;3.3223;257;1500;0;0;0;0;0;0;0
+14.5;20;26632;3.3223;247;1500;0;0;0;0;0;0;0
+14.6;20;26632;3.3223;237;1500;0;0;0;0;0;0;0
+14.7;20;26632;3.3223;227;1500;0;0;0;0;0;0;0
+14.8;20;26632;3.3223;218;1500;0;0;0;0;0;0;0
+14.9;20;26632;3.3223;210;1500;0;0;0;0;0;0;0
+15;20;26632;3.3223;201;1500;0;0;0;0;0;0;0
+15.1;20;26632;3.3223;193;1500;0;0;0;0;0;0;0
+15.2;20;26632;3.3223;186;1500;0;0;0;0;0;0;0
+15.3;20;26632;3.3223;178;1500;0;0;0;0;0;0;0
+15.4;20;26632;3.3223;171;1500;0;0;0;0;0;0;0
+15.5;20;26632;3.3223;164;1500;0;0;0;0;0;0;0
+15.6;20;26632;3.3223;158;1500;0;0;0;0;0;0;0
+15.7;20;26632;3.3223;152;1500;0;0;0;0;0;0;0
+15.8;20;26632;3.3223;146;1500;0;0;0;0;0;0;0
+15.9;20;26632;3.3223;140;1500;0;0;0;0;0;0;0
+16;20;26632;3.3223;134;1500;0;0;0;0;0;0;0
+16.1;20;26632;3.3223;125;1500;0;0;0;0;0;0;0
+16.2;20;26632;3.3223;117;1500;0;0;0;0;0;0;0
+16.3;20;26632;3.3223;109;1500;0;0;0;0;0;0;0
+16.4;20;26632;3.3223;102;1500;0;0;0;0;0;0;0
+16.5;20;26632;3.3223;95;1500;0;0;0;0;0;0;0
+16.6;20;26632;3.3223;88;1500;0;0;0;0;0;0;0
+16.7;20;26632;3.3223;82;1500;0;0;0;0;0;0;0
+16.8;20;26632;3.3223;77;1500;0;0;0;0;0;0;0
+16.9;20;26632;3.3223;72;1500;0;0;0;0;0;0;0
+17;20;26632;3.3223;67;1500;0;0;0;0;0;0;0
+17.1;20;26632;3.3223;62;1500;0;0;0;0;0;0;0
+17.2;20;26632;3.3223;58;1500;0;0;0;0;0;0;0
+17.3;20;26632;3.3223;54;1500;0;0;0;0;0;0;0
+17.4;20;26632;3.3223;51;1500;0;0;0;0;0;0;0
+17.5;20;26632;3.3223;47;1500;0;0;0;0;0;0;0
+17.6;20;26632;3.3223;44;1500;0;0;0;0;0;0;0
+17.7;20;26632;3.3223;41;1500;0;0;0;0;0;0;0
+17.8;20;26632;3.3223;38;1500;0;0;0;0;0;0;0
+17.9;20;26632;3.3223;36;1500;0;0;0;0;0;0;0
+18;20;26632;3.3223;33;1500;0;0;0;0;0;0;0
+18.1;20;26632;3.3223;31;1500;0;0;0;0;0;0;0
+18.2;20;26632;3.3223;29;1500;0;0;0;0;0;0;0
+18.3;20;26632;3.3223;27;1500;0;0;0;0;0;0;0
+18.4;20;26632;3.3223;25;1500;0;0;0;0;0;0;0
+18.5;20;26632;3.3223;23;1500;0;0;0;0;0;0;0
+18.6;20;26632;3.3223;22;1500;0;0;0;0;0;0;0
+18.7;20;26632;3.3223;20;1500;0;0;0;0;0;0;0
+18.8;20;26632;3.3223;19;1500;0;0;0;0;0;0;0
+18.9;20;26632;3.3223;18;1500;0;0;0;0;0;0;0
+19;20;26632;3.3223;17;1500;0;0;0;0;0;0;0
+19.1;20;26632;3.3223;15;1500;0;0;0;0;0;0;0
+19.2;20;26632;3.3223;13;1500;0;0;0;0;0;0;0
+19.3;20;26632;3.3223;12;1500;0;0;0;0;0;0;0
+19.4;20;26632;3.3223;11;1500;0;0;0;0;0;0;0
+19.5;20;26632;3.3223;10;1500;0;0;0;0;0;0;0
+19.6;20;26632;3.3223;9;1500;0;0;0;0;0;0;0
+19.7;20;26632;3.3223;8;1500;0;0;0;0;0;0;0
+19.8;20;26632;3.3223;7;1500;0;0;0;0;0;0;0
+19.9;20;26632;3.3223;6;1500;0;0;0;0;0;0;0
+20;20;26632;3.3223;5;1500;0;0;0;0;0;0;0
+20.1;20;26632;3.3223;5;1500;0;0;0;0;0;0;0
+20.2;20;26632;3.3223;4;1500;0;0;0;0;0;0;0
+20.3;20;26632;3.3223;4;1500;0;0;0;0;0;0;0
+20.4;20;26632;3.3223;4;1500;0;0;0;0;0;0;0
+20.5;20;26632;3.3223;3;1500;0;0;0;0;0;0;0
+20.6;20;26632;3.3223;3;1500;0;0;0;0;0;0;0
+20.7;20;26632;3.3223;3;1500;0;0;0;0;0;0;0
+20.8;20;26632;3.3223;2;1500;0;0;0;0;0;0;0
+20.9;20;26632;3.3223;2;1500;0;0;0;0;0;0;0
+21;20;26632;3.3223;2;1500;0;0;0;0;0;0;0
+21.1;20;26632;3.3223;2;1500;0;0;0;0;0;0;0
+21.2;20;26632;3.3223;1;1500;0;0;0;0;0;0;0
+21.3;20;26632;3.3223;1;1500;0;0;0;0;0;0;0
+21.4;20;26632;3.3223;1;1500;0;0;0;0;0;0;0
+21.5;20;26632;3.3223;1;1500;0;0;0;0;0;0;0
+21.6;20;26632;3.3223;1;1500;0;0;0;0;0;0;0
+21.7;20;26632;3.3223;1;1500;0;0;0;0;0;0;0
+21.8;20;26632;3.3223;1;1500;0;0;0;0;0;0;0
+21.9;20;26632;3.3223;1;1500;0;0;0;0;0;0;0
+22;20;26632;3.3223;1;1500;0;0;0;0;0;0;0
+22.1;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+22.2;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+22.3;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+22.4;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+22.5;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+22.6;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+22.7;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+22.8;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+22.9;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+23;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+23.1;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+23.2;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+23.3;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+23.4;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+23.5;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+23.6;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+23.7;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+23.8;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+23.9;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+24;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+24.1;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+24.2;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+24.3;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+24.4;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+24.5;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+24.6;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+24.7;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+24.8;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+24.9;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+25;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+25.1;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+25.2;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+25.3;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+25.4;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+25.5;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+25.6;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+25.7;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+25.8;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+25.9;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+26;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+26.1;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+26.2;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+26.3;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+26.4;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+26.5;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+26.6;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+26.7;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+26.8;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+26.9;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+27;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+27.1;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+27.2;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+27.3;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+27.4;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+27.5;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+27.6;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+27.7;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+27.8;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+27.9;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
+28;20;26632;3.3223;0;1500;0;0;0;0;0;0;0
diff --git a/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs21_cdlc_mimo2x2_dl.csv b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs21_cdlc_mimo2x2_dl.csv
new file mode 100644
index 0000000000..0d0fa613c4
--- /dev/null
+++ b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs21_cdlc_mimo2x2_dl.csv
@@ -0,0 +1,302 @@
+SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
+-2;21;28680;3.6094;1500;1500;0;0;0;0;0;0;0
+-1.9;21;28680;3.6094;1499;1500;0;0;0;0;0;0;0
+-1.8;21;28680;3.6094;1497;1500;0;0;0;0;0;0;0
+-1.7;21;28680;3.6094;1496;1500;0;0;0;0;0;0;0
+-1.6;21;28680;3.6094;1494;1500;0;0;0;0;0;0;0
+-1.5;21;28680;3.6094;1493;1500;0;0;0;0;0;0;0
+-1.4;21;28680;3.6094;1492;1500;0;0;0;0;0;0;0
+-1.3;21;28680;3.6094;1490;1500;0;0;0;0;0;0;0
+-1.2;21;28680;3.6094;1489;1500;0;0;0;0;0;0;0
+-1.1;21;28680;3.6094;1487;1500;0;0;0;0;0;0;0
+-1;21;28680;3.6094;1486;1500;0;0;0;0;0;0;0
+-0.9;21;28680;3.6094;1485;1500;0;0;0;0;0;0;0
+-0.8;21;28680;3.6094;1483;1500;0;0;0;0;0;0;0
+-0.7;21;28680;3.6094;1482;1500;0;0;0;0;0;0;0
+-0.6;21;28680;3.6094;1481;1500;0;0;0;0;0;0;0
+-0.5;21;28680;3.6094;1479;1500;0;0;0;0;0;0;0
+-0.4;21;28680;3.6094;1478;1500;0;0;0;0;0;0;0
+-0.3;21;28680;3.6094;1476;1500;0;0;0;0;0;0;0
+-0.2;21;28680;3.6094;1475;1500;0;0;0;0;0;0;0
+-0.1;21;28680;3.6094;1474;1500;0;0;0;0;0;0;0
+0;21;28680;3.6094;1472;1500;0;0;0;0;0;0;0
+0.1;21;28680;3.6094;1471;1500;0;0;0;0;0;0;0
+0.2;21;28680;3.6094;1470;1500;0;0;0;0;0;0;0
+0.3;21;28680;3.6094;1468;1500;0;0;0;0;0;0;0
+0.4;21;28680;3.6094;1467;1500;0;0;0;0;0;0;0
+0.5;21;28680;3.6094;1465;1500;0;0;0;0;0;0;0
+0.6;21;28680;3.6094;1464;1500;0;0;0;0;0;0;0
+0.7;21;28680;3.6094;1463;1500;0;0;0;0;0;0;0
+0.8;21;28680;3.6094;1461;1500;0;0;0;0;0;0;0
+0.9;21;28680;3.6094;1460;1500;0;0;0;0;0;0;0
+1;21;28680;3.6094;1459;1500;0;0;0;0;0;0;0
+1.1;21;28680;3.6094;1450;1500;0;0;0;0;0;0;0
+1.2;21;28680;3.6094;1442;1500;0;0;0;0;0;0;0
+1.3;21;28680;3.6094;1433;1500;0;0;0;0;0;0;0
+1.4;21;28680;3.6094;1425;1500;0;0;0;0;0;0;0
+1.5;21;28680;3.6094;1416;1500;0;0;0;0;0;0;0
+1.6;21;28680;3.6094;1408;1500;0;0;0;0;0;0;0
+1.7;21;28680;3.6094;1400;1500;0;0;0;0;0;0;0
+1.8;21;28680;3.6094;1391;1500;0;0;0;0;0;0;0
+1.9;21;28680;3.6094;1383;1500;0;0;0;0;0;0;0
+2;21;28680;3.6094;1375;1500;0;0;0;0;0;0;0
+2.1;21;28680;3.6094;1367;1500;0;0;0;0;0;0;0
+2.2;21;28680;3.6094;1359;1500;0;0;0;0;0;0;0
+2.3;21;28680;3.6094;1351;1500;0;0;0;0;0;0;0
+2.4;21;28680;3.6094;1343;1500;0;0;0;0;0;0;0
+2.5;21;28680;3.6094;1335;1500;0;0;0;0;0;0;0
+2.6;21;28680;3.6094;1327;1500;0;0;0;0;0;0;0
+2.7;21;28680;3.6094;1320;1500;0;0;0;0;0;0;0
+2.8;21;28680;3.6094;1312;1500;0;0;0;0;0;0;0
+2.9;21;28680;3.6094;1304;1500;0;0;0;0;0;0;0
+3;21;28680;3.6094;1296;1500;0;0;0;0;0;0;0
+3.1;21;28680;3.6094;1289;1500;0;0;0;0;0;0;0
+3.2;21;28680;3.6094;1281;1500;0;0;0;0;0;0;0
+3.3;21;28680;3.6094;1274;1500;0;0;0;0;0;0;0
+3.4;21;28680;3.6094;1266;1500;0;0;0;0;0;0;0
+3.5;21;28680;3.6094;1259;1500;0;0;0;0;0;0;0
+3.6;21;28680;3.6094;1251;1500;0;0;0;0;0;0;0
+3.7;21;28680;3.6094;1244;1500;0;0;0;0;0;0;0
+3.8;21;28680;3.6094;1237;1500;0;0;0;0;0;0;0
+3.9;21;28680;3.6094;1229;1500;0;0;0;0;0;0;0
+4;21;28680;3.6094;1222;1500;0;0;0;0;0;0;0
+4.1;21;28680;3.6094;1212;1500;0;0;0;0;0;0;0
+4.2;21;28680;3.6094;1202;1500;0;0;0;0;0;0;0
+4.3;21;28680;3.6094;1192;1500;0;0;0;0;0;0;0
+4.4;21;28680;3.6094;1182;1500;0;0;0;0;0;0;0
+4.5;21;28680;3.6094;1172;1500;0;0;0;0;0;0;0
+4.6;21;28680;3.6094;1162;1500;0;0;0;0;0;0;0
+4.7;21;28680;3.6094;1152;1500;0;0;0;0;0;0;0
+4.8;21;28680;3.6094;1143;1500;0;0;0;0;0;0;0
+4.9;21;28680;3.6094;1133;1500;0;0;0;0;0;0;0
+5;21;28680;3.6094;1124;1500;0;0;0;0;0;0;0
+5.1;21;28680;3.6094;1114;1500;0;0;0;0;0;0;0
+5.2;21;28680;3.6094;1105;1500;0;0;0;0;0;0;0
+5.3;21;28680;3.6094;1096;1500;0;0;0;0;0;0;0
+5.4;21;28680;3.6094;1087;1500;0;0;0;0;0;0;0
+5.5;21;28680;3.6094;1078;1500;0;0;0;0;0;0;0
+5.6;21;28680;3.6094;1069;1500;0;0;0;0;0;0;0
+5.7;21;28680;3.6094;1060;1500;0;0;0;0;0;0;0
+5.8;21;28680;3.6094;1051;1500;0;0;0;0;0;0;0
+5.9;21;28680;3.6094;1042;1500;0;0;0;0;0;0;0
+6;21;28680;3.6094;1033;1500;0;0;0;0;0;0;0
+6.1;21;28680;3.6094;1025;1500;0;0;0;0;0;0;0
+6.2;21;28680;3.6094;1016;1500;0;0;0;0;0;0;0
+6.3;21;28680;3.6094;1008;1500;0;0;0;0;0;0;0
+6.4;21;28680;3.6094;999;1500;0;0;0;0;0;0;0
+6.5;21;28680;3.6094;991;1500;0;0;0;0;0;0;0
+6.6;21;28680;3.6094;983;1500;0;0;0;0;0;0;0
+6.7;21;28680;3.6094;974;1500;0;0;0;0;0;0;0
+6.8;21;28680;3.6094;966;1500;0;0;0;0;0;0;0
+6.9;21;28680;3.6094;958;1500;0;0;0;0;0;0;0
+7;21;28680;3.6094;950;1500;0;0;0;0;0;0;0
+7.1;21;28680;3.6094;944;1500;0;0;0;0;0;0;0
+7.2;21;28680;3.6094;939;1500;0;0;0;0;0;0;0
+7.3;21;28680;3.6094;933;1500;0;0;0;0;0;0;0
+7.4;21;28680;3.6094;927;1500;0;0;0;0;0;0;0
+7.5;21;28680;3.6094;922;1500;0;0;0;0;0;0;0
+7.6;21;28680;3.6094;916;1500;0;0;0;0;0;0;0
+7.7;21;28680;3.6094;911;1500;0;0;0;0;0;0;0
+7.8;21;28680;3.6094;905;1500;0;0;0;0;0;0;0
+7.9;21;28680;3.6094;900;1500;0;0;0;0;0;0;0
+8;21;28680;3.6094;895;1500;0;0;0;0;0;0;0
+8.1;21;28680;3.6094;889;1500;0;0;0;0;0;0;0
+8.2;21;28680;3.6094;884;1500;0;0;0;0;0;0;0
+8.3;21;28680;3.6094;879;1500;0;0;0;0;0;0;0
+8.4;21;28680;3.6094;873;1500;0;0;0;0;0;0;0
+8.5;21;28680;3.6094;868;1500;0;0;0;0;0;0;0
+8.6;21;28680;3.6094;863;1500;0;0;0;0;0;0;0
+8.7;21;28680;3.6094;858;1500;0;0;0;0;0;0;0
+8.8;21;28680;3.6094;852;1500;0;0;0;0;0;0;0
+8.9;21;28680;3.6094;847;1500;0;0;0;0;0;0;0
+9;21;28680;3.6094;842;1500;0;0;0;0;0;0;0
+9.1;21;28680;3.6094;837;1500;0;0;0;0;0;0;0
+9.2;21;28680;3.6094;832;1500;0;0;0;0;0;0;0
+9.3;21;28680;3.6094;827;1500;0;0;0;0;0;0;0
+9.4;21;28680;3.6094;822;1500;0;0;0;0;0;0;0
+9.5;21;28680;3.6094;817;1500;0;0;0;0;0;0;0
+9.6;21;28680;3.6094;812;1500;0;0;0;0;0;0;0
+9.7;21;28680;3.6094;807;1500;0;0;0;0;0;0;0
+9.8;21;28680;3.6094;803;1500;0;0;0;0;0;0;0
+9.9;21;28680;3.6094;798;1500;0;0;0;0;0;0;0
+10;21;28680;3.6094;793;1500;0;0;0;0;0;0;0
+10.1;21;28680;3.6094;785;1500;0;0;0;0;0;0;0
+10.2;21;28680;3.6094;776;1500;0;0;0;0;0;0;0
+10.3;21;28680;3.6094;768;1500;0;0;0;0;0;0;0
+10.4;21;28680;3.6094;760;1500;0;0;0;0;0;0;0
+10.5;21;28680;3.6094;752;1500;0;0;0;0;0;0;0
+10.6;21;28680;3.6094;744;1500;0;0;0;0;0;0;0
+10.7;21;28680;3.6094;736;1500;0;0;0;0;0;0;0
+10.8;21;28680;3.6094;728;1500;0;0;0;0;0;0;0
+10.9;21;28680;3.6094;721;1500;0;0;0;0;0;0;0
+11;21;28680;3.6094;713;1500;0;0;0;0;0;0;0
+11.1;21;28680;3.6094;705;1500;0;0;0;0;0;0;0
+11.2;21;28680;3.6094;698;1500;0;0;0;0;0;0;0
+11.3;21;28680;3.6094;691;1500;0;0;0;0;0;0;0
+11.4;21;28680;3.6094;683;1500;0;0;0;0;0;0;0
+11.5;21;28680;3.6094;676;1500;0;0;0;0;0;0;0
+11.6;21;28680;3.6094;669;1500;0;0;0;0;0;0;0
+11.7;21;28680;3.6094;662;1500;0;0;0;0;0;0;0
+11.8;21;28680;3.6094;655;1500;0;0;0;0;0;0;0
+11.9;21;28680;3.6094;648;1500;0;0;0;0;0;0;0
+12;21;28680;3.6094;641;1500;0;0;0;0;0;0;0
+12.1;21;28680;3.6094;634;1500;0;0;0;0;0;0;0
+12.2;21;28680;3.6094;627;1500;0;0;0;0;0;0;0
+12.3;21;28680;3.6094;621;1500;0;0;0;0;0;0;0
+12.4;21;28680;3.6094;614;1500;0;0;0;0;0;0;0
+12.5;21;28680;3.6094;608;1500;0;0;0;0;0;0;0
+12.6;21;28680;3.6094;601;1500;0;0;0;0;0;0;0
+12.7;21;28680;3.6094;595;1500;0;0;0;0;0;0;0
+12.8;21;28680;3.6094;589;1500;0;0;0;0;0;0;0
+12.9;21;28680;3.6094;582;1500;0;0;0;0;0;0;0
+13;21;28680;3.6094;576;1500;0;0;0;0;0;0;0
+13.1;21;28680;3.6094;557;1500;0;0;0;0;0;0;0
+13.2;21;28680;3.6094;539;1500;0;0;0;0;0;0;0
+13.3;21;28680;3.6094;522;1500;0;0;0;0;0;0;0
+13.4;21;28680;3.6094;505;1500;0;0;0;0;0;0;0
+13.5;21;28680;3.6094;488;1500;0;0;0;0;0;0;0
+13.6;21;28680;3.6094;472;1500;0;0;0;0;0;0;0
+13.7;21;28680;3.6094;457;1500;0;0;0;0;0;0;0
+13.8;21;28680;3.6094;442;1500;0;0;0;0;0;0;0
+13.9;21;28680;3.6094;427;1500;0;0;0;0;0;0;0
+14;21;28680;3.6094;413;1500;0;0;0;0;0;0;0
+14.1;21;28680;3.6094;400;1500;0;0;0;0;0;0;0
+14.2;21;28680;3.6094;387;1500;0;0;0;0;0;0;0
+14.3;21;28680;3.6094;374;1500;0;0;0;0;0;0;0
+14.4;21;28680;3.6094;362;1500;0;0;0;0;0;0;0
+14.5;21;28680;3.6094;350;1500;0;0;0;0;0;0;0
+14.6;21;28680;3.6094;339;1500;0;0;0;0;0;0;0
+14.7;21;28680;3.6094;328;1500;0;0;0;0;0;0;0
+14.8;21;28680;3.6094;317;1500;0;0;0;0;0;0;0
+14.9;21;28680;3.6094;307;1500;0;0;0;0;0;0;0
+15;21;28680;3.6094;297;1500;0;0;0;0;0;0;0
+15.1;21;28680;3.6094;287;1500;0;0;0;0;0;0;0
+15.2;21;28680;3.6094;277;1500;0;0;0;0;0;0;0
+15.3;21;28680;3.6094;268;1500;0;0;0;0;0;0;0
+15.4;21;28680;3.6094;260;1500;0;0;0;0;0;0;0
+15.5;21;28680;3.6094;251;1500;0;0;0;0;0;0;0
+15.6;21;28680;3.6094;243;1500;0;0;0;0;0;0;0
+15.7;21;28680;3.6094;235;1500;0;0;0;0;0;0;0
+15.8;21;28680;3.6094;227;1500;0;0;0;0;0;0;0
+15.9;21;28680;3.6094;220;1500;0;0;0;0;0;0;0
+16;21;28680;3.6094;213;1500;0;0;0;0;0;0;0
+16.1;21;28680;3.6094;201;1500;0;0;0;0;0;0;0
+16.2;21;28680;3.6094;191;1500;0;0;0;0;0;0;0
+16.3;21;28680;3.6094;181;1500;0;0;0;0;0;0;0
+16.4;21;28680;3.6094;171;1500;0;0;0;0;0;0;0
+16.5;21;28680;3.6094;162;1500;0;0;0;0;0;0;0
+16.6;21;28680;3.6094;153;1500;0;0;0;0;0;0;0
+16.7;21;28680;3.6094;145;1500;0;0;0;0;0;0;0
+16.8;21;28680;3.6094;137;1500;0;0;0;0;0;0;0
+16.9;21;28680;3.6094;130;1500;0;0;0;0;0;0;0
+17;21;28680;3.6094;123;1500;0;0;0;0;0;0;0
+17.1;21;28680;3.6094;117;1500;0;0;0;0;0;0;0
+17.2;21;28680;3.6094;111;1500;0;0;0;0;0;0;0
+17.3;21;28680;3.6094;105;1500;0;0;0;0;0;0;0
+17.4;21;28680;3.6094;99;1500;0;0;0;0;0;0;0
+17.5;21;28680;3.6094;94;1500;0;0;0;0;0;0;0
+17.6;21;28680;3.6094;89;1500;0;0;0;0;0;0;0
+17.7;21;28680;3.6094;84;1500;0;0;0;0;0;0;0
+17.8;21;28680;3.6094;80;1500;0;0;0;0;0;0;0
+17.9;21;28680;3.6094;75;1500;0;0;0;0;0;0;0
+18;21;28680;3.6094;71;1500;0;0;0;0;0;0;0
+18.1;21;28680;3.6094;68;1500;0;0;0;0;0;0;0
+18.2;21;28680;3.6094;64;1500;0;0;0;0;0;0;0
+18.3;21;28680;3.6094;61;1500;0;0;0;0;0;0;0
+18.4;21;28680;3.6094;57;1500;0;0;0;0;0;0;0
+18.5;21;28680;3.6094;54;1500;0;0;0;0;0;0;0
+18.6;21;28680;3.6094;51;1500;0;0;0;0;0;0;0
+18.7;21;28680;3.6094;49;1500;0;0;0;0;0;0;0
+18.8;21;28680;3.6094;46;1500;0;0;0;0;0;0;0
+18.9;21;28680;3.6094;44;1500;0;0;0;0;0;0;0
+19;21;28680;3.6094;41;1500;0;0;0;0;0;0;0
+19.1;21;28680;3.6094;37;1500;0;0;0;0;0;0;0
+19.2;21;28680;3.6094;34;1500;0;0;0;0;0;0;0
+19.3;21;28680;3.6094;30;1500;0;0;0;0;0;0;0
+19.4;21;28680;3.6094;27;1500;0;0;0;0;0;0;0
+19.5;21;28680;3.6094;25;1500;0;0;0;0;0;0;0
+19.6;21;28680;3.6094;22;1500;0;0;0;0;0;0;0
+19.7;21;28680;3.6094;20;1500;0;0;0;0;0;0;0
+19.8;21;28680;3.6094;18;1500;0;0;0;0;0;0;0
+19.9;21;28680;3.6094;16;1500;0;0;0;0;0;0;0
+20;21;28680;3.6094;15;1500;0;0;0;0;0;0;0
+20.1;21;28680;3.6094;13;1500;0;0;0;0;0;0;0
+20.2;21;28680;3.6094;12;1500;0;0;0;0;0;0;0
+20.3;21;28680;3.6094;11;1500;0;0;0;0;0;0;0
+20.4;21;28680;3.6094;10;1500;0;0;0;0;0;0;0
+20.5;21;28680;3.6094;9;1500;0;0;0;0;0;0;0
+20.6;21;28680;3.6094;8;1500;0;0;0;0;0;0;0
+20.7;21;28680;3.6094;7;1500;0;0;0;0;0;0;0
+20.8;21;28680;3.6094;6;1500;0;0;0;0;0;0;0
+20.9;21;28680;3.6094;6;1500;0;0;0;0;0;0;0
+21;21;28680;3.6094;5;1500;0;0;0;0;0;0;0
+21.1;21;28680;3.6094;5;1500;0;0;0;0;0;0;0
+21.2;21;28680;3.6094;4;1500;0;0;0;0;0;0;0
+21.3;21;28680;3.6094;4;1500;0;0;0;0;0;0;0
+21.4;21;28680;3.6094;3;1500;0;0;0;0;0;0;0
+21.5;21;28680;3.6094;3;1500;0;0;0;0;0;0;0
+21.6;21;28680;3.6094;3;1500;0;0;0;0;0;0;0
+21.7;21;28680;3.6094;3;1500;0;0;0;0;0;0;0
+21.8;21;28680;3.6094;2;1500;0;0;0;0;0;0;0
+21.9;21;28680;3.6094;2;1500;0;0;0;0;0;0;0
+22;21;28680;3.6094;2;1500;0;0;0;0;0;0;0
+22.1;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+22.2;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+22.3;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+22.4;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+22.5;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+22.6;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+22.7;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+22.8;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+22.9;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+23;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+23.1;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+23.2;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+23.3;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+23.4;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+23.5;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+23.6;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+23.7;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+23.8;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+23.9;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+24;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+24.1;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+24.2;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+24.3;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+24.4;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+24.5;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+24.6;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+24.7;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+24.8;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+24.9;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+25;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+25.1;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+25.2;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+25.3;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+25.4;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+25.5;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+25.6;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+25.7;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+25.8;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+25.9;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+26;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+26.1;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+26.2;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+26.3;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+26.4;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+26.5;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+26.6;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+26.7;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+26.8;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+26.9;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+27;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+27.1;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+27.2;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+27.3;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+27.4;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+27.5;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+27.6;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+27.7;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+27.8;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+27.9;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
+28;21;28680;3.6094;0;1500;0;0;0;0;0;0;0
diff --git a/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs22_cdlc_mimo2x2_dl.csv b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs22_cdlc_mimo2x2_dl.csv
new file mode 100644
index 0000000000..c4888e0f69
--- /dev/null
+++ b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs22_cdlc_mimo2x2_dl.csv
@@ -0,0 +1,302 @@
+SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
+-2;22;31240;3.9023;1500;1500;0;0;0;0;0;0;0
+-1.9;22;31240;3.9023;1499;1500;0;0;0;0;0;0;0
+-1.8;22;31240;3.9023;1498;1500;0;0;0;0;0;0;0
+-1.7;22;31240;3.9023;1498;1500;0;0;0;0;0;0;0
+-1.6;22;31240;3.9023;1497;1500;0;0;0;0;0;0;0
+-1.5;22;31240;3.9023;1496;1500;0;0;0;0;0;0;0
+-1.4;22;31240;3.9023;1495;1500;0;0;0;0;0;0;0
+-1.3;22;31240;3.9023;1494;1500;0;0;0;0;0;0;0
+-1.2;22;31240;3.9023;1494;1500;0;0;0;0;0;0;0
+-1.1;22;31240;3.9023;1493;1500;0;0;0;0;0;0;0
+-1;22;31240;3.9023;1492;1500;0;0;0;0;0;0;0
+-0.9;22;31240;3.9023;1491;1500;0;0;0;0;0;0;0
+-0.8;22;31240;3.9023;1490;1500;0;0;0;0;0;0;0
+-0.7;22;31240;3.9023;1490;1500;0;0;0;0;0;0;0
+-0.6;22;31240;3.9023;1489;1500;0;0;0;0;0;0;0
+-0.5;22;31240;3.9023;1488;1500;0;0;0;0;0;0;0
+-0.4;22;31240;3.9023;1487;1500;0;0;0;0;0;0;0
+-0.3;22;31240;3.9023;1487;1500;0;0;0;0;0;0;0
+-0.2;22;31240;3.9023;1486;1500;0;0;0;0;0;0;0
+-0.1;22;31240;3.9023;1485;1500;0;0;0;0;0;0;0
+0;22;31240;3.9023;1484;1500;0;0;0;0;0;0;0
+0.1;22;31240;3.9023;1483;1500;0;0;0;0;0;0;0
+0.2;22;31240;3.9023;1483;1500;0;0;0;0;0;0;0
+0.3;22;31240;3.9023;1482;1500;0;0;0;0;0;0;0
+0.4;22;31240;3.9023;1481;1500;0;0;0;0;0;0;0
+0.5;22;31240;3.9023;1480;1500;0;0;0;0;0;0;0
+0.6;22;31240;3.9023;1479;1500;0;0;0;0;0;0;0
+0.7;22;31240;3.9023;1479;1500;0;0;0;0;0;0;0
+0.8;22;31240;3.9023;1478;1500;0;0;0;0;0;0;0
+0.9;22;31240;3.9023;1477;1500;0;0;0;0;0;0;0
+1;22;31240;3.9023;1476;1500;0;0;0;0;0;0;0
+1.1;22;31240;3.9023;1469;1500;0;0;0;0;0;0;0
+1.2;22;31240;3.9023;1462;1500;0;0;0;0;0;0;0
+1.3;22;31240;3.9023;1456;1500;0;0;0;0;0;0;0
+1.4;22;31240;3.9023;1449;1500;0;0;0;0;0;0;0
+1.5;22;31240;3.9023;1442;1500;0;0;0;0;0;0;0
+1.6;22;31240;3.9023;1435;1500;0;0;0;0;0;0;0
+1.7;22;31240;3.9023;1428;1500;0;0;0;0;0;0;0
+1.8;22;31240;3.9023;1422;1500;0;0;0;0;0;0;0
+1.9;22;31240;3.9023;1415;1500;0;0;0;0;0;0;0
+2;22;31240;3.9023;1408;1500;0;0;0;0;0;0;0
+2.1;22;31240;3.9023;1402;1500;0;0;0;0;0;0;0
+2.2;22;31240;3.9023;1395;1500;0;0;0;0;0;0;0
+2.3;22;31240;3.9023;1389;1500;0;0;0;0;0;0;0
+2.4;22;31240;3.9023;1382;1500;0;0;0;0;0;0;0
+2.5;22;31240;3.9023;1376;1500;0;0;0;0;0;0;0
+2.6;22;31240;3.9023;1369;1500;0;0;0;0;0;0;0
+2.7;22;31240;3.9023;1363;1500;0;0;0;0;0;0;0
+2.8;22;31240;3.9023;1356;1500;0;0;0;0;0;0;0
+2.9;22;31240;3.9023;1350;1500;0;0;0;0;0;0;0
+3;22;31240;3.9023;1343;1500;0;0;0;0;0;0;0
+3.1;22;31240;3.9023;1337;1500;0;0;0;0;0;0;0
+3.2;22;31240;3.9023;1331;1500;0;0;0;0;0;0;0
+3.3;22;31240;3.9023;1325;1500;0;0;0;0;0;0;0
+3.4;22;31240;3.9023;1318;1500;0;0;0;0;0;0;0
+3.5;22;31240;3.9023;1312;1500;0;0;0;0;0;0;0
+3.6;22;31240;3.9023;1306;1500;0;0;0;0;0;0;0
+3.7;22;31240;3.9023;1300;1500;0;0;0;0;0;0;0
+3.8;22;31240;3.9023;1294;1500;0;0;0;0;0;0;0
+3.9;22;31240;3.9023;1288;1500;0;0;0;0;0;0;0
+4;22;31240;3.9023;1282;1500;0;0;0;0;0;0;0
+4.1;22;31240;3.9023;1271;1500;0;0;0;0;0;0;0
+4.2;22;31240;3.9023;1261;1500;0;0;0;0;0;0;0
+4.3;22;31240;3.9023;1251;1500;0;0;0;0;0;0;0
+4.4;22;31240;3.9023;1240;1500;0;0;0;0;0;0;0
+4.5;22;31240;3.9023;1230;1500;0;0;0;0;0;0;0
+4.6;22;31240;3.9023;1220;1500;0;0;0;0;0;0;0
+4.7;22;31240;3.9023;1210;1500;0;0;0;0;0;0;0
+4.8;22;31240;3.9023;1201;1500;0;0;0;0;0;0;0
+4.9;22;31240;3.9023;1191;1500;0;0;0;0;0;0;0
+5;22;31240;3.9023;1181;1500;0;0;0;0;0;0;0
+5.1;22;31240;3.9023;1172;1500;0;0;0;0;0;0;0
+5.2;22;31240;3.9023;1162;1500;0;0;0;0;0;0;0
+5.3;22;31240;3.9023;1153;1500;0;0;0;0;0;0;0
+5.4;22;31240;3.9023;1143;1500;0;0;0;0;0;0;0
+5.5;22;31240;3.9023;1134;1500;0;0;0;0;0;0;0
+5.6;22;31240;3.9023;1125;1500;0;0;0;0;0;0;0
+5.7;22;31240;3.9023;1116;1500;0;0;0;0;0;0;0
+5.8;22;31240;3.9023;1107;1500;0;0;0;0;0;0;0
+5.9;22;31240;3.9023;1098;1500;0;0;0;0;0;0;0
+6;22;31240;3.9023;1089;1500;0;0;0;0;0;0;0
+6.1;22;31240;3.9023;1080;1500;0;0;0;0;0;0;0
+6.2;22;31240;3.9023;1071;1500;0;0;0;0;0;0;0
+6.3;22;31240;3.9023;1062;1500;0;0;0;0;0;0;0
+6.4;22;31240;3.9023;1054;1500;0;0;0;0;0;0;0
+6.5;22;31240;3.9023;1045;1500;0;0;0;0;0;0;0
+6.6;22;31240;3.9023;1037;1500;0;0;0;0;0;0;0
+6.7;22;31240;3.9023;1028;1500;0;0;0;0;0;0;0
+6.8;22;31240;3.9023;1020;1500;0;0;0;0;0;0;0
+6.9;22;31240;3.9023;1012;1500;0;0;0;0;0;0;0
+7;22;31240;3.9023;1003;1500;0;0;0;0;0;0;0
+7.1;22;31240;3.9023;997;1500;0;0;0;0;0;0;0
+7.2;22;31240;3.9023;990;1500;0;0;0;0;0;0;0
+7.3;22;31240;3.9023;983;1500;0;0;0;0;0;0;0
+7.4;22;31240;3.9023;976;1500;0;0;0;0;0;0;0
+7.5;22;31240;3.9023;970;1500;0;0;0;0;0;0;0
+7.6;22;31240;3.9023;963;1500;0;0;0;0;0;0;0
+7.7;22;31240;3.9023;956;1500;0;0;0;0;0;0;0
+7.8;22;31240;3.9023;950;1500;0;0;0;0;0;0;0
+7.9;22;31240;3.9023;943;1500;0;0;0;0;0;0;0
+8;22;31240;3.9023;937;1500;0;0;0;0;0;0;0
+8.1;22;31240;3.9023;931;1500;0;0;0;0;0;0;0
+8.2;22;31240;3.9023;924;1500;0;0;0;0;0;0;0
+8.3;22;31240;3.9023;918;1500;0;0;0;0;0;0;0
+8.4;22;31240;3.9023;912;1500;0;0;0;0;0;0;0
+8.5;22;31240;3.9023;905;1500;0;0;0;0;0;0;0
+8.6;22;31240;3.9023;899;1500;0;0;0;0;0;0;0
+8.7;22;31240;3.9023;893;1500;0;0;0;0;0;0;0
+8.8;22;31240;3.9023;887;1500;0;0;0;0;0;0;0
+8.9;22;31240;3.9023;881;1500;0;0;0;0;0;0;0
+9;22;31240;3.9023;875;1500;0;0;0;0;0;0;0
+9.1;22;31240;3.9023;869;1500;0;0;0;0;0;0;0
+9.2;22;31240;3.9023;863;1500;0;0;0;0;0;0;0
+9.3;22;31240;3.9023;857;1500;0;0;0;0;0;0;0
+9.4;22;31240;3.9023;851;1500;0;0;0;0;0;0;0
+9.5;22;31240;3.9023;845;1500;0;0;0;0;0;0;0
+9.6;22;31240;3.9023;840;1500;0;0;0;0;0;0;0
+9.7;22;31240;3.9023;834;1500;0;0;0;0;0;0;0
+9.8;22;31240;3.9023;828;1500;0;0;0;0;0;0;0
+9.9;22;31240;3.9023;822;1500;0;0;0;0;0;0;0
+10;22;31240;3.9023;817;1500;0;0;0;0;0;0;0
+10.1;22;31240;3.9023;811;1500;0;0;0;0;0;0;0
+10.2;22;31240;3.9023;806;1500;0;0;0;0;0;0;0
+10.3;22;31240;3.9023;800;1500;0;0;0;0;0;0;0
+10.4;22;31240;3.9023;795;1500;0;0;0;0;0;0;0
+10.5;22;31240;3.9023;789;1500;0;0;0;0;0;0;0
+10.6;22;31240;3.9023;784;1500;0;0;0;0;0;0;0
+10.7;22;31240;3.9023;779;1500;0;0;0;0;0;0;0
+10.8;22;31240;3.9023;773;1500;0;0;0;0;0;0;0
+10.9;22;31240;3.9023;768;1500;0;0;0;0;0;0;0
+11;22;31240;3.9023;763;1500;0;0;0;0;0;0;0
+11.1;22;31240;3.9023;758;1500;0;0;0;0;0;0;0
+11.2;22;31240;3.9023;753;1500;0;0;0;0;0;0;0
+11.3;22;31240;3.9023;747;1500;0;0;0;0;0;0;0
+11.4;22;31240;3.9023;742;1500;0;0;0;0;0;0;0
+11.5;22;31240;3.9023;737;1500;0;0;0;0;0;0;0
+11.6;22;31240;3.9023;732;1500;0;0;0;0;0;0;0
+11.7;22;31240;3.9023;727;1500;0;0;0;0;0;0;0
+11.8;22;31240;3.9023;722;1500;0;0;0;0;0;0;0
+11.9;22;31240;3.9023;718;1500;0;0;0;0;0;0;0
+12;22;31240;3.9023;713;1500;0;0;0;0;0;0;0
+12.1;22;31240;3.9023;708;1500;0;0;0;0;0;0;0
+12.2;22;31240;3.9023;703;1500;0;0;0;0;0;0;0
+12.3;22;31240;3.9023;698;1500;0;0;0;0;0;0;0
+12.4;22;31240;3.9023;693;1500;0;0;0;0;0;0;0
+12.5;22;31240;3.9023;689;1500;0;0;0;0;0;0;0
+12.6;22;31240;3.9023;684;1500;0;0;0;0;0;0;0
+12.7;22;31240;3.9023;679;1500;0;0;0;0;0;0;0
+12.8;22;31240;3.9023;675;1500;0;0;0;0;0;0;0
+12.9;22;31240;3.9023;670;1500;0;0;0;0;0;0;0
+13;22;31240;3.9023;666;1500;0;0;0;0;0;0;0
+13.1;22;31240;3.9023;653;1500;0;0;0;0;0;0;0
+13.2;22;31240;3.9023;642;1500;0;0;0;0;0;0;0
+13.3;22;31240;3.9023;630;1500;0;0;0;0;0;0;0
+13.4;22;31240;3.9023;618;1500;0;0;0;0;0;0;0
+13.5;22;31240;3.9023;607;1500;0;0;0;0;0;0;0
+13.6;22;31240;3.9023;596;1500;0;0;0;0;0;0;0
+13.7;22;31240;3.9023;585;1500;0;0;0;0;0;0;0
+13.8;22;31240;3.9023;574;1500;0;0;0;0;0;0;0
+13.9;22;31240;3.9023;564;1500;0;0;0;0;0;0;0
+14;22;31240;3.9023;554;1500;0;0;0;0;0;0;0
+14.1;22;31240;3.9023;544;1500;0;0;0;0;0;0;0
+14.2;22;31240;3.9023;534;1500;0;0;0;0;0;0;0
+14.3;22;31240;3.9023;524;1500;0;0;0;0;0;0;0
+14.4;22;31240;3.9023;514;1500;0;0;0;0;0;0;0
+14.5;22;31240;3.9023;505;1500;0;0;0;0;0;0;0
+14.6;22;31240;3.9023;496;1500;0;0;0;0;0;0;0
+14.7;22;31240;3.9023;487;1500;0;0;0;0;0;0;0
+14.8;22;31240;3.9023;478;1500;0;0;0;0;0;0;0
+14.9;22;31240;3.9023;469;1500;0;0;0;0;0;0;0
+15;22;31240;3.9023;460;1500;0;0;0;0;0;0;0
+15.1;22;31240;3.9023;452;1500;0;0;0;0;0;0;0
+15.2;22;31240;3.9023;444;1500;0;0;0;0;0;0;0
+15.3;22;31240;3.9023;436;1500;0;0;0;0;0;0;0
+15.4;22;31240;3.9023;428;1500;0;0;0;0;0;0;0
+15.5;22;31240;3.9023;420;1500;0;0;0;0;0;0;0
+15.6;22;31240;3.9023;412;1500;0;0;0;0;0;0;0
+15.7;22;31240;3.9023;405;1500;0;0;0;0;0;0;0
+15.8;22;31240;3.9023;397;1500;0;0;0;0;0;0;0
+15.9;22;31240;3.9023;390;1500;0;0;0;0;0;0;0
+16;22;31240;3.9023;383;1500;0;0;0;0;0;0;0
+16.1;22;31240;3.9023;367;1500;0;0;0;0;0;0;0
+16.2;22;31240;3.9023;352;1500;0;0;0;0;0;0;0
+16.3;22;31240;3.9023;337;1500;0;0;0;0;0;0;0
+16.4;22;31240;3.9023;323;1500;0;0;0;0;0;0;0
+16.5;22;31240;3.9023;310;1500;0;0;0;0;0;0;0
+16.6;22;31240;3.9023;297;1500;0;0;0;0;0;0;0
+16.7;22;31240;3.9023;285;1500;0;0;0;0;0;0;0
+16.8;22;31240;3.9023;273;1500;0;0;0;0;0;0;0
+16.9;22;31240;3.9023;262;1500;0;0;0;0;0;0;0
+17;22;31240;3.9023;251;1500;0;0;0;0;0;0;0
+17.1;22;31240;3.9023;240;1500;0;0;0;0;0;0;0
+17.2;22;31240;3.9023;230;1500;0;0;0;0;0;0;0
+17.3;22;31240;3.9023;221;1500;0;0;0;0;0;0;0
+17.4;22;31240;3.9023;212;1500;0;0;0;0;0;0;0
+17.5;22;31240;3.9023;203;1500;0;0;0;0;0;0;0
+17.6;22;31240;3.9023;195;1500;0;0;0;0;0;0;0
+17.7;22;31240;3.9023;186;1500;0;0;0;0;0;0;0
+17.8;22;31240;3.9023;179;1500;0;0;0;0;0;0;0
+17.9;22;31240;3.9023;171;1500;0;0;0;0;0;0;0
+18;22;31240;3.9023;164;1500;0;0;0;0;0;0;0
+18.1;22;31240;3.9023;157;1500;0;0;0;0;0;0;0
+18.2;22;31240;3.9023;151;1500;0;0;0;0;0;0;0
+18.3;22;31240;3.9023;145;1500;0;0;0;0;0;0;0
+18.4;22;31240;3.9023;139;1500;0;0;0;0;0;0;0
+18.5;22;31240;3.9023;133;1500;0;0;0;0;0;0;0
+18.6;22;31240;3.9023;127;1500;0;0;0;0;0;0;0
+18.7;22;31240;3.9023;122;1500;0;0;0;0;0;0;0
+18.8;22;31240;3.9023;117;1500;0;0;0;0;0;0;0
+18.9;22;31240;3.9023;112;1500;0;0;0;0;0;0;0
+19;22;31240;3.9023;108;1500;0;0;0;0;0;0;0
+19.1;22;31240;3.9023;101;1500;0;0;0;0;0;0;0
+19.2;22;31240;3.9023;95;1500;0;0;0;0;0;0;0
+19.3;22;31240;3.9023;89;1500;0;0;0;0;0;0;0
+19.4;22;31240;3.9023;84;1500;0;0;0;0;0;0;0
+19.5;22;31240;3.9023;79;1500;0;0;0;0;0;0;0
+19.6;22;31240;3.9023;74;1500;0;0;0;0;0;0;0
+19.7;22;31240;3.9023;70;1500;0;0;0;0;0;0;0
+19.8;22;31240;3.9023;66;1500;0;0;0;0;0;0;0
+19.9;22;31240;3.9023;62;1500;0;0;0;0;0;0;0
+20;22;31240;3.9023;58;1500;0;0;0;0;0;0;0
+20.1;22;31240;3.9023;55;1500;0;0;0;0;0;0;0
+20.2;22;31240;3.9023;52;1500;0;0;0;0;0;0;0
+20.3;22;31240;3.9023;48;1500;0;0;0;0;0;0;0
+20.4;22;31240;3.9023;46;1500;0;0;0;0;0;0;0
+20.5;22;31240;3.9023;43;1500;0;0;0;0;0;0;0
+20.6;22;31240;3.9023;40;1500;0;0;0;0;0;0;0
+20.7;22;31240;3.9023;38;1500;0;0;0;0;0;0;0
+20.8;22;31240;3.9023;36;1500;0;0;0;0;0;0;0
+20.9;22;31240;3.9023;34;1500;0;0;0;0;0;0;0
+21;22;31240;3.9023;32;1500;0;0;0;0;0;0;0
+21.1;22;31240;3.9023;30;1500;0;0;0;0;0;0;0
+21.2;22;31240;3.9023;28;1500;0;0;0;0;0;0;0
+21.3;22;31240;3.9023;26;1500;0;0;0;0;0;0;0
+21.4;22;31240;3.9023;25;1500;0;0;0;0;0;0;0
+21.5;22;31240;3.9023;23;1500;0;0;0;0;0;0;0
+21.6;22;31240;3.9023;22;1500;0;0;0;0;0;0;0
+21.7;22;31240;3.9023;21;1500;0;0;0;0;0;0;0
+21.8;22;31240;3.9023;19;1500;0;0;0;0;0;0;0
+21.9;22;31240;3.9023;18;1500;0;0;0;0;0;0;0
+22;22;31240;3.9023;17;1500;0;0;0;0;0;0;0
+22.1;22;31240;3.9023;16;1500;0;0;0;0;0;0;0
+22.2;22;31240;3.9023;14;1500;0;0;0;0;0;0;0
+22.3;22;31240;3.9023;13;1500;0;0;0;0;0;0;0
+22.4;22;31240;3.9023;12;1500;0;0;0;0;0;0;0
+22.5;22;31240;3.9023;11;1500;0;0;0;0;0;0;0
+22.6;22;31240;3.9023;10;1500;0;0;0;0;0;0;0
+22.7;22;31240;3.9023;9;1500;0;0;0;0;0;0;0
+22.8;22;31240;3.9023;8;1500;0;0;0;0;0;0;0
+22.9;22;31240;3.9023;7;1500;0;0;0;0;0;0;0
+23;22;31240;3.9023;7;1500;0;0;0;0;0;0;0
+23.1;22;31240;3.9023;6;1500;0;0;0;0;0;0;0
+23.2;22;31240;3.9023;6;1500;0;0;0;0;0;0;0
+23.3;22;31240;3.9023;5;1500;0;0;0;0;0;0;0
+23.4;22;31240;3.9023;5;1500;0;0;0;0;0;0;0
+23.5;22;31240;3.9023;4;1500;0;0;0;0;0;0;0
+23.6;22;31240;3.9023;4;1500;0;0;0;0;0;0;0
+23.7;22;31240;3.9023;4;1500;0;0;0;0;0;0;0
+23.8;22;31240;3.9023;3;1500;0;0;0;0;0;0;0
+23.9;22;31240;3.9023;3;1500;0;0;0;0;0;0;0
+24;22;31240;3.9023;3;1500;0;0;0;0;0;0;0
+24.1;22;31240;3.9023;2;1500;0;0;0;0;0;0;0
+24.2;22;31240;3.9023;2;1500;0;0;0;0;0;0;0
+24.3;22;31240;3.9023;2;1500;0;0;0;0;0;0;0
+24.4;22;31240;3.9023;2;1500;0;0;0;0;0;0;0
+24.5;22;31240;3.9023;2;1500;0;0;0;0;0;0;0
+24.6;22;31240;3.9023;2;1500;0;0;0;0;0;0;0
+24.7;22;31240;3.9023;1;1500;0;0;0;0;0;0;0
+24.8;22;31240;3.9023;1;1500;0;0;0;0;0;0;0
+24.9;22;31240;3.9023;1;1500;0;0;0;0;0;0;0
+25;22;31240;3.9023;1;1500;0;0;0;0;0;0;0
+25.1;22;31240;3.9023;0;1500;0;0;0;0;0;0;0
+25.2;22;31240;3.9023;0;1500;0;0;0;0;0;0;0
+25.3;22;31240;3.9023;0;1500;0;0;0;0;0;0;0
+25.4;22;31240;3.9023;0;1500;0;0;0;0;0;0;0
+25.5;22;31240;3.9023;0;1500;0;0;0;0;0;0;0
+25.6;22;31240;3.9023;0;1500;0;0;0;0;0;0;0
+25.7;22;31240;3.9023;0;1500;0;0;0;0;0;0;0
+25.8;22;31240;3.9023;0;1500;0;0;0;0;0;0;0
+25.9;22;31240;3.9023;0;1500;0;0;0;0;0;0;0
+26;22;31240;3.9023;0;1500;0;0;0;0;0;0;0
+26.1;22;31240;3.9023;0;1500;0;0;0;0;0;0;0
+26.2;22;31240;3.9023;0;1500;0;0;0;0;0;0;0
+26.3;22;31240;3.9023;0;1500;0;0;0;0;0;0;0
+26.4;22;31240;3.9023;0;1500;0;0;0;0;0;0;0
+26.5;22;31240;3.9023;0;1500;0;0;0;0;0;0;0
+26.6;22;31240;3.9023;0;1500;0;0;0;0;0;0;0
+26.7;22;31240;3.9023;0;1500;0;0;0;0;0;0;0
+26.8;22;31240;3.9023;0;1500;0;0;0;0;0;0;0
+26.9;22;31240;3.9023;0;1500;0;0;0;0;0;0;0
+27;22;31240;3.9023;0;1500;0;0;0;0;0;0;0
+27.1;22;31240;3.9023;0;1500;0;0;0;0;0;0;0
+27.2;22;31240;3.9023;0;1500;0;0;0;0;0;0;0
+27.3;22;31240;3.9023;0;1500;0;0;0;0;0;0;0
+27.4;22;31240;3.9023;0;1500;0;0;0;0;0;0;0
+27.5;22;31240;3.9023;0;1500;0;0;0;0;0;0;0
+27.6;22;31240;3.9023;0;1500;0;0;0;0;0;0;0
+27.7;22;31240;3.9023;0;1500;0;0;0;0;0;0;0
+27.8;22;31240;3.9023;0;1500;0;0;0;0;0;0;0
+27.9;22;31240;3.9023;0;1500;0;0;0;0;0;0;0
+28;22;31240;3.9023;0;1500;0;0;0;0;0;0;0
diff --git a/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs23_cdlc_mimo2x2_dl.csv b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs23_cdlc_mimo2x2_dl.csv
new file mode 100644
index 0000000000..450a465d71
--- /dev/null
+++ b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs23_cdlc_mimo2x2_dl.csv
@@ -0,0 +1,302 @@
+SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
+1;23;33816;4.2129;1489;1500;0;0;0;0;0;0;0
+1.1;23;33816;4.2129;1483;1500;0;0;0;0;0;0;0
+1.2;23;33816;4.2129;1477;1500;0;0;0;0;0;0;0
+1.3;23;33816;4.2129;1471;1500;0;0;0;0;0;0;0
+1.4;23;33816;4.2129;1465;1500;0;0;0;0;0;0;0
+1.5;23;33816;4.2129;1458;1500;0;0;0;0;0;0;0
+1.6;23;33816;4.2129;1452;1500;0;0;0;0;0;0;0
+1.7;23;33816;4.2129;1446;1500;0;0;0;0;0;0;0
+1.8;23;33816;4.2129;1440;1500;0;0;0;0;0;0;0
+1.9;23;33816;4.2129;1434;1500;0;0;0;0;0;0;0
+2;23;33816;4.2129;1428;1500;0;0;0;0;0;0;0
+2.1;23;33816;4.2129;1422;1500;0;0;0;0;0;0;0
+2.2;23;33816;4.2129;1416;1500;0;0;0;0;0;0;0
+2.3;23;33816;4.2129;1411;1500;0;0;0;0;0;0;0
+2.4;23;33816;4.2129;1405;1500;0;0;0;0;0;0;0
+2.5;23;33816;4.2129;1399;1500;0;0;0;0;0;0;0
+2.6;23;33816;4.2129;1393;1500;0;0;0;0;0;0;0
+2.7;23;33816;4.2129;1387;1500;0;0;0;0;0;0;0
+2.8;23;33816;4.2129;1381;1500;0;0;0;0;0;0;0
+2.9;23;33816;4.2129;1376;1500;0;0;0;0;0;0;0
+3;23;33816;4.2129;1370;1500;0;0;0;0;0;0;0
+3.1;23;33816;4.2129;1364;1500;0;0;0;0;0;0;0
+3.2;23;33816;4.2129;1358;1500;0;0;0;0;0;0;0
+3.3;23;33816;4.2129;1353;1500;0;0;0;0;0;0;0
+3.4;23;33816;4.2129;1347;1500;0;0;0;0;0;0;0
+3.5;23;33816;4.2129;1342;1500;0;0;0;0;0;0;0
+3.6;23;33816;4.2129;1336;1500;0;0;0;0;0;0;0
+3.7;23;33816;4.2129;1330;1500;0;0;0;0;0;0;0
+3.8;23;33816;4.2129;1325;1500;0;0;0;0;0;0;0
+3.9;23;33816;4.2129;1319;1500;0;0;0;0;0;0;0
+4;23;33816;4.2129;1314;1500;0;0;0;0;0;0;0
+4.1;23;33816;4.2129;1304;1500;0;0;0;0;0;0;0
+4.2;23;33816;4.2129;1295;1500;0;0;0;0;0;0;0
+4.3;23;33816;4.2129;1286;1500;0;0;0;0;0;0;0
+4.4;23;33816;4.2129;1276;1500;0;0;0;0;0;0;0
+4.5;23;33816;4.2129;1267;1500;0;0;0;0;0;0;0
+4.6;23;33816;4.2129;1258;1500;0;0;0;0;0;0;0
+4.7;23;33816;4.2129;1249;1500;0;0;0;0;0;0;0
+4.8;23;33816;4.2129;1240;1500;0;0;0;0;0;0;0
+4.9;23;33816;4.2129;1231;1500;0;0;0;0;0;0;0
+5;23;33816;4.2129;1222;1500;0;0;0;0;0;0;0
+5.1;23;33816;4.2129;1213;1500;0;0;0;0;0;0;0
+5.2;23;33816;4.2129;1205;1500;0;0;0;0;0;0;0
+5.3;23;33816;4.2129;1196;1500;0;0;0;0;0;0;0
+5.4;23;33816;4.2129;1187;1500;0;0;0;0;0;0;0
+5.5;23;33816;4.2129;1179;1500;0;0;0;0;0;0;0
+5.6;23;33816;4.2129;1170;1500;0;0;0;0;0;0;0
+5.7;23;33816;4.2129;1162;1500;0;0;0;0;0;0;0
+5.8;23;33816;4.2129;1153;1500;0;0;0;0;0;0;0
+5.9;23;33816;4.2129;1145;1500;0;0;0;0;0;0;0
+6;23;33816;4.2129;1137;1500;0;0;0;0;0;0;0
+6.1;23;33816;4.2129;1129;1500;0;0;0;0;0;0;0
+6.2;23;33816;4.2129;1121;1500;0;0;0;0;0;0;0
+6.3;23;33816;4.2129;1112;1500;0;0;0;0;0;0;0
+6.4;23;33816;4.2129;1104;1500;0;0;0;0;0;0;0
+6.5;23;33816;4.2129;1097;1500;0;0;0;0;0;0;0
+6.6;23;33816;4.2129;1089;1500;0;0;0;0;0;0;0
+6.7;23;33816;4.2129;1081;1500;0;0;0;0;0;0;0
+6.8;23;33816;4.2129;1073;1500;0;0;0;0;0;0;0
+6.9;23;33816;4.2129;1065;1500;0;0;0;0;0;0;0
+7;23;33816;4.2129;1058;1500;0;0;0;0;0;0;0
+7.1;23;33816;4.2129;1050;1500;0;0;0;0;0;0;0
+7.2;23;33816;4.2129;1042;1500;0;0;0;0;0;0;0
+7.3;23;33816;4.2129;1035;1500;0;0;0;0;0;0;0
+7.4;23;33816;4.2129;1027;1500;0;0;0;0;0;0;0
+7.5;23;33816;4.2129;1020;1500;0;0;0;0;0;0;0
+7.6;23;33816;4.2129;1012;1500;0;0;0;0;0;0;0
+7.7;23;33816;4.2129;1005;1500;0;0;0;0;0;0;0
+7.8;23;33816;4.2129;998;1500;0;0;0;0;0;0;0
+7.9;23;33816;4.2129;990;1500;0;0;0;0;0;0;0
+8;23;33816;4.2129;983;1500;0;0;0;0;0;0;0
+8.1;23;33816;4.2129;976;1500;0;0;0;0;0;0;0
+8.2;23;33816;4.2129;969;1500;0;0;0;0;0;0;0
+8.3;23;33816;4.2129;962;1500;0;0;0;0;0;0;0
+8.4;23;33816;4.2129;955;1500;0;0;0;0;0;0;0
+8.5;23;33816;4.2129;948;1500;0;0;0;0;0;0;0
+8.6;23;33816;4.2129;941;1500;0;0;0;0;0;0;0
+8.7;23;33816;4.2129;934;1500;0;0;0;0;0;0;0
+8.8;23;33816;4.2129;927;1500;0;0;0;0;0;0;0
+8.9;23;33816;4.2129;921;1500;0;0;0;0;0;0;0
+9;23;33816;4.2129;914;1500;0;0;0;0;0;0;0
+9.1;23;33816;4.2129;907;1500;0;0;0;0;0;0;0
+9.2;23;33816;4.2129;901;1500;0;0;0;0;0;0;0
+9.3;23;33816;4.2129;894;1500;0;0;0;0;0;0;0
+9.4;23;33816;4.2129;888;1500;0;0;0;0;0;0;0
+9.5;23;33816;4.2129;881;1500;0;0;0;0;0;0;0
+9.6;23;33816;4.2129;875;1500;0;0;0;0;0;0;0
+9.7;23;33816;4.2129;869;1500;0;0;0;0;0;0;0
+9.8;23;33816;4.2129;862;1500;0;0;0;0;0;0;0
+9.9;23;33816;4.2129;856;1500;0;0;0;0;0;0;0
+10;23;33816;4.2129;850;1500;0;0;0;0;0;0;0
+10.1;23;33816;4.2129;845;1500;0;0;0;0;0;0;0
+10.2;23;33816;4.2129;841;1500;0;0;0;0;0;0;0
+10.3;23;33816;4.2129;837;1500;0;0;0;0;0;0;0
+10.4;23;33816;4.2129;833;1500;0;0;0;0;0;0;0
+10.5;23;33816;4.2129;829;1500;0;0;0;0;0;0;0
+10.6;23;33816;4.2129;824;1500;0;0;0;0;0;0;0
+10.7;23;33816;4.2129;820;1500;0;0;0;0;0;0;0
+10.8;23;33816;4.2129;816;1500;0;0;0;0;0;0;0
+10.9;23;33816;4.2129;812;1500;0;0;0;0;0;0;0
+11;23;33816;4.2129;808;1500;0;0;0;0;0;0;0
+11.1;23;33816;4.2129;804;1500;0;0;0;0;0;0;0
+11.2;23;33816;4.2129;800;1500;0;0;0;0;0;0;0
+11.3;23;33816;4.2129;796;1500;0;0;0;0;0;0;0
+11.4;23;33816;4.2129;792;1500;0;0;0;0;0;0;0
+11.5;23;33816;4.2129;788;1500;0;0;0;0;0;0;0
+11.6;23;33816;4.2129;784;1500;0;0;0;0;0;0;0
+11.7;23;33816;4.2129;780;1500;0;0;0;0;0;0;0
+11.8;23;33816;4.2129;776;1500;0;0;0;0;0;0;0
+11.9;23;33816;4.2129;772;1500;0;0;0;0;0;0;0
+12;23;33816;4.2129;768;1500;0;0;0;0;0;0;0
+12.1;23;33816;4.2129;764;1500;0;0;0;0;0;0;0
+12.2;23;33816;4.2129;761;1500;0;0;0;0;0;0;0
+12.3;23;33816;4.2129;757;1500;0;0;0;0;0;0;0
+12.4;23;33816;4.2129;753;1500;0;0;0;0;0;0;0
+12.5;23;33816;4.2129;749;1500;0;0;0;0;0;0;0
+12.6;23;33816;4.2129;745;1500;0;0;0;0;0;0;0
+12.7;23;33816;4.2129;742;1500;0;0;0;0;0;0;0
+12.8;23;33816;4.2129;738;1500;0;0;0;0;0;0;0
+12.9;23;33816;4.2129;734;1500;0;0;0;0;0;0;0
+13;23;33816;4.2129;731;1500;0;0;0;0;0;0;0
+13.1;23;33816;4.2129;722;1500;0;0;0;0;0;0;0
+13.2;23;33816;4.2129;713;1500;0;0;0;0;0;0;0
+13.3;23;33816;4.2129;704;1500;0;0;0;0;0;0;0
+13.4;23;33816;4.2129;695;1500;0;0;0;0;0;0;0
+13.5;23;33816;4.2129;686;1500;0;0;0;0;0;0;0
+13.6;23;33816;4.2129;678;1500;0;0;0;0;0;0;0
+13.7;23;33816;4.2129;670;1500;0;0;0;0;0;0;0
+13.8;23;33816;4.2129;661;1500;0;0;0;0;0;0;0
+13.9;23;33816;4.2129;653;1500;0;0;0;0;0;0;0
+14;23;33816;4.2129;645;1500;0;0;0;0;0;0;0
+14.1;23;33816;4.2129;637;1500;0;0;0;0;0;0;0
+14.2;23;33816;4.2129;629;1500;0;0;0;0;0;0;0
+14.3;23;33816;4.2129;621;1500;0;0;0;0;0;0;0
+14.4;23;33816;4.2129;614;1500;0;0;0;0;0;0;0
+14.5;23;33816;4.2129;606;1500;0;0;0;0;0;0;0
+14.6;23;33816;4.2129;599;1500;0;0;0;0;0;0;0
+14.7;23;33816;4.2129;591;1500;0;0;0;0;0;0;0
+14.8;23;33816;4.2129;584;1500;0;0;0;0;0;0;0
+14.9;23;33816;4.2129;577;1500;0;0;0;0;0;0;0
+15;23;33816;4.2129;569;1500;0;0;0;0;0;0;0
+15.1;23;33816;4.2129;562;1500;0;0;0;0;0;0;0
+15.2;23;33816;4.2129;555;1500;0;0;0;0;0;0;0
+15.3;23;33816;4.2129;549;1500;0;0;0;0;0;0;0
+15.4;23;33816;4.2129;542;1500;0;0;0;0;0;0;0
+15.5;23;33816;4.2129;535;1500;0;0;0;0;0;0;0
+15.6;23;33816;4.2129;528;1500;0;0;0;0;0;0;0
+15.7;23;33816;4.2129;522;1500;0;0;0;0;0;0;0
+15.8;23;33816;4.2129;515;1500;0;0;0;0;0;0;0
+15.9;23;33816;4.2129;509;1500;0;0;0;0;0;0;0
+16;23;33816;4.2129;503;1500;0;0;0;0;0;0;0
+16.1;23;33816;4.2129;486;1500;0;0;0;0;0;0;0
+16.2;23;33816;4.2129;471;1500;0;0;0;0;0;0;0
+16.3;23;33816;4.2129;455;1500;0;0;0;0;0;0;0
+16.4;23;33816;4.2129;440;1500;0;0;0;0;0;0;0
+16.5;23;33816;4.2129;426;1500;0;0;0;0;0;0;0
+16.6;23;33816;4.2129;412;1500;0;0;0;0;0;0;0
+16.7;23;33816;4.2129;399;1500;0;0;0;0;0;0;0
+16.8;23;33816;4.2129;386;1500;0;0;0;0;0;0;0
+16.9;23;33816;4.2129;373;1500;0;0;0;0;0;0;0
+17;23;33816;4.2129;361;1500;0;0;0;0;0;0;0
+17.1;23;33816;4.2129;349;1500;0;0;0;0;0;0;0
+17.2;23;33816;4.2129;338;1500;0;0;0;0;0;0;0
+17.3;23;33816;4.2129;327;1500;0;0;0;0;0;0;0
+17.4;23;33816;4.2129;316;1500;0;0;0;0;0;0;0
+17.5;23;33816;4.2129;306;1500;0;0;0;0;0;0;0
+17.6;23;33816;4.2129;296;1500;0;0;0;0;0;0;0
+17.7;23;33816;4.2129;286;1500;0;0;0;0;0;0;0
+17.8;23;33816;4.2129;277;1500;0;0;0;0;0;0;0
+17.9;23;33816;4.2129;268;1500;0;0;0;0;0;0;0
+18;23;33816;4.2129;259;1500;0;0;0;0;0;0;0
+18.1;23;33816;4.2129;251;1500;0;0;0;0;0;0;0
+18.2;23;33816;4.2129;243;1500;0;0;0;0;0;0;0
+18.3;23;33816;4.2129;235;1500;0;0;0;0;0;0;0
+18.4;23;33816;4.2129;227;1500;0;0;0;0;0;0;0
+18.5;23;33816;4.2129;220;1500;0;0;0;0;0;0;0
+18.6;23;33816;4.2129;213;1500;0;0;0;0;0;0;0
+18.7;23;33816;4.2129;206;1500;0;0;0;0;0;0;0
+18.8;23;33816;4.2129;199;1500;0;0;0;0;0;0;0
+18.9;23;33816;4.2129;193;1500;0;0;0;0;0;0;0
+19;23;33816;4.2129;186;1500;0;0;0;0;0;0;0
+19.1;23;33816;4.2129;177;1500;0;0;0;0;0;0;0
+19.2;23;33816;4.2129;169;1500;0;0;0;0;0;0;0
+19.3;23;33816;4.2129;161;1500;0;0;0;0;0;0;0
+19.4;23;33816;4.2129;153;1500;0;0;0;0;0;0;0
+19.5;23;33816;4.2129;146;1500;0;0;0;0;0;0;0
+19.6;23;33816;4.2129;139;1500;0;0;0;0;0;0;0
+19.7;23;33816;4.2129;132;1500;0;0;0;0;0;0;0
+19.8;23;33816;4.2129;126;1500;0;0;0;0;0;0;0
+19.9;23;33816;4.2129;120;1500;0;0;0;0;0;0;0
+20;23;33816;4.2129;114;1500;0;0;0;0;0;0;0
+20.1;23;33816;4.2129;109;1500;0;0;0;0;0;0;0
+20.2;23;33816;4.2129;104;1500;0;0;0;0;0;0;0
+20.3;23;33816;4.2129;99;1500;0;0;0;0;0;0;0
+20.4;23;33816;4.2129;94;1500;0;0;0;0;0;0;0
+20.5;23;33816;4.2129;89;1500;0;0;0;0;0;0;0
+20.6;23;33816;4.2129;85;1500;0;0;0;0;0;0;0
+20.7;23;33816;4.2129;81;1500;0;0;0;0;0;0;0
+20.8;23;33816;4.2129;77;1500;0;0;0;0;0;0;0
+20.9;23;33816;4.2129;74;1500;0;0;0;0;0;0;0
+21;23;33816;4.2129;70;1500;0;0;0;0;0;0;0
+21.1;23;33816;4.2129;67;1500;0;0;0;0;0;0;0
+21.2;23;33816;4.2129;63;1500;0;0;0;0;0;0;0
+21.3;23;33816;4.2129;60;1500;0;0;0;0;0;0;0
+21.4;23;33816;4.2129;58;1500;0;0;0;0;0;0;0
+21.5;23;33816;4.2129;55;1500;0;0;0;0;0;0;0
+21.6;23;33816;4.2129;52;1500;0;0;0;0;0;0;0
+21.7;23;33816;4.2129;50;1500;0;0;0;0;0;0;0
+21.8;23;33816;4.2129;47;1500;0;0;0;0;0;0;0
+21.9;23;33816;4.2129;45;1500;0;0;0;0;0;0;0
+22;23;33816;4.2129;43;1500;0;0;0;0;0;0;0
+22.1;23;33816;4.2129;39;1500;0;0;0;0;0;0;0
+22.2;23;33816;4.2129;36;1500;0;0;0;0;0;0;0
+22.3;23;33816;4.2129;33;1500;0;0;0;0;0;0;0
+22.4;23;33816;4.2129;30;1500;0;0;0;0;0;0;0
+22.5;23;33816;4.2129;28;1500;0;0;0;0;0;0;0
+22.6;23;33816;4.2129;26;1500;0;0;0;0;0;0;0
+22.7;23;33816;4.2129;23;1500;0;0;0;0;0;0;0
+22.8;23;33816;4.2129;22;1500;0;0;0;0;0;0;0
+22.9;23;33816;4.2129;20;1500;0;0;0;0;0;0;0
+23;23;33816;4.2129;18;1500;0;0;0;0;0;0;0
+23.1;23;33816;4.2129;17;1500;0;0;0;0;0;0;0
+23.2;23;33816;4.2129;15;1500;0;0;0;0;0;0;0
+23.3;23;33816;4.2129;14;1500;0;0;0;0;0;0;0
+23.4;23;33816;4.2129;13;1500;0;0;0;0;0;0;0
+23.5;23;33816;4.2129;12;1500;0;0;0;0;0;0;0
+23.6;23;33816;4.2129;11;1500;0;0;0;0;0;0;0
+23.7;23;33816;4.2129;10;1500;0;0;0;0;0;0;0
+23.8;23;33816;4.2129;9;1500;0;0;0;0;0;0;0
+23.9;23;33816;4.2129;8;1500;0;0;0;0;0;0;0
+24;23;33816;4.2129;8;1500;0;0;0;0;0;0;0
+24.1;23;33816;4.2129;7;1500;0;0;0;0;0;0;0
+24.2;23;33816;4.2129;6;1500;0;0;0;0;0;0;0
+24.3;23;33816;4.2129;6;1500;0;0;0;0;0;0;0
+24.4;23;33816;4.2129;5;1500;0;0;0;0;0;0;0
+24.5;23;33816;4.2129;5;1500;0;0;0;0;0;0;0
+24.6;23;33816;4.2129;5;1500;0;0;0;0;0;0;0
+24.7;23;33816;4.2129;4;1500;0;0;0;0;0;0;0
+24.8;23;33816;4.2129;4;1500;0;0;0;0;0;0;0
+24.9;23;33816;4.2129;4;1500;0;0;0;0;0;0;0
+25;23;33816;4.2129;3;1500;0;0;0;0;0;0;0
+25.1;23;33816;4.2129;3;1500;0;0;0;0;0;0;0
+25.2;23;33816;4.2129;3;1500;0;0;0;0;0;0;0
+25.3;23;33816;4.2129;3;1500;0;0;0;0;0;0;0
+25.4;23;33816;4.2129;2;1500;0;0;0;0;0;0;0
+25.5;23;33816;4.2129;2;1500;0;0;0;0;0;0;0
+25.6;23;33816;4.2129;2;1500;0;0;0;0;0;0;0
+25.7;23;33816;4.2129;2;1500;0;0;0;0;0;0;0
+25.8;23;33816;4.2129;2;1500;0;0;0;0;0;0;0
+25.9;23;33816;4.2129;2;1500;0;0;0;0;0;0;0
+26;23;33816;4.2129;2;1500;0;0;0;0;0;0;0
+26.1;23;33816;4.2129;1;1500;0;0;0;0;0;0;0
+26.2;23;33816;4.2129;1;1500;0;0;0;0;0;0;0
+26.3;23;33816;4.2129;1;1500;0;0;0;0;0;0;0
+26.4;23;33816;4.2129;1;1500;0;0;0;0;0;0;0
+26.5;23;33816;4.2129;1;1500;0;0;0;0;0;0;0
+26.6;23;33816;4.2129;1;1500;0;0;0;0;0;0;0
+26.7;23;33816;4.2129;1;1500;0;0;0;0;0;0;0
+26.8;23;33816;4.2129;1;1500;0;0;0;0;0;0;0
+26.9;23;33816;4.2129;1;1500;0;0;0;0;0;0;0
+27;23;33816;4.2129;1;1500;0;0;0;0;0;0;0
+27.1;23;33816;4.2129;1;1500;0;0;0;0;0;0;0
+27.2;23;33816;4.2129;1;1500;0;0;0;0;0;0;0
+27.3;23;33816;4.2129;1;1500;0;0;0;0;0;0;0
+27.4;23;33816;4.2129;1;1500;0;0;0;0;0;0;0
+27.5;23;33816;4.2129;1;1500;0;0;0;0;0;0;0
+27.6;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
+27.7;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
+27.8;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
+27.9;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
+28;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
+28.1;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
+28.2;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
+28.3;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
+28.4;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
+28.5;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
+28.6;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
+28.7;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
+28.8;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
+28.9;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
+29;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
+29.1;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
+29.2;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
+29.3;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
+29.4;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
+29.5;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
+29.6;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
+29.7;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
+29.8;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
+29.9;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
+30;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
+30.1;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
+30.2;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
+30.3;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
+30.4;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
+30.5;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
+30.6;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
+30.7;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
+30.8;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
+30.9;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
+31;23;33816;4.2129;0;1500;0;0;0;0;0;0;0
diff --git a/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs24_cdlc_mimo2x2_dl.csv b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs24_cdlc_mimo2x2_dl.csv
new file mode 100644
index 0000000000..c6f78e39ca
--- /dev/null
+++ b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs24_cdlc_mimo2x2_dl.csv
@@ -0,0 +1,302 @@
+SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
+1;24;35856;4.5234;1496;1500;0;0;0;0;0;0;0
+1.1;24;35856;4.5234;1491;1500;0;0;0;0;0;0;0
+1.2;24;35856;4.5234;1486;1500;0;0;0;0;0;0;0
+1.3;24;35856;4.5234;1481;1500;0;0;0;0;0;0;0
+1.4;24;35856;4.5234;1476;1500;0;0;0;0;0;0;0
+1.5;24;35856;4.5234;1471;1500;0;0;0;0;0;0;0
+1.6;24;35856;4.5234;1466;1500;0;0;0;0;0;0;0
+1.7;24;35856;4.5234;1461;1500;0;0;0;0;0;0;0
+1.8;24;35856;4.5234;1456;1500;0;0;0;0;0;0;0
+1.9;24;35856;4.5234;1451;1500;0;0;0;0;0;0;0
+2;24;35856;4.5234;1446;1500;0;0;0;0;0;0;0
+2.1;24;35856;4.5234;1441;1500;0;0;0;0;0;0;0
+2.2;24;35856;4.5234;1436;1500;0;0;0;0;0;0;0
+2.3;24;35856;4.5234;1431;1500;0;0;0;0;0;0;0
+2.4;24;35856;4.5234;1426;1500;0;0;0;0;0;0;0
+2.5;24;35856;4.5234;1421;1500;0;0;0;0;0;0;0
+2.6;24;35856;4.5234;1416;1500;0;0;0;0;0;0;0
+2.7;24;35856;4.5234;1411;1500;0;0;0;0;0;0;0
+2.8;24;35856;4.5234;1406;1500;0;0;0;0;0;0;0
+2.9;24;35856;4.5234;1401;1500;0;0;0;0;0;0;0
+3;24;35856;4.5234;1397;1500;0;0;0;0;0;0;0
+3.1;24;35856;4.5234;1392;1500;0;0;0;0;0;0;0
+3.2;24;35856;4.5234;1387;1500;0;0;0;0;0;0;0
+3.3;24;35856;4.5234;1382;1500;0;0;0;0;0;0;0
+3.4;24;35856;4.5234;1378;1500;0;0;0;0;0;0;0
+3.5;24;35856;4.5234;1373;1500;0;0;0;0;0;0;0
+3.6;24;35856;4.5234;1368;1500;0;0;0;0;0;0;0
+3.7;24;35856;4.5234;1363;1500;0;0;0;0;0;0;0
+3.8;24;35856;4.5234;1359;1500;0;0;0;0;0;0;0
+3.9;24;35856;4.5234;1354;1500;0;0;0;0;0;0;0
+4;24;35856;4.5234;1349;1500;0;0;0;0;0;0;0
+4.1;24;35856;4.5234;1340;1500;0;0;0;0;0;0;0
+4.2;24;35856;4.5234;1331;1500;0;0;0;0;0;0;0
+4.3;24;35856;4.5234;1322;1500;0;0;0;0;0;0;0
+4.4;24;35856;4.5234;1313;1500;0;0;0;0;0;0;0
+4.5;24;35856;4.5234;1304;1500;0;0;0;0;0;0;0
+4.6;24;35856;4.5234;1295;1500;0;0;0;0;0;0;0
+4.7;24;35856;4.5234;1286;1500;0;0;0;0;0;0;0
+4.8;24;35856;4.5234;1277;1500;0;0;0;0;0;0;0
+4.9;24;35856;4.5234;1268;1500;0;0;0;0;0;0;0
+5;24;35856;4.5234;1260;1500;0;0;0;0;0;0;0
+5.1;24;35856;4.5234;1251;1500;0;0;0;0;0;0;0
+5.2;24;35856;4.5234;1243;1500;0;0;0;0;0;0;0
+5.3;24;35856;4.5234;1234;1500;0;0;0;0;0;0;0
+5.4;24;35856;4.5234;1226;1500;0;0;0;0;0;0;0
+5.5;24;35856;4.5234;1217;1500;0;0;0;0;0;0;0
+5.6;24;35856;4.5234;1209;1500;0;0;0;0;0;0;0
+5.7;24;35856;4.5234;1201;1500;0;0;0;0;0;0;0
+5.8;24;35856;4.5234;1192;1500;0;0;0;0;0;0;0
+5.9;24;35856;4.5234;1184;1500;0;0;0;0;0;0;0
+6;24;35856;4.5234;1176;1500;0;0;0;0;0;0;0
+6.1;24;35856;4.5234;1168;1500;0;0;0;0;0;0;0
+6.2;24;35856;4.5234;1160;1500;0;0;0;0;0;0;0
+6.3;24;35856;4.5234;1152;1500;0;0;0;0;0;0;0
+6.4;24;35856;4.5234;1144;1500;0;0;0;0;0;0;0
+6.5;24;35856;4.5234;1136;1500;0;0;0;0;0;0;0
+6.6;24;35856;4.5234;1129;1500;0;0;0;0;0;0;0
+6.7;24;35856;4.5234;1121;1500;0;0;0;0;0;0;0
+6.8;24;35856;4.5234;1113;1500;0;0;0;0;0;0;0
+6.9;24;35856;4.5234;1106;1500;0;0;0;0;0;0;0
+7;24;35856;4.5234;1098;1500;0;0;0;0;0;0;0
+7.1;24;35856;4.5234;1090;1500;0;0;0;0;0;0;0
+7.2;24;35856;4.5234;1082;1500;0;0;0;0;0;0;0
+7.3;24;35856;4.5234;1074;1500;0;0;0;0;0;0;0
+7.4;24;35856;4.5234;1066;1500;0;0;0;0;0;0;0
+7.5;24;35856;4.5234;1059;1500;0;0;0;0;0;0;0
+7.6;24;35856;4.5234;1051;1500;0;0;0;0;0;0;0
+7.7;24;35856;4.5234;1043;1500;0;0;0;0;0;0;0
+7.8;24;35856;4.5234;1035;1500;0;0;0;0;0;0;0
+7.9;24;35856;4.5234;1028;1500;0;0;0;0;0;0;0
+8;24;35856;4.5234;1020;1500;0;0;0;0;0;0;0
+8.1;24;35856;4.5234;1013;1500;0;0;0;0;0;0;0
+8.2;24;35856;4.5234;1006;1500;0;0;0;0;0;0;0
+8.3;24;35856;4.5234;998;1500;0;0;0;0;0;0;0
+8.4;24;35856;4.5234;991;1500;0;0;0;0;0;0;0
+8.5;24;35856;4.5234;984;1500;0;0;0;0;0;0;0
+8.6;24;35856;4.5234;977;1500;0;0;0;0;0;0;0
+8.7;24;35856;4.5234;969;1500;0;0;0;0;0;0;0
+8.8;24;35856;4.5234;962;1500;0;0;0;0;0;0;0
+8.9;24;35856;4.5234;955;1500;0;0;0;0;0;0;0
+9;24;35856;4.5234;948;1500;0;0;0;0;0;0;0
+9.1;24;35856;4.5234;941;1500;0;0;0;0;0;0;0
+9.2;24;35856;4.5234;935;1500;0;0;0;0;0;0;0
+9.3;24;35856;4.5234;928;1500;0;0;0;0;0;0;0
+9.4;24;35856;4.5234;921;1500;0;0;0;0;0;0;0
+9.5;24;35856;4.5234;914;1500;0;0;0;0;0;0;0
+9.6;24;35856;4.5234;908;1500;0;0;0;0;0;0;0
+9.7;24;35856;4.5234;901;1500;0;0;0;0;0;0;0
+9.8;24;35856;4.5234;894;1500;0;0;0;0;0;0;0
+9.9;24;35856;4.5234;888;1500;0;0;0;0;0;0;0
+10;24;35856;4.5234;881;1500;0;0;0;0;0;0;0
+10.1;24;35856;4.5234;877;1500;0;0;0;0;0;0;0
+10.2;24;35856;4.5234;873;1500;0;0;0;0;0;0;0
+10.3;24;35856;4.5234;869;1500;0;0;0;0;0;0;0
+10.4;24;35856;4.5234;866;1500;0;0;0;0;0;0;0
+10.5;24;35856;4.5234;862;1500;0;0;0;0;0;0;0
+10.6;24;35856;4.5234;858;1500;0;0;0;0;0;0;0
+10.7;24;35856;4.5234;854;1500;0;0;0;0;0;0;0
+10.8;24;35856;4.5234;850;1500;0;0;0;0;0;0;0
+10.9;24;35856;4.5234;846;1500;0;0;0;0;0;0;0
+11;24;35856;4.5234;842;1500;0;0;0;0;0;0;0
+11.1;24;35856;4.5234;839;1500;0;0;0;0;0;0;0
+11.2;24;35856;4.5234;835;1500;0;0;0;0;0;0;0
+11.3;24;35856;4.5234;831;1500;0;0;0;0;0;0;0
+11.4;24;35856;4.5234;827;1500;0;0;0;0;0;0;0
+11.5;24;35856;4.5234;824;1500;0;0;0;0;0;0;0
+11.6;24;35856;4.5234;820;1500;0;0;0;0;0;0;0
+11.7;24;35856;4.5234;816;1500;0;0;0;0;0;0;0
+11.8;24;35856;4.5234;812;1500;0;0;0;0;0;0;0
+11.9;24;35856;4.5234;809;1500;0;0;0;0;0;0;0
+12;24;35856;4.5234;805;1500;0;0;0;0;0;0;0
+12.1;24;35856;4.5234;802;1500;0;0;0;0;0;0;0
+12.2;24;35856;4.5234;798;1500;0;0;0;0;0;0;0
+12.3;24;35856;4.5234;794;1500;0;0;0;0;0;0;0
+12.4;24;35856;4.5234;791;1500;0;0;0;0;0;0;0
+12.5;24;35856;4.5234;787;1500;0;0;0;0;0;0;0
+12.6;24;35856;4.5234;784;1500;0;0;0;0;0;0;0
+12.7;24;35856;4.5234;780;1500;0;0;0;0;0;0;0
+12.8;24;35856;4.5234;777;1500;0;0;0;0;0;0;0
+12.9;24;35856;4.5234;773;1500;0;0;0;0;0;0;0
+13;24;35856;4.5234;770;1500;0;0;0;0;0;0;0
+13.1;24;35856;4.5234;764;1500;0;0;0;0;0;0;0
+13.2;24;35856;4.5234;758;1500;0;0;0;0;0;0;0
+13.3;24;35856;4.5234;752;1500;0;0;0;0;0;0;0
+13.4;24;35856;4.5234;746;1500;0;0;0;0;0;0;0
+13.5;24;35856;4.5234;740;1500;0;0;0;0;0;0;0
+13.6;24;35856;4.5234;734;1500;0;0;0;0;0;0;0
+13.7;24;35856;4.5234;728;1500;0;0;0;0;0;0;0
+13.8;24;35856;4.5234;723;1500;0;0;0;0;0;0;0
+13.9;24;35856;4.5234;717;1500;0;0;0;0;0;0;0
+14;24;35856;4.5234;711;1500;0;0;0;0;0;0;0
+14.1;24;35856;4.5234;706;1500;0;0;0;0;0;0;0
+14.2;24;35856;4.5234;700;1500;0;0;0;0;0;0;0
+14.3;24;35856;4.5234;695;1500;0;0;0;0;0;0;0
+14.4;24;35856;4.5234;689;1500;0;0;0;0;0;0;0
+14.5;24;35856;4.5234;684;1500;0;0;0;0;0;0;0
+14.6;24;35856;4.5234;679;1500;0;0;0;0;0;0;0
+14.7;24;35856;4.5234;673;1500;0;0;0;0;0;0;0
+14.8;24;35856;4.5234;668;1500;0;0;0;0;0;0;0
+14.9;24;35856;4.5234;663;1500;0;0;0;0;0;0;0
+15;24;35856;4.5234;658;1500;0;0;0;0;0;0;0
+15.1;24;35856;4.5234;653;1500;0;0;0;0;0;0;0
+15.2;24;35856;4.5234;647;1500;0;0;0;0;0;0;0
+15.3;24;35856;4.5234;642;1500;0;0;0;0;0;0;0
+15.4;24;35856;4.5234;637;1500;0;0;0;0;0;0;0
+15.5;24;35856;4.5234;632;1500;0;0;0;0;0;0;0
+15.6;24;35856;4.5234;627;1500;0;0;0;0;0;0;0
+15.7;24;35856;4.5234;622;1500;0;0;0;0;0;0;0
+15.8;24;35856;4.5234;618;1500;0;0;0;0;0;0;0
+15.9;24;35856;4.5234;613;1500;0;0;0;0;0;0;0
+16;24;35856;4.5234;608;1500;0;0;0;0;0;0;0
+16.1;24;35856;4.5234;594;1500;0;0;0;0;0;0;0
+16.2;24;35856;4.5234;580;1500;0;0;0;0;0;0;0
+16.3;24;35856;4.5234;567;1500;0;0;0;0;0;0;0
+16.4;24;35856;4.5234;554;1500;0;0;0;0;0;0;0
+16.5;24;35856;4.5234;541;1500;0;0;0;0;0;0;0
+16.6;24;35856;4.5234;529;1500;0;0;0;0;0;0;0
+16.7;24;35856;4.5234;517;1500;0;0;0;0;0;0;0
+16.8;24;35856;4.5234;505;1500;0;0;0;0;0;0;0
+16.9;24;35856;4.5234;493;1500;0;0;0;0;0;0;0
+17;24;35856;4.5234;482;1500;0;0;0;0;0;0;0
+17.1;24;35856;4.5234;471;1500;0;0;0;0;0;0;0
+17.2;24;35856;4.5234;460;1500;0;0;0;0;0;0;0
+17.3;24;35856;4.5234;449;1500;0;0;0;0;0;0;0
+17.4;24;35856;4.5234;439;1500;0;0;0;0;0;0;0
+17.5;24;35856;4.5234;429;1500;0;0;0;0;0;0;0
+17.6;24;35856;4.5234;419;1500;0;0;0;0;0;0;0
+17.7;24;35856;4.5234;409;1500;0;0;0;0;0;0;0
+17.8;24;35856;4.5234;400;1500;0;0;0;0;0;0;0
+17.9;24;35856;4.5234;391;1500;0;0;0;0;0;0;0
+18;24;35856;4.5234;382;1500;0;0;0;0;0;0;0
+18.1;24;35856;4.5234;373;1500;0;0;0;0;0;0;0
+18.2;24;35856;4.5234;364;1500;0;0;0;0;0;0;0
+18.3;24;35856;4.5234;356;1500;0;0;0;0;0;0;0
+18.4;24;35856;4.5234;348;1500;0;0;0;0;0;0;0
+18.5;24;35856;4.5234;340;1500;0;0;0;0;0;0;0
+18.6;24;35856;4.5234;332;1500;0;0;0;0;0;0;0
+18.7;24;35856;4.5234;324;1500;0;0;0;0;0;0;0
+18.8;24;35856;4.5234;317;1500;0;0;0;0;0;0;0
+18.9;24;35856;4.5234;309;1500;0;0;0;0;0;0;0
+19;24;35856;4.5234;302;1500;0;0;0;0;0;0;0
+19.1;24;35856;4.5234;290;1500;0;0;0;0;0;0;0
+19.2;24;35856;4.5234;279;1500;0;0;0;0;0;0;0
+19.3;24;35856;4.5234;267;1500;0;0;0;0;0;0;0
+19.4;24;35856;4.5234;257;1500;0;0;0;0;0;0;0
+19.5;24;35856;4.5234;246;1500;0;0;0;0;0;0;0
+19.6;24;35856;4.5234;237;1500;0;0;0;0;0;0;0
+19.7;24;35856;4.5234;227;1500;0;0;0;0;0;0;0
+19.8;24;35856;4.5234;218;1500;0;0;0;0;0;0;0
+19.9;24;35856;4.5234;209;1500;0;0;0;0;0;0;0
+20;24;35856;4.5234;201;1500;0;0;0;0;0;0;0
+20.1;24;35856;4.5234;193;1500;0;0;0;0;0;0;0
+20.2;24;35856;4.5234;185;1500;0;0;0;0;0;0;0
+20.3;24;35856;4.5234;178;1500;0;0;0;0;0;0;0
+20.4;24;35856;4.5234;171;1500;0;0;0;0;0;0;0
+20.5;24;35856;4.5234;164;1500;0;0;0;0;0;0;0
+20.6;24;35856;4.5234;157;1500;0;0;0;0;0;0;0
+20.7;24;35856;4.5234;151;1500;0;0;0;0;0;0;0
+20.8;24;35856;4.5234;145;1500;0;0;0;0;0;0;0
+20.9;24;35856;4.5234;139;1500;0;0;0;0;0;0;0
+21;24;35856;4.5234;133;1500;0;0;0;0;0;0;0
+21.1;24;35856;4.5234;128;1500;0;0;0;0;0;0;0
+21.2;24;35856;4.5234;123;1500;0;0;0;0;0;0;0
+21.3;24;35856;4.5234;118;1500;0;0;0;0;0;0;0
+21.4;24;35856;4.5234;113;1500;0;0;0;0;0;0;0
+21.5;24;35856;4.5234;109;1500;0;0;0;0;0;0;0
+21.6;24;35856;4.5234;104;1500;0;0;0;0;0;0;0
+21.7;24;35856;4.5234;100;1500;0;0;0;0;0;0;0
+21.8;24;35856;4.5234;96;1500;0;0;0;0;0;0;0
+21.9;24;35856;4.5234;92;1500;0;0;0;0;0;0;0
+22;24;35856;4.5234;89;1500;0;0;0;0;0;0;0
+22.1;24;35856;4.5234;83;1500;0;0;0;0;0;0;0
+22.2;24;35856;4.5234;79;1500;0;0;0;0;0;0;0
+22.3;24;35856;4.5234;74;1500;0;0;0;0;0;0;0
+22.4;24;35856;4.5234;70;1500;0;0;0;0;0;0;0
+22.5;24;35856;4.5234;66;1500;0;0;0;0;0;0;0
+22.6;24;35856;4.5234;62;1500;0;0;0;0;0;0;0
+22.7;24;35856;4.5234;58;1500;0;0;0;0;0;0;0
+22.8;24;35856;4.5234;55;1500;0;0;0;0;0;0;0
+22.9;24;35856;4.5234;51;1500;0;0;0;0;0;0;0
+23;24;35856;4.5234;48;1500;0;0;0;0;0;0;0
+23.1;24;35856;4.5234;46;1500;0;0;0;0;0;0;0
+23.2;24;35856;4.5234;43;1500;0;0;0;0;0;0;0
+23.3;24;35856;4.5234;40;1500;0;0;0;0;0;0;0
+23.4;24;35856;4.5234;38;1500;0;0;0;0;0;0;0
+23.5;24;35856;4.5234;36;1500;0;0;0;0;0;0;0
+23.6;24;35856;4.5234;34;1500;0;0;0;0;0;0;0
+23.7;24;35856;4.5234;32;1500;0;0;0;0;0;0;0
+23.8;24;35856;4.5234;30;1500;0;0;0;0;0;0;0
+23.9;24;35856;4.5234;28;1500;0;0;0;0;0;0;0
+24;24;35856;4.5234;26;1500;0;0;0;0;0;0;0
+24.1;24;35856;4.5234;25;1500;0;0;0;0;0;0;0
+24.2;24;35856;4.5234;23;1500;0;0;0;0;0;0;0
+24.3;24;35856;4.5234;22;1500;0;0;0;0;0;0;0
+24.4;24;35856;4.5234;21;1500;0;0;0;0;0;0;0
+24.5;24;35856;4.5234;20;1500;0;0;0;0;0;0;0
+24.6;24;35856;4.5234;18;1500;0;0;0;0;0;0;0
+24.7;24;35856;4.5234;17;1500;0;0;0;0;0;0;0
+24.8;24;35856;4.5234;16;1500;0;0;0;0;0;0;0
+24.9;24;35856;4.5234;15;1500;0;0;0;0;0;0;0
+25;24;35856;4.5234;14;1500;0;0;0;0;0;0;0
+25.1;24;35856;4.5234;13;1500;0;0;0;0;0;0;0
+25.2;24;35856;4.5234;13;1500;0;0;0;0;0;0;0
+25.3;24;35856;4.5234;12;1500;0;0;0;0;0;0;0
+25.4;24;35856;4.5234;11;1500;0;0;0;0;0;0;0
+25.5;24;35856;4.5234;10;1500;0;0;0;0;0;0;0
+25.6;24;35856;4.5234;9;1500;0;0;0;0;0;0;0
+25.7;24;35856;4.5234;9;1500;0;0;0;0;0;0;0
+25.8;24;35856;4.5234;8;1500;0;0;0;0;0;0;0
+25.9;24;35856;4.5234;8;1500;0;0;0;0;0;0;0
+26;24;35856;4.5234;7;1500;0;0;0;0;0;0;0
+26.1;24;35856;4.5234;7;1500;0;0;0;0;0;0;0
+26.2;24;35856;4.5234;6;1500;0;0;0;0;0;0;0
+26.3;24;35856;4.5234;6;1500;0;0;0;0;0;0;0
+26.4;24;35856;4.5234;5;1500;0;0;0;0;0;0;0
+26.5;24;35856;4.5234;5;1500;0;0;0;0;0;0;0
+26.6;24;35856;4.5234;5;1500;0;0;0;0;0;0;0
+26.7;24;35856;4.5234;4;1500;0;0;0;0;0;0;0
+26.8;24;35856;4.5234;4;1500;0;0;0;0;0;0;0
+26.9;24;35856;4.5234;4;1500;0;0;0;0;0;0;0
+27;24;35856;4.5234;3;1500;0;0;0;0;0;0;0
+27.1;24;35856;4.5234;3;1500;0;0;0;0;0;0;0
+27.2;24;35856;4.5234;3;1500;0;0;0;0;0;0;0
+27.3;24;35856;4.5234;3;1500;0;0;0;0;0;0;0
+27.4;24;35856;4.5234;3;1500;0;0;0;0;0;0;0
+27.5;24;35856;4.5234;2;1500;0;0;0;0;0;0;0
+27.6;24;35856;4.5234;2;1500;0;0;0;0;0;0;0
+27.7;24;35856;4.5234;2;1500;0;0;0;0;0;0;0
+27.8;24;35856;4.5234;2;1500;0;0;0;0;0;0;0
+27.9;24;35856;4.5234;2;1500;0;0;0;0;0;0;0
+28;24;35856;4.5234;2;1500;0;0;0;0;0;0;0
+28.1;24;35856;4.5234;2;1500;0;0;0;0;0;0;0
+28.2;24;35856;4.5234;1;1500;0;0;0;0;0;0;0
+28.3;24;35856;4.5234;1;1500;0;0;0;0;0;0;0
+28.4;24;35856;4.5234;1;1500;0;0;0;0;0;0;0
+28.5;24;35856;4.5234;1;1500;0;0;0;0;0;0;0
+28.6;24;35856;4.5234;1;1500;0;0;0;0;0;0;0
+28.7;24;35856;4.5234;1;1500;0;0;0;0;0;0;0
+28.8;24;35856;4.5234;1;1500;0;0;0;0;0;0;0
+28.9;24;35856;4.5234;1;1500;0;0;0;0;0;0;0
+29;24;35856;4.5234;1;1500;0;0;0;0;0;0;0
+29.1;24;35856;4.5234;1;1500;0;0;0;0;0;0;0
+29.2;24;35856;4.5234;1;1500;0;0;0;0;0;0;0
+29.3;24;35856;4.5234;1;1500;0;0;0;0;0;0;0
+29.4;24;35856;4.5234;1;1500;0;0;0;0;0;0;0
+29.5;24;35856;4.5234;0;1500;0;0;0;0;0;0;0
+29.6;24;35856;4.5234;0;1500;0;0;0;0;0;0;0
+29.7;24;35856;4.5234;0;1500;0;0;0;0;0;0;0
+29.8;24;35856;4.5234;0;1500;0;0;0;0;0;0;0
+29.9;24;35856;4.5234;0;1500;0;0;0;0;0;0;0
+30;24;35856;4.5234;0;1500;0;0;0;0;0;0;0
+30.1;24;35856;4.5234;0;1500;0;0;0;0;0;0;0
+30.2;24;35856;4.5234;0;1500;0;0;0;0;0;0;0
+30.3;24;35856;4.5234;0;1500;0;0;0;0;0;0;0
+30.4;24;35856;4.5234;0;1500;0;0;0;0;0;0;0
+30.5;24;35856;4.5234;0;1500;0;0;0;0;0;0;0
+30.6;24;35856;4.5234;0;1500;0;0;0;0;0;0;0
+30.7;24;35856;4.5234;0;1500;0;0;0;0;0;0;0
+30.8;24;35856;4.5234;0;1500;0;0;0;0;0;0;0
+30.9;24;35856;4.5234;0;1500;0;0;0;0;0;0;0
+31;24;35856;4.5234;0;1500;0;0;0;0;0;0;0
diff --git a/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs25_cdlc_mimo2x2_dl.csv b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs25_cdlc_mimo2x2_dl.csv
new file mode 100644
index 0000000000..c98cca26d7
--- /dev/null
+++ b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs25_cdlc_mimo2x2_dl.csv
@@ -0,0 +1,302 @@
+SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
+1;25;37896;4.8164;1498;1500;0;0;0;0;0;0;0
+1.1;25;37896;4.8164;1494;1500;0;0;0;0;0;0;0
+1.2;25;37896;4.8164;1490;1500;0;0;0;0;0;0;0
+1.3;25;37896;4.8164;1486;1500;0;0;0;0;0;0;0
+1.4;25;37896;4.8164;1483;1500;0;0;0;0;0;0;0
+1.5;25;37896;4.8164;1479;1500;0;0;0;0;0;0;0
+1.6;25;37896;4.8164;1475;1500;0;0;0;0;0;0;0
+1.7;25;37896;4.8164;1471;1500;0;0;0;0;0;0;0
+1.8;25;37896;4.8164;1468;1500;0;0;0;0;0;0;0
+1.9;25;37896;4.8164;1464;1500;0;0;0;0;0;0;0
+2;25;37896;4.8164;1460;1500;0;0;0;0;0;0;0
+2.1;25;37896;4.8164;1456;1500;0;0;0;0;0;0;0
+2.2;25;37896;4.8164;1453;1500;0;0;0;0;0;0;0
+2.3;25;37896;4.8164;1449;1500;0;0;0;0;0;0;0
+2.4;25;37896;4.8164;1445;1500;0;0;0;0;0;0;0
+2.5;25;37896;4.8164;1441;1500;0;0;0;0;0;0;0
+2.6;25;37896;4.8164;1438;1500;0;0;0;0;0;0;0
+2.7;25;37896;4.8164;1434;1500;0;0;0;0;0;0;0
+2.8;25;37896;4.8164;1430;1500;0;0;0;0;0;0;0
+2.9;25;37896;4.8164;1427;1500;0;0;0;0;0;0;0
+3;25;37896;4.8164;1423;1500;0;0;0;0;0;0;0
+3.1;25;37896;4.8164;1419;1500;0;0;0;0;0;0;0
+3.2;25;37896;4.8164;1416;1500;0;0;0;0;0;0;0
+3.3;25;37896;4.8164;1412;1500;0;0;0;0;0;0;0
+3.4;25;37896;4.8164;1409;1500;0;0;0;0;0;0;0
+3.5;25;37896;4.8164;1405;1500;0;0;0;0;0;0;0
+3.6;25;37896;4.8164;1401;1500;0;0;0;0;0;0;0
+3.7;25;37896;4.8164;1398;1500;0;0;0;0;0;0;0
+3.8;25;37896;4.8164;1394;1500;0;0;0;0;0;0;0
+3.9;25;37896;4.8164;1391;1500;0;0;0;0;0;0;0
+4;25;37896;4.8164;1387;1500;0;0;0;0;0;0;0
+4.1;25;37896;4.8164;1378;1500;0;0;0;0;0;0;0
+4.2;25;37896;4.8164;1369;1500;0;0;0;0;0;0;0
+4.3;25;37896;4.8164;1360;1500;0;0;0;0;0;0;0
+4.4;25;37896;4.8164;1351;1500;0;0;0;0;0;0;0
+4.5;25;37896;4.8164;1342;1500;0;0;0;0;0;0;0
+4.6;25;37896;4.8164;1333;1500;0;0;0;0;0;0;0
+4.7;25;37896;4.8164;1324;1500;0;0;0;0;0;0;0
+4.8;25;37896;4.8164;1316;1500;0;0;0;0;0;0;0
+4.9;25;37896;4.8164;1307;1500;0;0;0;0;0;0;0
+5;25;37896;4.8164;1298;1500;0;0;0;0;0;0;0
+5.1;25;37896;4.8164;1290;1500;0;0;0;0;0;0;0
+5.2;25;37896;4.8164;1281;1500;0;0;0;0;0;0;0
+5.3;25;37896;4.8164;1273;1500;0;0;0;0;0;0;0
+5.4;25;37896;4.8164;1264;1500;0;0;0;0;0;0;0
+5.5;25;37896;4.8164;1256;1500;0;0;0;0;0;0;0
+5.6;25;37896;4.8164;1248;1500;0;0;0;0;0;0;0
+5.7;25;37896;4.8164;1240;1500;0;0;0;0;0;0;0
+5.8;25;37896;4.8164;1231;1500;0;0;0;0;0;0;0
+5.9;25;37896;4.8164;1223;1500;0;0;0;0;0;0;0
+6;25;37896;4.8164;1215;1500;0;0;0;0;0;0;0
+6.1;25;37896;4.8164;1207;1500;0;0;0;0;0;0;0
+6.2;25;37896;4.8164;1199;1500;0;0;0;0;0;0;0
+6.3;25;37896;4.8164;1191;1500;0;0;0;0;0;0;0
+6.4;25;37896;4.8164;1183;1500;0;0;0;0;0;0;0
+6.5;25;37896;4.8164;1176;1500;0;0;0;0;0;0;0
+6.6;25;37896;4.8164;1168;1500;0;0;0;0;0;0;0
+6.7;25;37896;4.8164;1160;1500;0;0;0;0;0;0;0
+6.8;25;37896;4.8164;1153;1500;0;0;0;0;0;0;0
+6.9;25;37896;4.8164;1145;1500;0;0;0;0;0;0;0
+7;25;37896;4.8164;1137;1500;0;0;0;0;0;0;0
+7.1;25;37896;4.8164;1129;1500;0;0;0;0;0;0;0
+7.2;25;37896;4.8164;1121;1500;0;0;0;0;0;0;0
+7.3;25;37896;4.8164;1112;1500;0;0;0;0;0;0;0
+7.4;25;37896;4.8164;1104;1500;0;0;0;0;0;0;0
+7.5;25;37896;4.8164;1096;1500;0;0;0;0;0;0;0
+7.6;25;37896;4.8164;1088;1500;0;0;0;0;0;0;0
+7.7;25;37896;4.8164;1080;1500;0;0;0;0;0;0;0
+7.8;25;37896;4.8164;1072;1500;0;0;0;0;0;0;0
+7.9;25;37896;4.8164;1064;1500;0;0;0;0;0;0;0
+8;25;37896;4.8164;1056;1500;0;0;0;0;0;0;0
+8.1;25;37896;4.8164;1048;1500;0;0;0;0;0;0;0
+8.2;25;37896;4.8164;1041;1500;0;0;0;0;0;0;0
+8.3;25;37896;4.8164;1033;1500;0;0;0;0;0;0;0
+8.4;25;37896;4.8164;1025;1500;0;0;0;0;0;0;0
+8.5;25;37896;4.8164;1018;1500;0;0;0;0;0;0;0
+8.6;25;37896;4.8164;1010;1500;0;0;0;0;0;0;0
+8.7;25;37896;4.8164;1003;1500;0;0;0;0;0;0;0
+8.8;25;37896;4.8164;995;1500;0;0;0;0;0;0;0
+8.9;25;37896;4.8164;988;1500;0;0;0;0;0;0;0
+9;25;37896;4.8164;981;1500;0;0;0;0;0;0;0
+9.1;25;37896;4.8164;974;1500;0;0;0;0;0;0;0
+9.2;25;37896;4.8164;966;1500;0;0;0;0;0;0;0
+9.3;25;37896;4.8164;959;1500;0;0;0;0;0;0;0
+9.4;25;37896;4.8164;952;1500;0;0;0;0;0;0;0
+9.5;25;37896;4.8164;945;1500;0;0;0;0;0;0;0
+9.6;25;37896;4.8164;938;1500;0;0;0;0;0;0;0
+9.7;25;37896;4.8164;931;1500;0;0;0;0;0;0;0
+9.8;25;37896;4.8164;924;1500;0;0;0;0;0;0;0
+9.9;25;37896;4.8164;917;1500;0;0;0;0;0;0;0
+10;25;37896;4.8164;911;1500;0;0;0;0;0;0;0
+10.1;25;37896;4.8164;906;1500;0;0;0;0;0;0;0
+10.2;25;37896;4.8164;902;1500;0;0;0;0;0;0;0
+10.3;25;37896;4.8164;897;1500;0;0;0;0;0;0;0
+10.4;25;37896;4.8164;893;1500;0;0;0;0;0;0;0
+10.5;25;37896;4.8164;888;1500;0;0;0;0;0;0;0
+10.6;25;37896;4.8164;884;1500;0;0;0;0;0;0;0
+10.7;25;37896;4.8164;879;1500;0;0;0;0;0;0;0
+10.8;25;37896;4.8164;875;1500;0;0;0;0;0;0;0
+10.9;25;37896;4.8164;871;1500;0;0;0;0;0;0;0
+11;25;37896;4.8164;866;1500;0;0;0;0;0;0;0
+11.1;25;37896;4.8164;862;1500;0;0;0;0;0;0;0
+11.2;25;37896;4.8164;858;1500;0;0;0;0;0;0;0
+11.3;25;37896;4.8164;853;1500;0;0;0;0;0;0;0
+11.4;25;37896;4.8164;849;1500;0;0;0;0;0;0;0
+11.5;25;37896;4.8164;845;1500;0;0;0;0;0;0;0
+11.6;25;37896;4.8164;841;1500;0;0;0;0;0;0;0
+11.7;25;37896;4.8164;836;1500;0;0;0;0;0;0;0
+11.8;25;37896;4.8164;832;1500;0;0;0;0;0;0;0
+11.9;25;37896;4.8164;828;1500;0;0;0;0;0;0;0
+12;25;37896;4.8164;824;1500;0;0;0;0;0;0;0
+12.1;25;37896;4.8164;820;1500;0;0;0;0;0;0;0
+12.2;25;37896;4.8164;816;1500;0;0;0;0;0;0;0
+12.3;25;37896;4.8164;812;1500;0;0;0;0;0;0;0
+12.4;25;37896;4.8164;808;1500;0;0;0;0;0;0;0
+12.5;25;37896;4.8164;804;1500;0;0;0;0;0;0;0
+12.6;25;37896;4.8164;800;1500;0;0;0;0;0;0;0
+12.7;25;37896;4.8164;796;1500;0;0;0;0;0;0;0
+12.8;25;37896;4.8164;792;1500;0;0;0;0;0;0;0
+12.9;25;37896;4.8164;788;1500;0;0;0;0;0;0;0
+13;25;37896;4.8164;784;1500;0;0;0;0;0;0;0
+13.1;25;37896;4.8164;779;1500;0;0;0;0;0;0;0
+13.2;25;37896;4.8164;775;1500;0;0;0;0;0;0;0
+13.3;25;37896;4.8164;770;1500;0;0;0;0;0;0;0
+13.4;25;37896;4.8164;765;1500;0;0;0;0;0;0;0
+13.5;25;37896;4.8164;761;1500;0;0;0;0;0;0;0
+13.6;25;37896;4.8164;756;1500;0;0;0;0;0;0;0
+13.7;25;37896;4.8164;752;1500;0;0;0;0;0;0;0
+13.8;25;37896;4.8164;747;1500;0;0;0;0;0;0;0
+13.9;25;37896;4.8164;743;1500;0;0;0;0;0;0;0
+14;25;37896;4.8164;739;1500;0;0;0;0;0;0;0
+14.1;25;37896;4.8164;734;1500;0;0;0;0;0;0;0
+14.2;25;37896;4.8164;730;1500;0;0;0;0;0;0;0
+14.3;25;37896;4.8164;726;1500;0;0;0;0;0;0;0
+14.4;25;37896;4.8164;721;1500;0;0;0;0;0;0;0
+14.5;25;37896;4.8164;717;1500;0;0;0;0;0;0;0
+14.6;25;37896;4.8164;713;1500;0;0;0;0;0;0;0
+14.7;25;37896;4.8164;708;1500;0;0;0;0;0;0;0
+14.8;25;37896;4.8164;704;1500;0;0;0;0;0;0;0
+14.9;25;37896;4.8164;700;1500;0;0;0;0;0;0;0
+15;25;37896;4.8164;696;1500;0;0;0;0;0;0;0
+15.1;25;37896;4.8164;692;1500;0;0;0;0;0;0;0
+15.2;25;37896;4.8164;688;1500;0;0;0;0;0;0;0
+15.3;25;37896;4.8164;684;1500;0;0;0;0;0;0;0
+15.4;25;37896;4.8164;680;1500;0;0;0;0;0;0;0
+15.5;25;37896;4.8164;676;1500;0;0;0;0;0;0;0
+15.6;25;37896;4.8164;672;1500;0;0;0;0;0;0;0
+15.7;25;37896;4.8164;668;1500;0;0;0;0;0;0;0
+15.8;25;37896;4.8164;664;1500;0;0;0;0;0;0;0
+15.9;25;37896;4.8164;660;1500;0;0;0;0;0;0;0
+16;25;37896;4.8164;656;1500;0;0;0;0;0;0;0
+16.1;25;37896;4.8164;646;1500;0;0;0;0;0;0;0
+16.2;25;37896;4.8164;636;1500;0;0;0;0;0;0;0
+16.3;25;37896;4.8164;626;1500;0;0;0;0;0;0;0
+16.4;25;37896;4.8164;616;1500;0;0;0;0;0;0;0
+16.5;25;37896;4.8164;607;1500;0;0;0;0;0;0;0
+16.6;25;37896;4.8164;597;1500;0;0;0;0;0;0;0
+16.7;25;37896;4.8164;588;1500;0;0;0;0;0;0;0
+16.8;25;37896;4.8164;579;1500;0;0;0;0;0;0;0
+16.9;25;37896;4.8164;570;1500;0;0;0;0;0;0;0
+17;25;37896;4.8164;561;1500;0;0;0;0;0;0;0
+17.1;25;37896;4.8164;553;1500;0;0;0;0;0;0;0
+17.2;25;37896;4.8164;544;1500;0;0;0;0;0;0;0
+17.3;25;37896;4.8164;536;1500;0;0;0;0;0;0;0
+17.4;25;37896;4.8164;527;1500;0;0;0;0;0;0;0
+17.5;25;37896;4.8164;519;1500;0;0;0;0;0;0;0
+17.6;25;37896;4.8164;511;1500;0;0;0;0;0;0;0
+17.7;25;37896;4.8164;503;1500;0;0;0;0;0;0;0
+17.8;25;37896;4.8164;496;1500;0;0;0;0;0;0;0
+17.9;25;37896;4.8164;488;1500;0;0;0;0;0;0;0
+18;25;37896;4.8164;480;1500;0;0;0;0;0;0;0
+18.1;25;37896;4.8164;473;1500;0;0;0;0;0;0;0
+18.2;25;37896;4.8164;466;1500;0;0;0;0;0;0;0
+18.3;25;37896;4.8164;458;1500;0;0;0;0;0;0;0
+18.4;25;37896;4.8164;451;1500;0;0;0;0;0;0;0
+18.5;25;37896;4.8164;444;1500;0;0;0;0;0;0;0
+18.6;25;37896;4.8164;437;1500;0;0;0;0;0;0;0
+18.7;25;37896;4.8164;431;1500;0;0;0;0;0;0;0
+18.8;25;37896;4.8164;424;1500;0;0;0;0;0;0;0
+18.9;25;37896;4.8164;418;1500;0;0;0;0;0;0;0
+19;25;37896;4.8164;411;1500;0;0;0;0;0;0;0
+19.1;25;37896;4.8164;397;1500;0;0;0;0;0;0;0
+19.2;25;37896;4.8164;383;1500;0;0;0;0;0;0;0
+19.3;25;37896;4.8164;370;1500;0;0;0;0;0;0;0
+19.4;25;37896;4.8164;357;1500;0;0;0;0;0;0;0
+19.5;25;37896;4.8164;345;1500;0;0;0;0;0;0;0
+19.6;25;37896;4.8164;333;1500;0;0;0;0;0;0;0
+19.7;25;37896;4.8164;322;1500;0;0;0;0;0;0;0
+19.8;25;37896;4.8164;311;1500;0;0;0;0;0;0;0
+19.9;25;37896;4.8164;300;1500;0;0;0;0;0;0;0
+20;25;37896;4.8164;290;1500;0;0;0;0;0;0;0
+20.1;25;37896;4.8164;280;1500;0;0;0;0;0;0;0
+20.2;25;37896;4.8164;270;1500;0;0;0;0;0;0;0
+20.3;25;37896;4.8164;261;1500;0;0;0;0;0;0;0
+20.4;25;37896;4.8164;252;1500;0;0;0;0;0;0;0
+20.5;25;37896;4.8164;243;1500;0;0;0;0;0;0;0
+20.6;25;37896;4.8164;235;1500;0;0;0;0;0;0;0
+20.7;25;37896;4.8164;227;1500;0;0;0;0;0;0;0
+20.8;25;37896;4.8164;219;1500;0;0;0;0;0;0;0
+20.9;25;37896;4.8164;212;1500;0;0;0;0;0;0;0
+21;25;37896;4.8164;204;1500;0;0;0;0;0;0;0
+21.1;25;37896;4.8164;197;1500;0;0;0;0;0;0;0
+21.2;25;37896;4.8164;191;1500;0;0;0;0;0;0;0
+21.3;25;37896;4.8164;184;1500;0;0;0;0;0;0;0
+21.4;25;37896;4.8164;178;1500;0;0;0;0;0;0;0
+21.5;25;37896;4.8164;172;1500;0;0;0;0;0;0;0
+21.6;25;37896;4.8164;166;1500;0;0;0;0;0;0;0
+21.7;25;37896;4.8164;160;1500;0;0;0;0;0;0;0
+21.8;25;37896;4.8164;155;1500;0;0;0;0;0;0;0
+21.9;25;37896;4.8164;149;1500;0;0;0;0;0;0;0
+22;25;37896;4.8164;144;1500;0;0;0;0;0;0;0
+22.1;25;37896;4.8164;138;1500;0;0;0;0;0;0;0
+22.2;25;37896;4.8164;132;1500;0;0;0;0;0;0;0
+22.3;25;37896;4.8164;126;1500;0;0;0;0;0;0;0
+22.4;25;37896;4.8164;120;1500;0;0;0;0;0;0;0
+22.5;25;37896;4.8164;115;1500;0;0;0;0;0;0;0
+22.6;25;37896;4.8164;110;1500;0;0;0;0;0;0;0
+22.7;25;37896;4.8164;105;1500;0;0;0;0;0;0;0
+22.8;25;37896;4.8164;100;1500;0;0;0;0;0;0;0
+22.9;25;37896;4.8164;96;1500;0;0;0;0;0;0;0
+23;25;37896;4.8164;92;1500;0;0;0;0;0;0;0
+23.1;25;37896;4.8164;88;1500;0;0;0;0;0;0;0
+23.2;25;37896;4.8164;84;1500;0;0;0;0;0;0;0
+23.3;25;37896;4.8164;80;1500;0;0;0;0;0;0;0
+23.4;25;37896;4.8164;76;1500;0;0;0;0;0;0;0
+23.5;25;37896;4.8164;73;1500;0;0;0;0;0;0;0
+23.6;25;37896;4.8164;70;1500;0;0;0;0;0;0;0
+23.7;25;37896;4.8164;67;1500;0;0;0;0;0;0;0
+23.8;25;37896;4.8164;64;1500;0;0;0;0;0;0;0
+23.9;25;37896;4.8164;61;1500;0;0;0;0;0;0;0
+24;25;37896;4.8164;58;1500;0;0;0;0;0;0;0
+24.1;25;37896;4.8164;56;1500;0;0;0;0;0;0;0
+24.2;25;37896;4.8164;53;1500;0;0;0;0;0;0;0
+24.3;25;37896;4.8164;51;1500;0;0;0;0;0;0;0
+24.4;25;37896;4.8164;49;1500;0;0;0;0;0;0;0
+24.5;25;37896;4.8164;46;1500;0;0;0;0;0;0;0
+24.6;25;37896;4.8164;44;1500;0;0;0;0;0;0;0
+24.7;25;37896;4.8164;42;1500;0;0;0;0;0;0;0
+24.8;25;37896;4.8164;40;1500;0;0;0;0;0;0;0
+24.9;25;37896;4.8164;39;1500;0;0;0;0;0;0;0
+25;25;37896;4.8164;37;1500;0;0;0;0;0;0;0
+25.1;25;37896;4.8164;35;1500;0;0;0;0;0;0;0
+25.2;25;37896;4.8164;32;1500;0;0;0;0;0;0;0
+25.3;25;37896;4.8164;30;1500;0;0;0;0;0;0;0
+25.4;25;37896;4.8164;29;1500;0;0;0;0;0;0;0
+25.5;25;37896;4.8164;27;1500;0;0;0;0;0;0;0
+25.6;25;37896;4.8164;25;1500;0;0;0;0;0;0;0
+25.7;25;37896;4.8164;23;1500;0;0;0;0;0;0;0
+25.8;25;37896;4.8164;22;1500;0;0;0;0;0;0;0
+25.9;25;37896;4.8164;21;1500;0;0;0;0;0;0;0
+26;25;37896;4.8164;19;1500;0;0;0;0;0;0;0
+26.1;25;37896;4.8164;18;1500;0;0;0;0;0;0;0
+26.2;25;37896;4.8164;17;1500;0;0;0;0;0;0;0
+26.3;25;37896;4.8164;16;1500;0;0;0;0;0;0;0
+26.4;25;37896;4.8164;15;1500;0;0;0;0;0;0;0
+26.5;25;37896;4.8164;14;1500;0;0;0;0;0;0;0
+26.6;25;37896;4.8164;13;1500;0;0;0;0;0;0;0
+26.7;25;37896;4.8164;12;1500;0;0;0;0;0;0;0
+26.8;25;37896;4.8164;11;1500;0;0;0;0;0;0;0
+26.9;25;37896;4.8164;11;1500;0;0;0;0;0;0;0
+27;25;37896;4.8164;10;1500;0;0;0;0;0;0;0
+27.1;25;37896;4.8164;9;1500;0;0;0;0;0;0;0
+27.2;25;37896;4.8164;9;1500;0;0;0;0;0;0;0
+27.3;25;37896;4.8164;8;1500;0;0;0;0;0;0;0
+27.4;25;37896;4.8164;8;1500;0;0;0;0;0;0;0
+27.5;25;37896;4.8164;7;1500;0;0;0;0;0;0;0
+27.6;25;37896;4.8164;7;1500;0;0;0;0;0;0;0
+27.7;25;37896;4.8164;6;1500;0;0;0;0;0;0;0
+27.8;25;37896;4.8164;6;1500;0;0;0;0;0;0;0
+27.9;25;37896;4.8164;6;1500;0;0;0;0;0;0;0
+28;25;37896;4.8164;5;1500;0;0;0;0;0;0;0
+28.1;25;37896;4.8164;5;1500;0;0;0;0;0;0;0
+28.2;25;37896;4.8164;5;1500;0;0;0;0;0;0;0
+28.3;25;37896;4.8164;4;1500;0;0;0;0;0;0;0
+28.4;25;37896;4.8164;4;1500;0;0;0;0;0;0;0
+28.5;25;37896;4.8164;4;1500;0;0;0;0;0;0;0
+28.6;25;37896;4.8164;3;1500;0;0;0;0;0;0;0
+28.7;25;37896;4.8164;3;1500;0;0;0;0;0;0;0
+28.8;25;37896;4.8164;3;1500;0;0;0;0;0;0;0
+28.9;25;37896;4.8164;3;1500;0;0;0;0;0;0;0
+29;25;37896;4.8164;3;1500;0;0;0;0;0;0;0
+29.1;25;37896;4.8164;2;1500;0;0;0;0;0;0;0
+29.2;25;37896;4.8164;2;1500;0;0;0;0;0;0;0
+29.3;25;37896;4.8164;2;1500;0;0;0;0;0;0;0
+29.4;25;37896;4.8164;2;1500;0;0;0;0;0;0;0
+29.5;25;37896;4.8164;2;1500;0;0;0;0;0;0;0
+29.6;25;37896;4.8164;2;1500;0;0;0;0;0;0;0
+29.7;25;37896;4.8164;2;1500;0;0;0;0;0;0;0
+29.8;25;37896;4.8164;1;1500;0;0;0;0;0;0;0
+29.9;25;37896;4.8164;1;1500;0;0;0;0;0;0;0
+30;25;37896;4.8164;1;1500;0;0;0;0;0;0;0
+30.1;25;37896;4.8164;1;1500;0;0;0;0;0;0;0
+30.2;25;37896;4.8164;1;1500;0;0;0;0;0;0;0
+30.3;25;37896;4.8164;1;1500;0;0;0;0;0;0;0
+30.4;25;37896;4.8164;1;1500;0;0;0;0;0;0;0
+30.5;25;37896;4.8164;1;1500;0;0;0;0;0;0;0
+30.6;25;37896;4.8164;1;1500;0;0;0;0;0;0;0
+30.7;25;37896;4.8164;1;1500;0;0;0;0;0;0;0
+30.8;25;37896;4.8164;1;1500;0;0;0;0;0;0;0
+30.9;25;37896;4.8164;1;1500;0;0;0;0;0;0;0
+31;25;37896;4.8164;1;1500;0;0;0;0;0;0;0
diff --git a/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs26_cdlc_mimo2x2_dl.csv b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs26_cdlc_mimo2x2_dl.csv
new file mode 100644
index 0000000000..4dbb35de27
--- /dev/null
+++ b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs26_cdlc_mimo2x2_dl.csv
@@ -0,0 +1,372 @@
+SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
+0;26;40976;5.1152;1500;1500;0;0;0;0;0;0;0
+0.1;26;40976;5.1152;1499;1500;0;0;0;0;0;0;0
+0.2;26;40976;5.1152;1498;1500;0;0;0;0;0;0;0
+0.3;26;40976;5.1152;1497;1500;0;0;0;0;0;0;0
+0.4;26;40976;5.1152;1496;1500;0;0;0;0;0;0;0
+0.5;26;40976;5.1152;1495;1500;0;0;0;0;0;0;0
+0.6;26;40976;5.1152;1494;1500;0;0;0;0;0;0;0
+0.7;26;40976;5.1152;1492;1500;0;0;0;0;0;0;0
+0.8;26;40976;5.1152;1491;1500;0;0;0;0;0;0;0
+0.9;26;40976;5.1152;1490;1500;0;0;0;0;0;0;0
+1;26;40976;5.1152;1489;1500;0;0;0;0;0;0;0
+1.1;26;40976;5.1152;1488;1500;0;0;0;0;0;0;0
+1.2;26;40976;5.1152;1487;1500;0;0;0;0;0;0;0
+1.3;26;40976;5.1152;1486;1500;0;0;0;0;0;0;0
+1.4;26;40976;5.1152;1485;1500;0;0;0;0;0;0;0
+1.5;26;40976;5.1152;1484;1500;0;0;0;0;0;0;0
+1.6;26;40976;5.1152;1483;1500;0;0;0;0;0;0;0
+1.7;26;40976;5.1152;1482;1500;0;0;0;0;0;0;0
+1.8;26;40976;5.1152;1481;1500;0;0;0;0;0;0;0
+1.9;26;40976;5.1152;1480;1500;0;0;0;0;0;0;0
+2;26;40976;5.1152;1479;1500;0;0;0;0;0;0;0
+2.1;26;40976;5.1152;1478;1500;0;0;0;0;0;0;0
+2.2;26;40976;5.1152;1477;1500;0;0;0;0;0;0;0
+2.3;26;40976;5.1152;1475;1500;0;0;0;0;0;0;0
+2.4;26;40976;5.1152;1474;1500;0;0;0;0;0;0;0
+2.5;26;40976;5.1152;1473;1500;0;0;0;0;0;0;0
+2.6;26;40976;5.1152;1472;1500;0;0;0;0;0;0;0
+2.7;26;40976;5.1152;1471;1500;0;0;0;0;0;0;0
+2.8;26;40976;5.1152;1470;1500;0;0;0;0;0;0;0
+2.9;26;40976;5.1152;1469;1500;0;0;0;0;0;0;0
+3;26;40976;5.1152;1468;1500;0;0;0;0;0;0;0
+3.1;26;40976;5.1152;1461;1500;0;0;0;0;0;0;0
+3.2;26;40976;5.1152;1455;1500;0;0;0;0;0;0;0
+3.3;26;40976;5.1152;1448;1500;0;0;0;0;0;0;0
+3.4;26;40976;5.1152;1442;1500;0;0;0;0;0;0;0
+3.5;26;40976;5.1152;1435;1500;0;0;0;0;0;0;0
+3.6;26;40976;5.1152;1429;1500;0;0;0;0;0;0;0
+3.7;26;40976;5.1152;1422;1500;0;0;0;0;0;0;0
+3.8;26;40976;5.1152;1416;1500;0;0;0;0;0;0;0
+3.9;26;40976;5.1152;1410;1500;0;0;0;0;0;0;0
+4;26;40976;5.1152;1403;1500;0;0;0;0;0;0;0
+4.1;26;40976;5.1152;1397;1500;0;0;0;0;0;0;0
+4.2;26;40976;5.1152;1391;1500;0;0;0;0;0;0;0
+4.3;26;40976;5.1152;1385;1500;0;0;0;0;0;0;0
+4.4;26;40976;5.1152;1378;1500;0;0;0;0;0;0;0
+4.5;26;40976;5.1152;1372;1500;0;0;0;0;0;0;0
+4.6;26;40976;5.1152;1366;1500;0;0;0;0;0;0;0
+4.7;26;40976;5.1152;1360;1500;0;0;0;0;0;0;0
+4.8;26;40976;5.1152;1354;1500;0;0;0;0;0;0;0
+4.9;26;40976;5.1152;1348;1500;0;0;0;0;0;0;0
+5;26;40976;5.1152;1342;1500;0;0;0;0;0;0;0
+5.1;26;40976;5.1152;1336;1500;0;0;0;0;0;0;0
+5.2;26;40976;5.1152;1330;1500;0;0;0;0;0;0;0
+5.3;26;40976;5.1152;1324;1500;0;0;0;0;0;0;0
+5.4;26;40976;5.1152;1318;1500;0;0;0;0;0;0;0
+5.5;26;40976;5.1152;1312;1500;0;0;0;0;0;0;0
+5.6;26;40976;5.1152;1306;1500;0;0;0;0;0;0;0
+5.7;26;40976;5.1152;1300;1500;0;0;0;0;0;0;0
+5.8;26;40976;5.1152;1294;1500;0;0;0;0;0;0;0
+5.9;26;40976;5.1152;1288;1500;0;0;0;0;0;0;0
+6;26;40976;5.1152;1283;1500;0;0;0;0;0;0;0
+6.1;26;40976;5.1152;1274;1500;0;0;0;0;0;0;0
+6.2;26;40976;5.1152;1265;1500;0;0;0;0;0;0;0
+6.3;26;40976;5.1152;1256;1500;0;0;0;0;0;0;0
+6.4;26;40976;5.1152;1247;1500;0;0;0;0;0;0;0
+6.5;26;40976;5.1152;1238;1500;0;0;0;0;0;0;0
+6.6;26;40976;5.1152;1230;1500;0;0;0;0;0;0;0
+6.7;26;40976;5.1152;1221;1500;0;0;0;0;0;0;0
+6.8;26;40976;5.1152;1213;1500;0;0;0;0;0;0;0
+6.9;26;40976;5.1152;1204;1500;0;0;0;0;0;0;0
+7;26;40976;5.1152;1196;1500;0;0;0;0;0;0;0
+7.1;26;40976;5.1152;1188;1500;0;0;0;0;0;0;0
+7.2;26;40976;5.1152;1179;1500;0;0;0;0;0;0;0
+7.3;26;40976;5.1152;1171;1500;0;0;0;0;0;0;0
+7.4;26;40976;5.1152;1163;1500;0;0;0;0;0;0;0
+7.5;26;40976;5.1152;1155;1500;0;0;0;0;0;0;0
+7.6;26;40976;5.1152;1147;1500;0;0;0;0;0;0;0
+7.7;26;40976;5.1152;1139;1500;0;0;0;0;0;0;0
+7.8;26;40976;5.1152;1131;1500;0;0;0;0;0;0;0
+7.9;26;40976;5.1152;1123;1500;0;0;0;0;0;0;0
+8;26;40976;5.1152;1115;1500;0;0;0;0;0;0;0
+8.1;26;40976;5.1152;1107;1500;0;0;0;0;0;0;0
+8.2;26;40976;5.1152;1100;1500;0;0;0;0;0;0;0
+8.3;26;40976;5.1152;1092;1500;0;0;0;0;0;0;0
+8.4;26;40976;5.1152;1084;1500;0;0;0;0;0;0;0
+8.5;26;40976;5.1152;1077;1500;0;0;0;0;0;0;0
+8.6;26;40976;5.1152;1069;1500;0;0;0;0;0;0;0
+8.7;26;40976;5.1152;1062;1500;0;0;0;0;0;0;0
+8.8;26;40976;5.1152;1055;1500;0;0;0;0;0;0;0
+8.9;26;40976;5.1152;1047;1500;0;0;0;0;0;0;0
+9;26;40976;5.1152;1040;1500;0;0;0;0;0;0;0
+9.1;26;40976;5.1152;1033;1500;0;0;0;0;0;0;0
+9.2;26;40976;5.1152;1026;1500;0;0;0;0;0;0;0
+9.3;26;40976;5.1152;1019;1500;0;0;0;0;0;0;0
+9.4;26;40976;5.1152;1013;1500;0;0;0;0;0;0;0
+9.5;26;40976;5.1152;1006;1500;0;0;0;0;0;0;0
+9.6;26;40976;5.1152;999;1500;0;0;0;0;0;0;0
+9.7;26;40976;5.1152;992;1500;0;0;0;0;0;0;0
+9.8;26;40976;5.1152;986;1500;0;0;0;0;0;0;0
+9.9;26;40976;5.1152;979;1500;0;0;0;0;0;0;0
+10;26;40976;5.1152;973;1500;0;0;0;0;0;0;0
+10.1;26;40976;5.1152;966;1500;0;0;0;0;0;0;0
+10.2;26;40976;5.1152;960;1500;0;0;0;0;0;0;0
+10.3;26;40976;5.1152;954;1500;0;0;0;0;0;0;0
+10.4;26;40976;5.1152;947;1500;0;0;0;0;0;0;0
+10.5;26;40976;5.1152;941;1500;0;0;0;0;0;0;0
+10.6;26;40976;5.1152;935;1500;0;0;0;0;0;0;0
+10.7;26;40976;5.1152;928;1500;0;0;0;0;0;0;0
+10.8;26;40976;5.1152;922;1500;0;0;0;0;0;0;0
+10.9;26;40976;5.1152;916;1500;0;0;0;0;0;0;0
+11;26;40976;5.1152;910;1500;0;0;0;0;0;0;0
+11.1;26;40976;5.1152;904;1500;0;0;0;0;0;0;0
+11.2;26;40976;5.1152;898;1500;0;0;0;0;0;0;0
+11.3;26;40976;5.1152;892;1500;0;0;0;0;0;0;0
+11.4;26;40976;5.1152;886;1500;0;0;0;0;0;0;0
+11.5;26;40976;5.1152;880;1500;0;0;0;0;0;0;0
+11.6;26;40976;5.1152;874;1500;0;0;0;0;0;0;0
+11.7;26;40976;5.1152;869;1500;0;0;0;0;0;0;0
+11.8;26;40976;5.1152;863;1500;0;0;0;0;0;0;0
+11.9;26;40976;5.1152;857;1500;0;0;0;0;0;0;0
+12;26;40976;5.1152;851;1500;0;0;0;0;0;0;0
+12.1;26;40976;5.1152;848;1500;0;0;0;0;0;0;0
+12.2;26;40976;5.1152;845;1500;0;0;0;0;0;0;0
+12.3;26;40976;5.1152;842;1500;0;0;0;0;0;0;0
+12.4;26;40976;5.1152;839;1500;0;0;0;0;0;0;0
+12.5;26;40976;5.1152;836;1500;0;0;0;0;0;0;0
+12.6;26;40976;5.1152;833;1500;0;0;0;0;0;0;0
+12.7;26;40976;5.1152;830;1500;0;0;0;0;0;0;0
+12.8;26;40976;5.1152;827;1500;0;0;0;0;0;0;0
+12.9;26;40976;5.1152;824;1500;0;0;0;0;0;0;0
+13;26;40976;5.1152;821;1500;0;0;0;0;0;0;0
+13.1;26;40976;5.1152;819;1500;0;0;0;0;0;0;0
+13.2;26;40976;5.1152;816;1500;0;0;0;0;0;0;0
+13.3;26;40976;5.1152;813;1500;0;0;0;0;0;0;0
+13.4;26;40976;5.1152;810;1500;0;0;0;0;0;0;0
+13.5;26;40976;5.1152;807;1500;0;0;0;0;0;0;0
+13.6;26;40976;5.1152;804;1500;0;0;0;0;0;0;0
+13.7;26;40976;5.1152;801;1500;0;0;0;0;0;0;0
+13.8;26;40976;5.1152;798;1500;0;0;0;0;0;0;0
+13.9;26;40976;5.1152;795;1500;0;0;0;0;0;0;0
+14;26;40976;5.1152;793;1500;0;0;0;0;0;0;0
+14.1;26;40976;5.1152;790;1500;0;0;0;0;0;0;0
+14.2;26;40976;5.1152;787;1500;0;0;0;0;0;0;0
+14.3;26;40976;5.1152;784;1500;0;0;0;0;0;0;0
+14.4;26;40976;5.1152;781;1500;0;0;0;0;0;0;0
+14.5;26;40976;5.1152;779;1500;0;0;0;0;0;0;0
+14.6;26;40976;5.1152;776;1500;0;0;0;0;0;0;0
+14.7;26;40976;5.1152;773;1500;0;0;0;0;0;0;0
+14.8;26;40976;5.1152;770;1500;0;0;0;0;0;0;0
+14.9;26;40976;5.1152;768;1500;0;0;0;0;0;0;0
+15;26;40976;5.1152;765;1500;0;0;0;0;0;0;0
+15.1;26;40976;5.1152;761;1500;0;0;0;0;0;0;0
+15.2;26;40976;5.1152;756;1500;0;0;0;0;0;0;0
+15.3;26;40976;5.1152;752;1500;0;0;0;0;0;0;0
+15.4;26;40976;5.1152;748;1500;0;0;0;0;0;0;0
+15.5;26;40976;5.1152;744;1500;0;0;0;0;0;0;0
+15.6;26;40976;5.1152;740;1500;0;0;0;0;0;0;0
+15.7;26;40976;5.1152;736;1500;0;0;0;0;0;0;0
+15.8;26;40976;5.1152;732;1500;0;0;0;0;0;0;0
+15.9;26;40976;5.1152;727;1500;0;0;0;0;0;0;0
+16;26;40976;5.1152;723;1500;0;0;0;0;0;0;0
+16.1;26;40976;5.1152;719;1500;0;0;0;0;0;0;0
+16.2;26;40976;5.1152;715;1500;0;0;0;0;0;0;0
+16.3;26;40976;5.1152;712;1500;0;0;0;0;0;0;0
+16.4;26;40976;5.1152;708;1500;0;0;0;0;0;0;0
+16.5;26;40976;5.1152;704;1500;0;0;0;0;0;0;0
+16.6;26;40976;5.1152;700;1500;0;0;0;0;0;0;0
+16.7;26;40976;5.1152;696;1500;0;0;0;0;0;0;0
+16.8;26;40976;5.1152;692;1500;0;0;0;0;0;0;0
+16.9;26;40976;5.1152;688;1500;0;0;0;0;0;0;0
+17;26;40976;5.1152;684;1500;0;0;0;0;0;0;0
+17.1;26;40976;5.1152;681;1500;0;0;0;0;0;0;0
+17.2;26;40976;5.1152;677;1500;0;0;0;0;0;0;0
+17.3;26;40976;5.1152;673;1500;0;0;0;0;0;0;0
+17.4;26;40976;5.1152;669;1500;0;0;0;0;0;0;0
+17.5;26;40976;5.1152;666;1500;0;0;0;0;0;0;0
+17.6;26;40976;5.1152;662;1500;0;0;0;0;0;0;0
+17.7;26;40976;5.1152;658;1500;0;0;0;0;0;0;0
+17.8;26;40976;5.1152;655;1500;0;0;0;0;0;0;0
+17.9;26;40976;5.1152;651;1500;0;0;0;0;0;0;0
+18;26;40976;5.1152;647;1500;0;0;0;0;0;0;0
+18.1;26;40976;5.1152;638;1500;0;0;0;0;0;0;0
+18.2;26;40976;5.1152;629;1500;0;0;0;0;0;0;0
+18.3;26;40976;5.1152;620;1500;0;0;0;0;0;0;0
+18.4;26;40976;5.1152;611;1500;0;0;0;0;0;0;0
+18.5;26;40976;5.1152;603;1500;0;0;0;0;0;0;0
+18.6;26;40976;5.1152;594;1500;0;0;0;0;0;0;0
+18.7;26;40976;5.1152;586;1500;0;0;0;0;0;0;0
+18.8;26;40976;5.1152;577;1500;0;0;0;0;0;0;0
+18.9;26;40976;5.1152;569;1500;0;0;0;0;0;0;0
+19;26;40976;5.1152;561;1500;0;0;0;0;0;0;0
+19.1;26;40976;5.1152;553;1500;0;0;0;0;0;0;0
+19.2;26;40976;5.1152;545;1500;0;0;0;0;0;0;0
+19.3;26;40976;5.1152;537;1500;0;0;0;0;0;0;0
+19.4;26;40976;5.1152;530;1500;0;0;0;0;0;0;0
+19.5;26;40976;5.1152;522;1500;0;0;0;0;0;0;0
+19.6;26;40976;5.1152;515;1500;0;0;0;0;0;0;0
+19.7;26;40976;5.1152;507;1500;0;0;0;0;0;0;0
+19.8;26;40976;5.1152;500;1500;0;0;0;0;0;0;0
+19.9;26;40976;5.1152;493;1500;0;0;0;0;0;0;0
+20;26;40976;5.1152;486;1500;0;0;0;0;0;0;0
+20.1;26;40976;5.1152;479;1500;0;0;0;0;0;0;0
+20.2;26;40976;5.1152;472;1500;0;0;0;0;0;0;0
+20.3;26;40976;5.1152;465;1500;0;0;0;0;0;0;0
+20.4;26;40976;5.1152;459;1500;0;0;0;0;0;0;0
+20.5;26;40976;5.1152;452;1500;0;0;0;0;0;0;0
+20.6;26;40976;5.1152;446;1500;0;0;0;0;0;0;0
+20.7;26;40976;5.1152;439;1500;0;0;0;0;0;0;0
+20.8;26;40976;5.1152;433;1500;0;0;0;0;0;0;0
+20.9;26;40976;5.1152;427;1500;0;0;0;0;0;0;0
+21;26;40976;5.1152;421;1500;0;0;0;0;0;0;0
+21.1;26;40976;5.1152;409;1500;0;0;0;0;0;0;0
+21.2;26;40976;5.1152;397;1500;0;0;0;0;0;0;0
+21.3;26;40976;5.1152;386;1500;0;0;0;0;0;0;0
+21.4;26;40976;5.1152;375;1500;0;0;0;0;0;0;0
+21.5;26;40976;5.1152;364;1500;0;0;0;0;0;0;0
+21.6;26;40976;5.1152;354;1500;0;0;0;0;0;0;0
+21.7;26;40976;5.1152;344;1500;0;0;0;0;0;0;0
+21.8;26;40976;5.1152;334;1500;0;0;0;0;0;0;0
+21.9;26;40976;5.1152;324;1500;0;0;0;0;0;0;0
+22;26;40976;5.1152;315;1500;0;0;0;0;0;0;0
+22.1;26;40976;5.1152;306;1500;0;0;0;0;0;0;0
+22.2;26;40976;5.1152;297;1500;0;0;0;0;0;0;0
+22.3;26;40976;5.1152;289;1500;0;0;0;0;0;0;0
+22.4;26;40976;5.1152;280;1500;0;0;0;0;0;0;0
+22.5;26;40976;5.1152;272;1500;0;0;0;0;0;0;0
+22.6;26;40976;5.1152;265;1500;0;0;0;0;0;0;0
+22.7;26;40976;5.1152;257;1500;0;0;0;0;0;0;0
+22.8;26;40976;5.1152;250;1500;0;0;0;0;0;0;0
+22.9;26;40976;5.1152;242;1500;0;0;0;0;0;0;0
+23;26;40976;5.1152;236;1500;0;0;0;0;0;0;0
+23.1;26;40976;5.1152;229;1500;0;0;0;0;0;0;0
+23.2;26;40976;5.1152;222;1500;0;0;0;0;0;0;0
+23.3;26;40976;5.1152;216;1500;0;0;0;0;0;0;0
+23.4;26;40976;5.1152;210;1500;0;0;0;0;0;0;0
+23.5;26;40976;5.1152;204;1500;0;0;0;0;0;0;0
+23.6;26;40976;5.1152;198;1500;0;0;0;0;0;0;0
+23.7;26;40976;5.1152;192;1500;0;0;0;0;0;0;0
+23.8;26;40976;5.1152;187;1500;0;0;0;0;0;0;0
+23.9;26;40976;5.1152;181;1500;0;0;0;0;0;0;0
+24;26;40976;5.1152;176;1500;0;0;0;0;0;0;0
+24.1;26;40976;5.1152;170;1500;0;0;0;0;0;0;0
+24.2;26;40976;5.1152;165;1500;0;0;0;0;0;0;0
+24.3;26;40976;5.1152;159;1500;0;0;0;0;0;0;0
+24.4;26;40976;5.1152;154;1500;0;0;0;0;0;0;0
+24.5;26;40976;5.1152;149;1500;0;0;0;0;0;0;0
+24.6;26;40976;5.1152;144;1500;0;0;0;0;0;0;0
+24.7;26;40976;5.1152;140;1500;0;0;0;0;0;0;0
+24.8;26;40976;5.1152;135;1500;0;0;0;0;0;0;0
+24.9;26;40976;5.1152;131;1500;0;0;0;0;0;0;0
+25;26;40976;5.1152;126;1500;0;0;0;0;0;0;0
+25.1;26;40976;5.1152;122;1500;0;0;0;0;0;0;0
+25.2;26;40976;5.1152;118;1500;0;0;0;0;0;0;0
+25.3;26;40976;5.1152;114;1500;0;0;0;0;0;0;0
+25.4;26;40976;5.1152;111;1500;0;0;0;0;0;0;0
+25.5;26;40976;5.1152;107;1500;0;0;0;0;0;0;0
+25.6;26;40976;5.1152;103;1500;0;0;0;0;0;0;0
+25.7;26;40976;5.1152;100;1500;0;0;0;0;0;0;0
+25.8;26;40976;5.1152;97;1500;0;0;0;0;0;0;0
+25.9;26;40976;5.1152;94;1500;0;0;0;0;0;0;0
+26;26;40976;5.1152;91;1500;0;0;0;0;0;0;0
+26.1;26;40976;5.1152;88;1500;0;0;0;0;0;0;0
+26.2;26;40976;5.1152;85;1500;0;0;0;0;0;0;0
+26.3;26;40976;5.1152;82;1500;0;0;0;0;0;0;0
+26.4;26;40976;5.1152;79;1500;0;0;0;0;0;0;0
+26.5;26;40976;5.1152;77;1500;0;0;0;0;0;0;0
+26.6;26;40976;5.1152;74;1500;0;0;0;0;0;0;0
+26.7;26;40976;5.1152;72;1500;0;0;0;0;0;0;0
+26.8;26;40976;5.1152;69;1500;0;0;0;0;0;0;0
+26.9;26;40976;5.1152;67;1500;0;0;0;0;0;0;0
+27;26;40976;5.1152;65;1500;0;0;0;0;0;0;0
+27.1;26;40976;5.1152;62;1500;0;0;0;0;0;0;0
+27.2;26;40976;5.1152;59;1500;0;0;0;0;0;0;0
+27.3;26;40976;5.1152;56;1500;0;0;0;0;0;0;0
+27.4;26;40976;5.1152;54;1500;0;0;0;0;0;0;0
+27.5;26;40976;5.1152;51;1500;0;0;0;0;0;0;0
+27.6;26;40976;5.1152;49;1500;0;0;0;0;0;0;0
+27.7;26;40976;5.1152;47;1500;0;0;0;0;0;0;0
+27.8;26;40976;5.1152;44;1500;0;0;0;0;0;0;0
+27.9;26;40976;5.1152;42;1500;0;0;0;0;0;0;0
+28;26;40976;5.1152;40;1500;0;0;0;0;0;0;0
+28.1;26;40976;5.1152;38;1500;0;0;0;0;0;0;0
+28.2;26;40976;5.1152;37;1500;0;0;0;0;0;0;0
+28.3;26;40976;5.1152;35;1500;0;0;0;0;0;0;0
+28.4;26;40976;5.1152;33;1500;0;0;0;0;0;0;0
+28.5;26;40976;5.1152;32;1500;0;0;0;0;0;0;0
+28.6;26;40976;5.1152;30;1500;0;0;0;0;0;0;0
+28.7;26;40976;5.1152;29;1500;0;0;0;0;0;0;0
+28.8;26;40976;5.1152;28;1500;0;0;0;0;0;0;0
+28.9;26;40976;5.1152;26;1500;0;0;0;0;0;0;0
+29;26;40976;5.1152;25;1500;0;0;0;0;0;0;0
+29.1;26;40976;5.1152;24;1500;0;0;0;0;0;0;0
+29.2;26;40976;5.1152;23;1500;0;0;0;0;0;0;0
+29.3;26;40976;5.1152;22;1500;0;0;0;0;0;0;0
+29.4;26;40976;5.1152;21;1500;0;0;0;0;0;0;0
+29.5;26;40976;5.1152;20;1500;0;0;0;0;0;0;0
+29.6;26;40976;5.1152;19;1500;0;0;0;0;0;0;0
+29.7;26;40976;5.1152;18;1500;0;0;0;0;0;0;0
+29.8;26;40976;5.1152;17;1500;0;0;0;0;0;0;0
+29.9;26;40976;5.1152;16;1500;0;0;0;0;0;0;0
+30;26;40976;5.1152;16;1500;0;0;0;0;0;0;0
+30.1;26;40976;5.1152;15;1500;0;0;0;0;0;0;0
+30.2;26;40976;5.1152;14;1500;0;0;0;0;0;0;0
+30.3;26;40976;5.1152;14;1500;0;0;0;0;0;0;0
+30.4;26;40976;5.1152;13;1500;0;0;0;0;0;0;0
+30.5;26;40976;5.1152;12;1500;0;0;0;0;0;0;0
+30.6;26;40976;5.1152;12;1500;0;0;0;0;0;0;0
+30.7;26;40976;5.1152;11;1500;0;0;0;0;0;0;0
+30.8;26;40976;5.1152;11;1500;0;0;0;0;0;0;0
+30.9;26;40976;5.1152;10;1500;0;0;0;0;0;0;0
+31;26;40976;5.1152;10;1500;0;0;0;0;0;0;0
+31.1;26;40976;5.1152;9;1500;0;0;0;0;0;0;0
+31.2;26;40976;5.1152;9;1500;0;0;0;0;0;0;0
+31.3;26;40976;5.1152;8;1500;0;0;0;0;0;0;0
+31.4;26;40976;5.1152;8;1500;0;0;0;0;0;0;0
+31.5;26;40976;5.1152;8;1500;0;0;0;0;0;0;0
+31.6;26;40976;5.1152;7;1500;0;0;0;0;0;0;0
+31.7;26;40976;5.1152;7;1500;0;0;0;0;0;0;0
+31.8;26;40976;5.1152;7;1500;0;0;0;0;0;0;0
+31.9;26;40976;5.1152;6;1500;0;0;0;0;0;0;0
+32;26;40976;5.1152;6;1500;0;0;0;0;0;0;0
+32.1;26;40976;5.1152;6;1500;0;0;0;0;0;0;0
+32.2;26;40976;5.1152;6;1500;0;0;0;0;0;0;0
+32.3;26;40976;5.1152;5;1500;0;0;0;0;0;0;0
+32.4;26;40976;5.1152;5;1500;0;0;0;0;0;0;0
+32.5;26;40976;5.1152;5;1500;0;0;0;0;0;0;0
+32.6;26;40976;5.1152;5;1500;0;0;0;0;0;0;0
+32.7;26;40976;5.1152;4;1500;0;0;0;0;0;0;0
+32.8;26;40976;5.1152;4;1500;0;0;0;0;0;0;0
+32.9;26;40976;5.1152;4;1500;0;0;0;0;0;0;0
+33;26;40976;5.1152;4;1500;0;0;0;0;0;0;0
+33.1;26;40976;5.1152;4;1500;0;0;0;0;0;0;0
+33.2;26;40976;5.1152;3;1500;0;0;0;0;0;0;0
+33.3;26;40976;5.1152;3;1500;0;0;0;0;0;0;0
+33.4;26;40976;5.1152;3;1500;0;0;0;0;0;0;0
+33.5;26;40976;5.1152;3;1500;0;0;0;0;0;0;0
+33.6;26;40976;5.1152;3;1500;0;0;0;0;0;0;0
+33.7;26;40976;5.1152;2;1500;0;0;0;0;0;0;0
+33.8;26;40976;5.1152;2;1500;0;0;0;0;0;0;0
+33.9;26;40976;5.1152;2;1500;0;0;0;0;0;0;0
+34;26;40976;5.1152;2;1500;0;0;0;0;0;0;0
+34.1;26;40976;5.1152;2;1500;0;0;0;0;0;0;0
+34.2;26;40976;5.1152;2;1500;0;0;0;0;0;0;0
+34.3;26;40976;5.1152;2;1500;0;0;0;0;0;0;0
+34.4;26;40976;5.1152;2;1500;0;0;0;0;0;0;0
+34.5;26;40976;5.1152;1;1500;0;0;0;0;0;0;0
+34.6;26;40976;5.1152;1;1500;0;0;0;0;0;0;0
+34.7;26;40976;5.1152;1;1500;0;0;0;0;0;0;0
+34.8;26;40976;5.1152;1;1500;0;0;0;0;0;0;0
+34.9;26;40976;5.1152;1;1500;0;0;0;0;0;0;0
+35;26;40976;5.1152;1;1500;0;0;0;0;0;0;0
+35.1;26;40976;5.1152;1;1500;0;0;0;0;0;0;0
+35.2;26;40976;5.1152;1;1500;0;0;0;0;0;0;0
+35.3;26;40976;5.1152;1;1500;0;0;0;0;0;0;0
+35.4;26;40976;5.1152;1;1500;0;0;0;0;0;0;0
+35.5;26;40976;5.1152;1;1500;0;0;0;0;0;0;0
+35.6;26;40976;5.1152;1;1500;0;0;0;0;0;0;0
+35.7;26;40976;5.1152;1;1500;0;0;0;0;0;0;0
+35.8;26;40976;5.1152;1;1500;0;0;0;0;0;0;0
+35.9;26;40976;5.1152;1;1500;0;0;0;0;0;0;0
+36;26;40976;5.1152;1;1500;0;0;0;0;0;0;0
+36.1;26;40976;5.1152;0;1500;0;0;0;0;0;0;0
+36.2;26;40976;5.1152;0;1500;0;0;0;0;0;0;0
+36.3;26;40976;5.1152;0;1500;0;0;0;0;0;0;0
+36.4;26;40976;5.1152;0;1500;0;0;0;0;0;0;0
+36.5;26;40976;5.1152;0;1500;0;0;0;0;0;0;0
+36.6;26;40976;5.1152;0;1500;0;0;0;0;0;0;0
+36.7;26;40976;5.1152;0;1500;0;0;0;0;0;0;0
+36.8;26;40976;5.1152;0;1500;0;0;0;0;0;0;0
+36.9;26;40976;5.1152;0;1500;0;0;0;0;0;0;0
+37;26;40976;5.1152;0;1500;0;0;0;0;0;0;0
diff --git a/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs27_cdlc_mimo2x2_dl.csv b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs27_cdlc_mimo2x2_dl.csv
new file mode 100644
index 0000000000..1446c24179
--- /dev/null
+++ b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs27_cdlc_mimo2x2_dl.csv
@@ -0,0 +1,372 @@
+SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
+0;27;42016;5.332;1500;1500;0;0;0;0;0;0;0
+0.1;27;42016;5.332;1499;1500;0;0;0;0;0;0;0
+0.2;27;42016;5.332;1498;1500;0;0;0;0;0;0;0
+0.3;27;42016;5.332;1497;1500;0;0;0;0;0;0;0
+0.4;27;42016;5.332;1496;1500;0;0;0;0;0;0;0
+0.5;27;42016;5.332;1496;1500;0;0;0;0;0;0;0
+0.6;27;42016;5.332;1495;1500;0;0;0;0;0;0;0
+0.7;27;42016;5.332;1494;1500;0;0;0;0;0;0;0
+0.8;27;42016;5.332;1493;1500;0;0;0;0;0;0;0
+0.9;27;42016;5.332;1492;1500;0;0;0;0;0;0;0
+1;27;42016;5.332;1491;1500;0;0;0;0;0;0;0
+1.1;27;42016;5.332;1490;1500;0;0;0;0;0;0;0
+1.2;27;42016;5.332;1490;1500;0;0;0;0;0;0;0
+1.3;27;42016;5.332;1489;1500;0;0;0;0;0;0;0
+1.4;27;42016;5.332;1488;1500;0;0;0;0;0;0;0
+1.5;27;42016;5.332;1487;1500;0;0;0;0;0;0;0
+1.6;27;42016;5.332;1486;1500;0;0;0;0;0;0;0
+1.7;27;42016;5.332;1485;1500;0;0;0;0;0;0;0
+1.8;27;42016;5.332;1484;1500;0;0;0;0;0;0;0
+1.9;27;42016;5.332;1483;1500;0;0;0;0;0;0;0
+2;27;42016;5.332;1483;1500;0;0;0;0;0;0;0
+2.1;27;42016;5.332;1482;1500;0;0;0;0;0;0;0
+2.2;27;42016;5.332;1481;1500;0;0;0;0;0;0;0
+2.3;27;42016;5.332;1480;1500;0;0;0;0;0;0;0
+2.4;27;42016;5.332;1479;1500;0;0;0;0;0;0;0
+2.5;27;42016;5.332;1478;1500;0;0;0;0;0;0;0
+2.6;27;42016;5.332;1477;1500;0;0;0;0;0;0;0
+2.7;27;42016;5.332;1476;1500;0;0;0;0;0;0;0
+2.8;27;42016;5.332;1476;1500;0;0;0;0;0;0;0
+2.9;27;42016;5.332;1475;1500;0;0;0;0;0;0;0
+3;27;42016;5.332;1474;1500;0;0;0;0;0;0;0
+3.1;27;42016;5.332;1467;1500;0;0;0;0;0;0;0
+3.2;27;42016;5.332;1461;1500;0;0;0;0;0;0;0
+3.3;27;42016;5.332;1454;1500;0;0;0;0;0;0;0
+3.4;27;42016;5.332;1448;1500;0;0;0;0;0;0;0
+3.5;27;42016;5.332;1442;1500;0;0;0;0;0;0;0
+3.6;27;42016;5.332;1435;1500;0;0;0;0;0;0;0
+3.7;27;42016;5.332;1429;1500;0;0;0;0;0;0;0
+3.8;27;42016;5.332;1423;1500;0;0;0;0;0;0;0
+3.9;27;42016;5.332;1416;1500;0;0;0;0;0;0;0
+4;27;42016;5.332;1410;1500;0;0;0;0;0;0;0
+4.1;27;42016;5.332;1404;1500;0;0;0;0;0;0;0
+4.2;27;42016;5.332;1398;1500;0;0;0;0;0;0;0
+4.3;27;42016;5.332;1391;1500;0;0;0;0;0;0;0
+4.4;27;42016;5.332;1385;1500;0;0;0;0;0;0;0
+4.5;27;42016;5.332;1379;1500;0;0;0;0;0;0;0
+4.6;27;42016;5.332;1373;1500;0;0;0;0;0;0;0
+4.7;27;42016;5.332;1367;1500;0;0;0;0;0;0;0
+4.8;27;42016;5.332;1361;1500;0;0;0;0;0;0;0
+4.9;27;42016;5.332;1355;1500;0;0;0;0;0;0;0
+5;27;42016;5.332;1349;1500;0;0;0;0;0;0;0
+5.1;27;42016;5.332;1343;1500;0;0;0;0;0;0;0
+5.2;27;42016;5.332;1337;1500;0;0;0;0;0;0;0
+5.3;27;42016;5.332;1331;1500;0;0;0;0;0;0;0
+5.4;27;42016;5.332;1325;1500;0;0;0;0;0;0;0
+5.5;27;42016;5.332;1319;1500;0;0;0;0;0;0;0
+5.6;27;42016;5.332;1314;1500;0;0;0;0;0;0;0
+5.7;27;42016;5.332;1308;1500;0;0;0;0;0;0;0
+5.8;27;42016;5.332;1302;1500;0;0;0;0;0;0;0
+5.9;27;42016;5.332;1296;1500;0;0;0;0;0;0;0
+6;27;42016;5.332;1290;1500;0;0;0;0;0;0;0
+6.1;27;42016;5.332;1282;1500;0;0;0;0;0;0;0
+6.2;27;42016;5.332;1273;1500;0;0;0;0;0;0;0
+6.3;27;42016;5.332;1264;1500;0;0;0;0;0;0;0
+6.4;27;42016;5.332;1256;1500;0;0;0;0;0;0;0
+6.5;27;42016;5.332;1247;1500;0;0;0;0;0;0;0
+6.6;27;42016;5.332;1239;1500;0;0;0;0;0;0;0
+6.7;27;42016;5.332;1230;1500;0;0;0;0;0;0;0
+6.8;27;42016;5.332;1222;1500;0;0;0;0;0;0;0
+6.9;27;42016;5.332;1214;1500;0;0;0;0;0;0;0
+7;27;42016;5.332;1206;1500;0;0;0;0;0;0;0
+7.1;27;42016;5.332;1197;1500;0;0;0;0;0;0;0
+7.2;27;42016;5.332;1189;1500;0;0;0;0;0;0;0
+7.3;27;42016;5.332;1181;1500;0;0;0;0;0;0;0
+7.4;27;42016;5.332;1173;1500;0;0;0;0;0;0;0
+7.5;27;42016;5.332;1165;1500;0;0;0;0;0;0;0
+7.6;27;42016;5.332;1157;1500;0;0;0;0;0;0;0
+7.7;27;42016;5.332;1150;1500;0;0;0;0;0;0;0
+7.8;27;42016;5.332;1142;1500;0;0;0;0;0;0;0
+7.9;27;42016;5.332;1134;1500;0;0;0;0;0;0;0
+8;27;42016;5.332;1126;1500;0;0;0;0;0;0;0
+8.1;27;42016;5.332;1119;1500;0;0;0;0;0;0;0
+8.2;27;42016;5.332;1111;1500;0;0;0;0;0;0;0
+8.3;27;42016;5.332;1104;1500;0;0;0;0;0;0;0
+8.4;27;42016;5.332;1096;1500;0;0;0;0;0;0;0
+8.5;27;42016;5.332;1089;1500;0;0;0;0;0;0;0
+8.6;27;42016;5.332;1081;1500;0;0;0;0;0;0;0
+8.7;27;42016;5.332;1074;1500;0;0;0;0;0;0;0
+8.8;27;42016;5.332;1067;1500;0;0;0;0;0;0;0
+8.9;27;42016;5.332;1059;1500;0;0;0;0;0;0;0
+9;27;42016;5.332;1052;1500;0;0;0;0;0;0;0
+9.1;27;42016;5.332;1045;1500;0;0;0;0;0;0;0
+9.2;27;42016;5.332;1039;1500;0;0;0;0;0;0;0
+9.3;27;42016;5.332;1032;1500;0;0;0;0;0;0;0
+9.4;27;42016;5.332;1025;1500;0;0;0;0;0;0;0
+9.5;27;42016;5.332;1019;1500;0;0;0;0;0;0;0
+9.6;27;42016;5.332;1012;1500;0;0;0;0;0;0;0
+9.7;27;42016;5.332;1005;1500;0;0;0;0;0;0;0
+9.8;27;42016;5.332;999;1500;0;0;0;0;0;0;0
+9.9;27;42016;5.332;992;1500;0;0;0;0;0;0;0
+10;27;42016;5.332;986;1500;0;0;0;0;0;0;0
+10.1;27;42016;5.332;980;1500;0;0;0;0;0;0;0
+10.2;27;42016;5.332;973;1500;0;0;0;0;0;0;0
+10.3;27;42016;5.332;967;1500;0;0;0;0;0;0;0
+10.4;27;42016;5.332;961;1500;0;0;0;0;0;0;0
+10.5;27;42016;5.332;954;1500;0;0;0;0;0;0;0
+10.6;27;42016;5.332;948;1500;0;0;0;0;0;0;0
+10.7;27;42016;5.332;942;1500;0;0;0;0;0;0;0
+10.8;27;42016;5.332;936;1500;0;0;0;0;0;0;0
+10.9;27;42016;5.332;930;1500;0;0;0;0;0;0;0
+11;27;42016;5.332;924;1500;0;0;0;0;0;0;0
+11.1;27;42016;5.332;918;1500;0;0;0;0;0;0;0
+11.2;27;42016;5.332;912;1500;0;0;0;0;0;0;0
+11.3;27;42016;5.332;906;1500;0;0;0;0;0;0;0
+11.4;27;42016;5.332;900;1500;0;0;0;0;0;0;0
+11.5;27;42016;5.332;894;1500;0;0;0;0;0;0;0
+11.6;27;42016;5.332;888;1500;0;0;0;0;0;0;0
+11.7;27;42016;5.332;883;1500;0;0;0;0;0;0;0
+11.8;27;42016;5.332;877;1500;0;0;0;0;0;0;0
+11.9;27;42016;5.332;871;1500;0;0;0;0;0;0;0
+12;27;42016;5.332;866;1500;0;0;0;0;0;0;0
+12.1;27;42016;5.332;862;1500;0;0;0;0;0;0;0
+12.2;27;42016;5.332;859;1500;0;0;0;0;0;0;0
+12.3;27;42016;5.332;855;1500;0;0;0;0;0;0;0
+12.4;27;42016;5.332;852;1500;0;0;0;0;0;0;0
+12.5;27;42016;5.332;849;1500;0;0;0;0;0;0;0
+12.6;27;42016;5.332;845;1500;0;0;0;0;0;0;0
+12.7;27;42016;5.332;842;1500;0;0;0;0;0;0;0
+12.8;27;42016;5.332;839;1500;0;0;0;0;0;0;0
+12.9;27;42016;5.332;836;1500;0;0;0;0;0;0;0
+13;27;42016;5.332;832;1500;0;0;0;0;0;0;0
+13.1;27;42016;5.332;829;1500;0;0;0;0;0;0;0
+13.2;27;42016;5.332;826;1500;0;0;0;0;0;0;0
+13.3;27;42016;5.332;822;1500;0;0;0;0;0;0;0
+13.4;27;42016;5.332;819;1500;0;0;0;0;0;0;0
+13.5;27;42016;5.332;816;1500;0;0;0;0;0;0;0
+13.6;27;42016;5.332;813;1500;0;0;0;0;0;0;0
+13.7;27;42016;5.332;810;1500;0;0;0;0;0;0;0
+13.8;27;42016;5.332;806;1500;0;0;0;0;0;0;0
+13.9;27;42016;5.332;803;1500;0;0;0;0;0;0;0
+14;27;42016;5.332;800;1500;0;0;0;0;0;0;0
+14.1;27;42016;5.332;797;1500;0;0;0;0;0;0;0
+14.2;27;42016;5.332;794;1500;0;0;0;0;0;0;0
+14.3;27;42016;5.332;791;1500;0;0;0;0;0;0;0
+14.4;27;42016;5.332;788;1500;0;0;0;0;0;0;0
+14.5;27;42016;5.332;785;1500;0;0;0;0;0;0;0
+14.6;27;42016;5.332;781;1500;0;0;0;0;0;0;0
+14.7;27;42016;5.332;778;1500;0;0;0;0;0;0;0
+14.8;27;42016;5.332;775;1500;0;0;0;0;0;0;0
+14.9;27;42016;5.332;772;1500;0;0;0;0;0;0;0
+15;27;42016;5.332;769;1500;0;0;0;0;0;0;0
+15.1;27;42016;5.332;766;1500;0;0;0;0;0;0;0
+15.2;27;42016;5.332;763;1500;0;0;0;0;0;0;0
+15.3;27;42016;5.332;760;1500;0;0;0;0;0;0;0
+15.4;27;42016;5.332;757;1500;0;0;0;0;0;0;0
+15.5;27;42016;5.332;754;1500;0;0;0;0;0;0;0
+15.6;27;42016;5.332;750;1500;0;0;0;0;0;0;0
+15.7;27;42016;5.332;747;1500;0;0;0;0;0;0;0
+15.8;27;42016;5.332;744;1500;0;0;0;0;0;0;0
+15.9;27;42016;5.332;741;1500;0;0;0;0;0;0;0
+16;27;42016;5.332;738;1500;0;0;0;0;0;0;0
+16.1;27;42016;5.332;735;1500;0;0;0;0;0;0;0
+16.2;27;42016;5.332;732;1500;0;0;0;0;0;0;0
+16.3;27;42016;5.332;729;1500;0;0;0;0;0;0;0
+16.4;27;42016;5.332;726;1500;0;0;0;0;0;0;0
+16.5;27;42016;5.332;723;1500;0;0;0;0;0;0;0
+16.6;27;42016;5.332;720;1500;0;0;0;0;0;0;0
+16.7;27;42016;5.332;717;1500;0;0;0;0;0;0;0
+16.8;27;42016;5.332;714;1500;0;0;0;0;0;0;0
+16.9;27;42016;5.332;711;1500;0;0;0;0;0;0;0
+17;27;42016;5.332;708;1500;0;0;0;0;0;0;0
+17.1;27;42016;5.332;705;1500;0;0;0;0;0;0;0
+17.2;27;42016;5.332;702;1500;0;0;0;0;0;0;0
+17.3;27;42016;5.332;699;1500;0;0;0;0;0;0;0
+17.4;27;42016;5.332;697;1500;0;0;0;0;0;0;0
+17.5;27;42016;5.332;694;1500;0;0;0;0;0;0;0
+17.6;27;42016;5.332;691;1500;0;0;0;0;0;0;0
+17.7;27;42016;5.332;688;1500;0;0;0;0;0;0;0
+17.8;27;42016;5.332;685;1500;0;0;0;0;0;0;0
+17.9;27;42016;5.332;682;1500;0;0;0;0;0;0;0
+18;27;42016;5.332;679;1500;0;0;0;0;0;0;0
+18.1;27;42016;5.332;672;1500;0;0;0;0;0;0;0
+18.2;27;42016;5.332;664;1500;0;0;0;0;0;0;0
+18.3;27;42016;5.332;657;1500;0;0;0;0;0;0;0
+18.4;27;42016;5.332;650;1500;0;0;0;0;0;0;0
+18.5;27;42016;5.332;642;1500;0;0;0;0;0;0;0
+18.6;27;42016;5.332;635;1500;0;0;0;0;0;0;0
+18.7;27;42016;5.332;628;1500;0;0;0;0;0;0;0
+18.8;27;42016;5.332;621;1500;0;0;0;0;0;0;0
+18.9;27;42016;5.332;614;1500;0;0;0;0;0;0;0
+19;27;42016;5.332;607;1500;0;0;0;0;0;0;0
+19.1;27;42016;5.332;600;1500;0;0;0;0;0;0;0
+19.2;27;42016;5.332;594;1500;0;0;0;0;0;0;0
+19.3;27;42016;5.332;587;1500;0;0;0;0;0;0;0
+19.4;27;42016;5.332;581;1500;0;0;0;0;0;0;0
+19.5;27;42016;5.332;574;1500;0;0;0;0;0;0;0
+19.6;27;42016;5.332;568;1500;0;0;0;0;0;0;0
+19.7;27;42016;5.332;561;1500;0;0;0;0;0;0;0
+19.8;27;42016;5.332;555;1500;0;0;0;0;0;0;0
+19.9;27;42016;5.332;549;1500;0;0;0;0;0;0;0
+20;27;42016;5.332;543;1500;0;0;0;0;0;0;0
+20.1;27;42016;5.332;537;1500;0;0;0;0;0;0;0
+20.2;27;42016;5.332;531;1500;0;0;0;0;0;0;0
+20.3;27;42016;5.332;525;1500;0;0;0;0;0;0;0
+20.4;27;42016;5.332;519;1500;0;0;0;0;0;0;0
+20.5;27;42016;5.332;513;1500;0;0;0;0;0;0;0
+20.6;27;42016;5.332;507;1500;0;0;0;0;0;0;0
+20.7;27;42016;5.332;502;1500;0;0;0;0;0;0;0
+20.8;27;42016;5.332;496;1500;0;0;0;0;0;0;0
+20.9;27;42016;5.332;491;1500;0;0;0;0;0;0;0
+21;27;42016;5.332;485;1500;0;0;0;0;0;0;0
+21.1;27;42016;5.332;473;1500;0;0;0;0;0;0;0
+21.2;27;42016;5.332;462;1500;0;0;0;0;0;0;0
+21.3;27;42016;5.332;450;1500;0;0;0;0;0;0;0
+21.4;27;42016;5.332;439;1500;0;0;0;0;0;0;0
+21.5;27;42016;5.332;429;1500;0;0;0;0;0;0;0
+21.6;27;42016;5.332;418;1500;0;0;0;0;0;0;0
+21.7;27;42016;5.332;408;1500;0;0;0;0;0;0;0
+21.8;27;42016;5.332;398;1500;0;0;0;0;0;0;0
+21.9;27;42016;5.332;388;1500;0;0;0;0;0;0;0
+22;27;42016;5.332;379;1500;0;0;0;0;0;0;0
+22.1;27;42016;5.332;370;1500;0;0;0;0;0;0;0
+22.2;27;42016;5.332;361;1500;0;0;0;0;0;0;0
+22.3;27;42016;5.332;352;1500;0;0;0;0;0;0;0
+22.4;27;42016;5.332;343;1500;0;0;0;0;0;0;0
+22.5;27;42016;5.332;335;1500;0;0;0;0;0;0;0
+22.6;27;42016;5.332;327;1500;0;0;0;0;0;0;0
+22.7;27;42016;5.332;319;1500;0;0;0;0;0;0;0
+22.8;27;42016;5.332;311;1500;0;0;0;0;0;0;0
+22.9;27;42016;5.332;303;1500;0;0;0;0;0;0;0
+23;27;42016;5.332;296;1500;0;0;0;0;0;0;0
+23.1;27;42016;5.332;289;1500;0;0;0;0;0;0;0
+23.2;27;42016;5.332;282;1500;0;0;0;0;0;0;0
+23.3;27;42016;5.332;275;1500;0;0;0;0;0;0;0
+23.4;27;42016;5.332;268;1500;0;0;0;0;0;0;0
+23.5;27;42016;5.332;262;1500;0;0;0;0;0;0;0
+23.6;27;42016;5.332;255;1500;0;0;0;0;0;0;0
+23.7;27;42016;5.332;249;1500;0;0;0;0;0;0;0
+23.8;27;42016;5.332;243;1500;0;0;0;0;0;0;0
+23.9;27;42016;5.332;237;1500;0;0;0;0;0;0;0
+24;27;42016;5.332;231;1500;0;0;0;0;0;0;0
+24.1;27;42016;5.332;225;1500;0;0;0;0;0;0;0
+24.2;27;42016;5.332;219;1500;0;0;0;0;0;0;0
+24.3;27;42016;5.332;212;1500;0;0;0;0;0;0;0
+24.4;27;42016;5.332;206;1500;0;0;0;0;0;0;0
+24.5;27;42016;5.332;201;1500;0;0;0;0;0;0;0
+24.6;27;42016;5.332;195;1500;0;0;0;0;0;0;0
+24.7;27;42016;5.332;190;1500;0;0;0;0;0;0;0
+24.8;27;42016;5.332;184;1500;0;0;0;0;0;0;0
+24.9;27;42016;5.332;179;1500;0;0;0;0;0;0;0
+25;27;42016;5.332;174;1500;0;0;0;0;0;0;0
+25.1;27;42016;5.332;169;1500;0;0;0;0;0;0;0
+25.2;27;42016;5.332;165;1500;0;0;0;0;0;0;0
+25.3;27;42016;5.332;160;1500;0;0;0;0;0;0;0
+25.4;27;42016;5.332;156;1500;0;0;0;0;0;0;0
+25.5;27;42016;5.332;151;1500;0;0;0;0;0;0;0
+25.6;27;42016;5.332;147;1500;0;0;0;0;0;0;0
+25.7;27;42016;5.332;143;1500;0;0;0;0;0;0;0
+25.8;27;42016;5.332;139;1500;0;0;0;0;0;0;0
+25.9;27;42016;5.332;135;1500;0;0;0;0;0;0;0
+26;27;42016;5.332;131;1500;0;0;0;0;0;0;0
+26.1;27;42016;5.332;128;1500;0;0;0;0;0;0;0
+26.2;27;42016;5.332;124;1500;0;0;0;0;0;0;0
+26.3;27;42016;5.332;121;1500;0;0;0;0;0;0;0
+26.4;27;42016;5.332;117;1500;0;0;0;0;0;0;0
+26.5;27;42016;5.332;114;1500;0;0;0;0;0;0;0
+26.6;27;42016;5.332;111;1500;0;0;0;0;0;0;0
+26.7;27;42016;5.332;108;1500;0;0;0;0;0;0;0
+26.8;27;42016;5.332;105;1500;0;0;0;0;0;0;0
+26.9;27;42016;5.332;102;1500;0;0;0;0;0;0;0
+27;27;42016;5.332;99;1500;0;0;0;0;0;0;0
+27.1;27;42016;5.332;96;1500;0;0;0;0;0;0;0
+27.2;27;42016;5.332;93;1500;0;0;0;0;0;0;0
+27.3;27;42016;5.332;90;1500;0;0;0;0;0;0;0
+27.4;27;42016;5.332;87;1500;0;0;0;0;0;0;0
+27.5;27;42016;5.332;84;1500;0;0;0;0;0;0;0
+27.6;27;42016;5.332;82;1500;0;0;0;0;0;0;0
+27.7;27;42016;5.332;79;1500;0;0;0;0;0;0;0
+27.8;27;42016;5.332;77;1500;0;0;0;0;0;0;0
+27.9;27;42016;5.332;74;1500;0;0;0;0;0;0;0
+28;27;42016;5.332;72;1500;0;0;0;0;0;0;0
+28.1;27;42016;5.332;70;1500;0;0;0;0;0;0;0
+28.2;27;42016;5.332;67;1500;0;0;0;0;0;0;0
+28.3;27;42016;5.332;65;1500;0;0;0;0;0;0;0
+28.4;27;42016;5.332;63;1500;0;0;0;0;0;0;0
+28.5;27;42016;5.332;61;1500;0;0;0;0;0;0;0
+28.6;27;42016;5.332;59;1500;0;0;0;0;0;0;0
+28.7;27;42016;5.332;58;1500;0;0;0;0;0;0;0
+28.8;27;42016;5.332;56;1500;0;0;0;0;0;0;0
+28.9;27;42016;5.332;54;1500;0;0;0;0;0;0;0
+29;27;42016;5.332;52;1500;0;0;0;0;0;0;0
+29.1;27;42016;5.332;51;1500;0;0;0;0;0;0;0
+29.2;27;42016;5.332;49;1500;0;0;0;0;0;0;0
+29.3;27;42016;5.332;48;1500;0;0;0;0;0;0;0
+29.4;27;42016;5.332;46;1500;0;0;0;0;0;0;0
+29.5;27;42016;5.332;45;1500;0;0;0;0;0;0;0
+29.6;27;42016;5.332;43;1500;0;0;0;0;0;0;0
+29.7;27;42016;5.332;42;1500;0;0;0;0;0;0;0
+29.8;27;42016;5.332;41;1500;0;0;0;0;0;0;0
+29.9;27;42016;5.332;39;1500;0;0;0;0;0;0;0
+30;27;42016;5.332;38;1500;0;0;0;0;0;0;0
+30.1;27;42016;5.332;37;1500;0;0;0;0;0;0;0
+30.2;27;42016;5.332;36;1500;0;0;0;0;0;0;0
+30.3;27;42016;5.332;35;1500;0;0;0;0;0;0;0
+30.4;27;42016;5.332;34;1500;0;0;0;0;0;0;0
+30.5;27;42016;5.332;33;1500;0;0;0;0;0;0;0
+30.6;27;42016;5.332;32;1500;0;0;0;0;0;0;0
+30.7;27;42016;5.332;31;1500;0;0;0;0;0;0;0
+30.8;27;42016;5.332;30;1500;0;0;0;0;0;0;0
+30.9;27;42016;5.332;29;1500;0;0;0;0;0;0;0
+31;27;42016;5.332;28;1500;0;0;0;0;0;0;0
+31.1;27;42016;5.332;27;1500;0;0;0;0;0;0;0
+31.2;27;42016;5.332;26;1500;0;0;0;0;0;0;0
+31.3;27;42016;5.332;25;1500;0;0;0;0;0;0;0
+31.4;27;42016;5.332;25;1500;0;0;0;0;0;0;0
+31.5;27;42016;5.332;24;1500;0;0;0;0;0;0;0
+31.6;27;42016;5.332;23;1500;0;0;0;0;0;0;0
+31.7;27;42016;5.332;22;1500;0;0;0;0;0;0;0
+31.8;27;42016;5.332;22;1500;0;0;0;0;0;0;0
+31.9;27;42016;5.332;21;1500;0;0;0;0;0;0;0
+32;27;42016;5.332;20;1500;0;0;0;0;0;0;0
+32.1;27;42016;5.332;20;1500;0;0;0;0;0;0;0
+32.2;27;42016;5.332;19;1500;0;0;0;0;0;0;0
+32.3;27;42016;5.332;19;1500;0;0;0;0;0;0;0
+32.4;27;42016;5.332;18;1500;0;0;0;0;0;0;0
+32.5;27;42016;5.332;18;1500;0;0;0;0;0;0;0
+32.6;27;42016;5.332;17;1500;0;0;0;0;0;0;0
+32.7;27;42016;5.332;16;1500;0;0;0;0;0;0;0
+32.8;27;42016;5.332;16;1500;0;0;0;0;0;0;0
+32.9;27;42016;5.332;15;1500;0;0;0;0;0;0;0
+33;27;42016;5.332;15;1500;0;0;0;0;0;0;0
+33.1;27;42016;5.332;14;1500;0;0;0;0;0;0;0
+33.2;27;42016;5.332;14;1500;0;0;0;0;0;0;0
+33.3;27;42016;5.332;13;1500;0;0;0;0;0;0;0
+33.4;27;42016;5.332;13;1500;0;0;0;0;0;0;0
+33.5;27;42016;5.332;12;1500;0;0;0;0;0;0;0
+33.6;27;42016;5.332;12;1500;0;0;0;0;0;0;0
+33.7;27;42016;5.332;11;1500;0;0;0;0;0;0;0
+33.8;27;42016;5.332;11;1500;0;0;0;0;0;0;0
+33.9;27;42016;5.332;11;1500;0;0;0;0;0;0;0
+34;27;42016;5.332;10;1500;0;0;0;0;0;0;0
+34.1;27;42016;5.332;10;1500;0;0;0;0;0;0;0
+34.2;27;42016;5.332;9;1500;0;0;0;0;0;0;0
+34.3;27;42016;5.332;9;1500;0;0;0;0;0;0;0
+34.4;27;42016;5.332;9;1500;0;0;0;0;0;0;0
+34.5;27;42016;5.332;8;1500;0;0;0;0;0;0;0
+34.6;27;42016;5.332;8;1500;0;0;0;0;0;0;0
+34.7;27;42016;5.332;8;1500;0;0;0;0;0;0;0
+34.8;27;42016;5.332;7;1500;0;0;0;0;0;0;0
+34.9;27;42016;5.332;7;1500;0;0;0;0;0;0;0
+35;27;42016;5.332;7;1500;0;0;0;0;0;0;0
+35.1;27;42016;5.332;7;1500;0;0;0;0;0;0;0
+35.2;27;42016;5.332;6;1500;0;0;0;0;0;0;0
+35.3;27;42016;5.332;6;1500;0;0;0;0;0;0;0
+35.4;27;42016;5.332;6;1500;0;0;0;0;0;0;0
+35.5;27;42016;5.332;6;1500;0;0;0;0;0;0;0
+35.6;27;42016;5.332;5;1500;0;0;0;0;0;0;0
+35.7;27;42016;5.332;5;1500;0;0;0;0;0;0;0
+35.8;27;42016;5.332;5;1500;0;0;0;0;0;0;0
+35.9;27;42016;5.332;5;1500;0;0;0;0;0;0;0
+36;27;42016;5.332;5;1500;0;0;0;0;0;0;0
+36.1;27;42016;5.332;0;1500;0;0;0;0;0;0;0
+36.2;27;42016;5.332;0;1500;0;0;0;0;0;0;0
+36.3;27;42016;5.332;0;1500;0;0;0;0;0;0;0
+36.4;27;42016;5.332;0;1500;0;0;0;0;0;0;0
+36.5;27;42016;5.332;0;1500;0;0;0;0;0;0;0
+36.6;27;42016;5.332;0;1500;0;0;0;0;0;0;0
+36.7;27;42016;5.332;0;1500;0;0;0;0;0;0;0
+36.8;27;42016;5.332;0;1500;0;0;0;0;0;0;0
+36.9;27;42016;5.332;0;1500;0;0;0;0;0;0;0
+37;27;42016;5.332;0;1500;0;0;0;0;0;0;0
diff --git a/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs28_cdlc_mimo2x2_dl.csv b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs28_cdlc_mimo2x2_dl.csv
new file mode 100644
index 0000000000..1a4bd88bdc
--- /dev/null
+++ b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs28_cdlc_mimo2x2_dl.csv
@@ -0,0 +1,372 @@
+SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
+0;28;44040;5.547;1500;1500;0;0;0;0;0;0;0
+0.1;28;44040;5.547;1500;1500;0;0;0;0;0;0;0
+0.2;28;44040;5.547;1499;1500;0;0;0;0;0;0;0
+0.3;28;44040;5.547;1499;1500;0;0;0;0;0;0;0
+0.4;28;44040;5.547;1498;1500;0;0;0;0;0;0;0
+0.5;28;44040;5.547;1498;1500;0;0;0;0;0;0;0
+0.6;28;44040;5.547;1497;1500;0;0;0;0;0;0;0
+0.7;28;44040;5.547;1497;1500;0;0;0;0;0;0;0
+0.8;28;44040;5.547;1496;1500;0;0;0;0;0;0;0
+0.9;28;44040;5.547;1496;1500;0;0;0;0;0;0;0
+1;28;44040;5.547;1495;1500;0;0;0;0;0;0;0
+1.1;28;44040;5.547;1495;1500;0;0;0;0;0;0;0
+1.2;28;44040;5.547;1494;1500;0;0;0;0;0;0;0
+1.3;28;44040;5.547;1494;1500;0;0;0;0;0;0;0
+1.4;28;44040;5.547;1493;1500;0;0;0;0;0;0;0
+1.5;28;44040;5.547;1493;1500;0;0;0;0;0;0;0
+1.6;28;44040;5.547;1493;1500;0;0;0;0;0;0;0
+1.7;28;44040;5.547;1492;1500;0;0;0;0;0;0;0
+1.8;28;44040;5.547;1492;1500;0;0;0;0;0;0;0
+1.9;28;44040;5.547;1491;1500;0;0;0;0;0;0;0
+2;28;44040;5.547;1491;1500;0;0;0;0;0;0;0
+2.1;28;44040;5.547;1490;1500;0;0;0;0;0;0;0
+2.2;28;44040;5.547;1490;1500;0;0;0;0;0;0;0
+2.3;28;44040;5.547;1489;1500;0;0;0;0;0;0;0
+2.4;28;44040;5.547;1489;1500;0;0;0;0;0;0;0
+2.5;28;44040;5.547;1488;1500;0;0;0;0;0;0;0
+2.6;28;44040;5.547;1488;1500;0;0;0;0;0;0;0
+2.7;28;44040;5.547;1487;1500;0;0;0;0;0;0;0
+2.8;28;44040;5.547;1487;1500;0;0;0;0;0;0;0
+2.9;28;44040;5.547;1486;1500;0;0;0;0;0;0;0
+3;28;44040;5.547;1486;1500;0;0;0;0;0;0;0
+3.1;28;44040;5.547;1480;1500;0;0;0;0;0;0;0
+3.2;28;44040;5.547;1474;1500;0;0;0;0;0;0;0
+3.3;28;44040;5.547;1468;1500;0;0;0;0;0;0;0
+3.4;28;44040;5.547;1462;1500;0;0;0;0;0;0;0
+3.5;28;44040;5.547;1456;1500;0;0;0;0;0;0;0
+3.6;28;44040;5.547;1450;1500;0;0;0;0;0;0;0
+3.7;28;44040;5.547;1444;1500;0;0;0;0;0;0;0
+3.8;28;44040;5.547;1438;1500;0;0;0;0;0;0;0
+3.9;28;44040;5.547;1432;1500;0;0;0;0;0;0;0
+4;28;44040;5.547;1426;1500;0;0;0;0;0;0;0
+4.1;28;44040;5.547;1420;1500;0;0;0;0;0;0;0
+4.2;28;44040;5.547;1415;1500;0;0;0;0;0;0;0
+4.3;28;44040;5.547;1409;1500;0;0;0;0;0;0;0
+4.4;28;44040;5.547;1403;1500;0;0;0;0;0;0;0
+4.5;28;44040;5.547;1397;1500;0;0;0;0;0;0;0
+4.6;28;44040;5.547;1392;1500;0;0;0;0;0;0;0
+4.7;28;44040;5.547;1386;1500;0;0;0;0;0;0;0
+4.8;28;44040;5.547;1380;1500;0;0;0;0;0;0;0
+4.9;28;44040;5.547;1375;1500;0;0;0;0;0;0;0
+5;28;44040;5.547;1369;1500;0;0;0;0;0;0;0
+5.1;28;44040;5.547;1363;1500;0;0;0;0;0;0;0
+5.2;28;44040;5.547;1358;1500;0;0;0;0;0;0;0
+5.3;28;44040;5.547;1352;1500;0;0;0;0;0;0;0
+5.4;28;44040;5.547;1347;1500;0;0;0;0;0;0;0
+5.5;28;44040;5.547;1341;1500;0;0;0;0;0;0;0
+5.6;28;44040;5.547;1336;1500;0;0;0;0;0;0;0
+5.7;28;44040;5.547;1330;1500;0;0;0;0;0;0;0
+5.8;28;44040;5.547;1325;1500;0;0;0;0;0;0;0
+5.9;28;44040;5.547;1319;1500;0;0;0;0;0;0;0
+6;28;44040;5.547;1314;1500;0;0;0;0;0;0;0
+6.1;28;44040;5.547;1306;1500;0;0;0;0;0;0;0
+6.2;28;44040;5.547;1297;1500;0;0;0;0;0;0;0
+6.3;28;44040;5.547;1289;1500;0;0;0;0;0;0;0
+6.4;28;44040;5.547;1280;1500;0;0;0;0;0;0;0
+6.5;28;44040;5.547;1272;1500;0;0;0;0;0;0;0
+6.6;28;44040;5.547;1264;1500;0;0;0;0;0;0;0
+6.7;28;44040;5.547;1255;1500;0;0;0;0;0;0;0
+6.8;28;44040;5.547;1247;1500;0;0;0;0;0;0;0
+6.9;28;44040;5.547;1239;1500;0;0;0;0;0;0;0
+7;28;44040;5.547;1231;1500;0;0;0;0;0;0;0
+7.1;28;44040;5.547;1223;1500;0;0;0;0;0;0;0
+7.2;28;44040;5.547;1215;1500;0;0;0;0;0;0;0
+7.3;28;44040;5.547;1207;1500;0;0;0;0;0;0;0
+7.4;28;44040;5.547;1199;1500;0;0;0;0;0;0;0
+7.5;28;44040;5.547;1191;1500;0;0;0;0;0;0;0
+7.6;28;44040;5.547;1184;1500;0;0;0;0;0;0;0
+7.7;28;44040;5.547;1176;1500;0;0;0;0;0;0;0
+7.8;28;44040;5.547;1168;1500;0;0;0;0;0;0;0
+7.9;28;44040;5.547;1161;1500;0;0;0;0;0;0;0
+8;28;44040;5.547;1153;1500;0;0;0;0;0;0;0
+8.1;28;44040;5.547;1146;1500;0;0;0;0;0;0;0
+8.2;28;44040;5.547;1138;1500;0;0;0;0;0;0;0
+8.3;28;44040;5.547;1131;1500;0;0;0;0;0;0;0
+8.4;28;44040;5.547;1123;1500;0;0;0;0;0;0;0
+8.5;28;44040;5.547;1116;1500;0;0;0;0;0;0;0
+8.6;28;44040;5.547;1109;1500;0;0;0;0;0;0;0
+8.7;28;44040;5.547;1102;1500;0;0;0;0;0;0;0
+8.8;28;44040;5.547;1095;1500;0;0;0;0;0;0;0
+8.9;28;44040;5.547;1087;1500;0;0;0;0;0;0;0
+9;28;44040;5.547;1080;1500;0;0;0;0;0;0;0
+9.1;28;44040;5.547;1073;1500;0;0;0;0;0;0;0
+9.2;28;44040;5.547;1067;1500;0;0;0;0;0;0;0
+9.3;28;44040;5.547;1060;1500;0;0;0;0;0;0;0
+9.4;28;44040;5.547;1053;1500;0;0;0;0;0;0;0
+9.5;28;44040;5.547;1047;1500;0;0;0;0;0;0;0
+9.6;28;44040;5.547;1040;1500;0;0;0;0;0;0;0
+9.7;28;44040;5.547;1034;1500;0;0;0;0;0;0;0
+9.8;28;44040;5.547;1027;1500;0;0;0;0;0;0;0
+9.9;28;44040;5.547;1021;1500;0;0;0;0;0;0;0
+10;28;44040;5.547;1014;1500;0;0;0;0;0;0;0
+10.1;28;44040;5.547;1008;1500;0;0;0;0;0;0;0
+10.2;28;44040;5.547;1001;1500;0;0;0;0;0;0;0
+10.3;28;44040;5.547;995;1500;0;0;0;0;0;0;0
+10.4;28;44040;5.547;989;1500;0;0;0;0;0;0;0
+10.5;28;44040;5.547;983;1500;0;0;0;0;0;0;0
+10.6;28;44040;5.547;976;1500;0;0;0;0;0;0;0
+10.7;28;44040;5.547;970;1500;0;0;0;0;0;0;0
+10.8;28;44040;5.547;964;1500;0;0;0;0;0;0;0
+10.9;28;44040;5.547;958;1500;0;0;0;0;0;0;0
+11;28;44040;5.547;952;1500;0;0;0;0;0;0;0
+11.1;28;44040;5.547;946;1500;0;0;0;0;0;0;0
+11.2;28;44040;5.547;940;1500;0;0;0;0;0;0;0
+11.3;28;44040;5.547;934;1500;0;0;0;0;0;0;0
+11.4;28;44040;5.547;928;1500;0;0;0;0;0;0;0
+11.5;28;44040;5.547;922;1500;0;0;0;0;0;0;0
+11.6;28;44040;5.547;917;1500;0;0;0;0;0;0;0
+11.7;28;44040;5.547;911;1500;0;0;0;0;0;0;0
+11.8;28;44040;5.547;905;1500;0;0;0;0;0;0;0
+11.9;28;44040;5.547;899;1500;0;0;0;0;0;0;0
+12;28;44040;5.547;894;1500;0;0;0;0;0;0;0
+12.1;28;44040;5.547;890;1500;0;0;0;0;0;0;0
+12.2;28;44040;5.547;885;1500;0;0;0;0;0;0;0
+12.3;28;44040;5.547;881;1500;0;0;0;0;0;0;0
+12.4;28;44040;5.547;877;1500;0;0;0;0;0;0;0
+12.5;28;44040;5.547;873;1500;0;0;0;0;0;0;0
+12.6;28;44040;5.547;869;1500;0;0;0;0;0;0;0
+12.7;28;44040;5.547;865;1500;0;0;0;0;0;0;0
+12.8;28;44040;5.547;861;1500;0;0;0;0;0;0;0
+12.9;28;44040;5.547;858;1500;0;0;0;0;0;0;0
+13;28;44040;5.547;854;1500;0;0;0;0;0;0;0
+13.1;28;44040;5.547;850;1500;0;0;0;0;0;0;0
+13.2;28;44040;5.547;846;1500;0;0;0;0;0;0;0
+13.3;28;44040;5.547;842;1500;0;0;0;0;0;0;0
+13.4;28;44040;5.547;838;1500;0;0;0;0;0;0;0
+13.5;28;44040;5.547;834;1500;0;0;0;0;0;0;0
+13.6;28;44040;5.547;831;1500;0;0;0;0;0;0;0
+13.7;28;44040;5.547;827;1500;0;0;0;0;0;0;0
+13.8;28;44040;5.547;823;1500;0;0;0;0;0;0;0
+13.9;28;44040;5.547;819;1500;0;0;0;0;0;0;0
+14;28;44040;5.547;815;1500;0;0;0;0;0;0;0
+14.1;28;44040;5.547;812;1500;0;0;0;0;0;0;0
+14.2;28;44040;5.547;808;1500;0;0;0;0;0;0;0
+14.3;28;44040;5.547;804;1500;0;0;0;0;0;0;0
+14.4;28;44040;5.547;801;1500;0;0;0;0;0;0;0
+14.5;28;44040;5.547;797;1500;0;0;0;0;0;0;0
+14.6;28;44040;5.547;793;1500;0;0;0;0;0;0;0
+14.7;28;44040;5.547;790;1500;0;0;0;0;0;0;0
+14.8;28;44040;5.547;786;1500;0;0;0;0;0;0;0
+14.9;28;44040;5.547;783;1500;0;0;0;0;0;0;0
+15;28;44040;5.547;779;1500;0;0;0;0;0;0;0
+15.1;28;44040;5.547;777;1500;0;0;0;0;0;0;0
+15.2;28;44040;5.547;775;1500;0;0;0;0;0;0;0
+15.3;28;44040;5.547;773;1500;0;0;0;0;0;0;0
+15.4;28;44040;5.547;772;1500;0;0;0;0;0;0;0
+15.5;28;44040;5.547;770;1500;0;0;0;0;0;0;0
+15.6;28;44040;5.547;768;1500;0;0;0;0;0;0;0
+15.7;28;44040;5.547;766;1500;0;0;0;0;0;0;0
+15.8;28;44040;5.547;764;1500;0;0;0;0;0;0;0
+15.9;28;44040;5.547;763;1500;0;0;0;0;0;0;0
+16;28;44040;5.547;761;1500;0;0;0;0;0;0;0
+16.1;28;44040;5.547;759;1500;0;0;0;0;0;0;0
+16.2;28;44040;5.547;757;1500;0;0;0;0;0;0;0
+16.3;28;44040;5.547;755;1500;0;0;0;0;0;0;0
+16.4;28;44040;5.547;754;1500;0;0;0;0;0;0;0
+16.5;28;44040;5.547;752;1500;0;0;0;0;0;0;0
+16.6;28;44040;5.547;750;1500;0;0;0;0;0;0;0
+16.7;28;44040;5.547;748;1500;0;0;0;0;0;0;0
+16.8;28;44040;5.547;747;1500;0;0;0;0;0;0;0
+16.9;28;44040;5.547;745;1500;0;0;0;0;0;0;0
+17;28;44040;5.547;743;1500;0;0;0;0;0;0;0
+17.1;28;44040;5.547;741;1500;0;0;0;0;0;0;0
+17.2;28;44040;5.547;740;1500;0;0;0;0;0;0;0
+17.3;28;44040;5.547;738;1500;0;0;0;0;0;0;0
+17.4;28;44040;5.547;736;1500;0;0;0;0;0;0;0
+17.5;28;44040;5.547;734;1500;0;0;0;0;0;0;0
+17.6;28;44040;5.547;733;1500;0;0;0;0;0;0;0
+17.7;28;44040;5.547;731;1500;0;0;0;0;0;0;0
+17.8;28;44040;5.547;729;1500;0;0;0;0;0;0;0
+17.9;28;44040;5.547;728;1500;0;0;0;0;0;0;0
+18;28;44040;5.547;726;1500;0;0;0;0;0;0;0
+18.1;28;44040;5.547;721;1500;0;0;0;0;0;0;0
+18.2;28;44040;5.547;716;1500;0;0;0;0;0;0;0
+18.3;28;44040;5.547;711;1500;0;0;0;0;0;0;0
+18.4;28;44040;5.547;707;1500;0;0;0;0;0;0;0
+18.5;28;44040;5.547;702;1500;0;0;0;0;0;0;0
+18.6;28;44040;5.547;697;1500;0;0;0;0;0;0;0
+18.7;28;44040;5.547;693;1500;0;0;0;0;0;0;0
+18.8;28;44040;5.547;688;1500;0;0;0;0;0;0;0
+18.9;28;44040;5.547;684;1500;0;0;0;0;0;0;0
+19;28;44040;5.547;679;1500;0;0;0;0;0;0;0
+19.1;28;44040;5.547;674;1500;0;0;0;0;0;0;0
+19.2;28;44040;5.547;670;1500;0;0;0;0;0;0;0
+19.3;28;44040;5.547;666;1500;0;0;0;0;0;0;0
+19.4;28;44040;5.547;661;1500;0;0;0;0;0;0;0
+19.5;28;44040;5.547;657;1500;0;0;0;0;0;0;0
+19.6;28;44040;5.547;652;1500;0;0;0;0;0;0;0
+19.7;28;44040;5.547;648;1500;0;0;0;0;0;0;0
+19.8;28;44040;5.547;644;1500;0;0;0;0;0;0;0
+19.9;28;44040;5.547;639;1500;0;0;0;0;0;0;0
+20;28;44040;5.547;635;1500;0;0;0;0;0;0;0
+20.1;28;44040;5.547;631;1500;0;0;0;0;0;0;0
+20.2;28;44040;5.547;627;1500;0;0;0;0;0;0;0
+20.3;28;44040;5.547;623;1500;0;0;0;0;0;0;0
+20.4;28;44040;5.547;618;1500;0;0;0;0;0;0;0
+20.5;28;44040;5.547;614;1500;0;0;0;0;0;0;0
+20.6;28;44040;5.547;610;1500;0;0;0;0;0;0;0
+20.7;28;44040;5.547;606;1500;0;0;0;0;0;0;0
+20.8;28;44040;5.547;602;1500;0;0;0;0;0;0;0
+20.9;28;44040;5.547;598;1500;0;0;0;0;0;0;0
+21;28;44040;5.547;594;1500;0;0;0;0;0;0;0
+21.1;28;44040;5.547;584;1500;0;0;0;0;0;0;0
+21.2;28;44040;5.547;574;1500;0;0;0;0;0;0;0
+21.3;28;44040;5.547;565;1500;0;0;0;0;0;0;0
+21.4;28;44040;5.547;555;1500;0;0;0;0;0;0;0
+21.5;28;44040;5.547;546;1500;0;0;0;0;0;0;0
+21.6;28;44040;5.547;537;1500;0;0;0;0;0;0;0
+21.7;28;44040;5.547;527;1500;0;0;0;0;0;0;0
+21.8;28;44040;5.547;519;1500;0;0;0;0;0;0;0
+21.9;28;44040;5.547;510;1500;0;0;0;0;0;0;0
+22;28;44040;5.547;501;1500;0;0;0;0;0;0;0
+22.1;28;44040;5.547;493;1500;0;0;0;0;0;0;0
+22.2;28;44040;5.547;485;1500;0;0;0;0;0;0;0
+22.3;28;44040;5.547;476;1500;0;0;0;0;0;0;0
+22.4;28;44040;5.547;468;1500;0;0;0;0;0;0;0
+22.5;28;44040;5.547;460;1500;0;0;0;0;0;0;0
+22.6;28;44040;5.547;453;1500;0;0;0;0;0;0;0
+22.7;28;44040;5.547;445;1500;0;0;0;0;0;0;0
+22.8;28;44040;5.547;438;1500;0;0;0;0;0;0;0
+22.9;28;44040;5.547;430;1500;0;0;0;0;0;0;0
+23;28;44040;5.547;423;1500;0;0;0;0;0;0;0
+23.1;28;44040;5.547;416;1500;0;0;0;0;0;0;0
+23.2;28;44040;5.547;409;1500;0;0;0;0;0;0;0
+23.3;28;44040;5.547;402;1500;0;0;0;0;0;0;0
+23.4;28;44040;5.547;395;1500;0;0;0;0;0;0;0
+23.5;28;44040;5.547;388;1500;0;0;0;0;0;0;0
+23.6;28;44040;5.547;382;1500;0;0;0;0;0;0;0
+23.7;28;44040;5.547;375;1500;0;0;0;0;0;0;0
+23.8;28;44040;5.547;369;1500;0;0;0;0;0;0;0
+23.9;28;44040;5.547;363;1500;0;0;0;0;0;0;0
+24;28;44040;5.547;357;1500;0;0;0;0;0;0;0
+24.1;28;44040;5.547;348;1500;0;0;0;0;0;0;0
+24.2;28;44040;5.547;340;1500;0;0;0;0;0;0;0
+24.3;28;44040;5.547;332;1500;0;0;0;0;0;0;0
+24.4;28;44040;5.547;324;1500;0;0;0;0;0;0;0
+24.5;28;44040;5.547;317;1500;0;0;0;0;0;0;0
+24.6;28;44040;5.547;309;1500;0;0;0;0;0;0;0
+24.7;28;44040;5.547;302;1500;0;0;0;0;0;0;0
+24.8;28;44040;5.547;295;1500;0;0;0;0;0;0;0
+24.9;28;44040;5.547;288;1500;0;0;0;0;0;0;0
+25;28;44040;5.547;281;1500;0;0;0;0;0;0;0
+25.1;28;44040;5.547;274;1500;0;0;0;0;0;0;0
+25.2;28;44040;5.547;268;1500;0;0;0;0;0;0;0
+25.3;28;44040;5.547;261;1500;0;0;0;0;0;0;0
+25.4;28;44040;5.547;255;1500;0;0;0;0;0;0;0
+25.5;28;44040;5.547;249;1500;0;0;0;0;0;0;0
+25.6;28;44040;5.547;243;1500;0;0;0;0;0;0;0
+25.7;28;44040;5.547;238;1500;0;0;0;0;0;0;0
+25.8;28;44040;5.547;232;1500;0;0;0;0;0;0;0
+25.9;28;44040;5.547;227;1500;0;0;0;0;0;0;0
+26;28;44040;5.547;221;1500;0;0;0;0;0;0;0
+26.1;28;44040;5.547;216;1500;0;0;0;0;0;0;0
+26.2;28;44040;5.547;211;1500;0;0;0;0;0;0;0
+26.3;28;44040;5.547;206;1500;0;0;0;0;0;0;0
+26.4;28;44040;5.547;201;1500;0;0;0;0;0;0;0
+26.5;28;44040;5.547;196;1500;0;0;0;0;0;0;0
+26.6;28;44040;5.547;192;1500;0;0;0;0;0;0;0
+26.7;28;44040;5.547;187;1500;0;0;0;0;0;0;0
+26.8;28;44040;5.547;183;1500;0;0;0;0;0;0;0
+26.9;28;44040;5.547;178;1500;0;0;0;0;0;0;0
+27;28;44040;5.547;174;1500;0;0;0;0;0;0;0
+27.1;28;44040;5.547;171;1500;0;0;0;0;0;0;0
+27.2;28;44040;5.547;168;1500;0;0;0;0;0;0;0
+27.3;28;44040;5.547;165;1500;0;0;0;0;0;0;0
+27.4;28;44040;5.547;162;1500;0;0;0;0;0;0;0
+27.5;28;44040;5.547;159;1500;0;0;0;0;0;0;0
+27.6;28;44040;5.547;156;1500;0;0;0;0;0;0;0
+27.7;28;44040;5.547;153;1500;0;0;0;0;0;0;0
+27.8;28;44040;5.547;150;1500;0;0;0;0;0;0;0
+27.9;28;44040;5.547;147;1500;0;0;0;0;0;0;0
+28;28;44040;5.547;145;1500;0;0;0;0;0;0;0
+28.1;28;44040;5.547;142;1500;0;0;0;0;0;0;0
+28.2;28;44040;5.547;140;1500;0;0;0;0;0;0;0
+28.3;28;44040;5.547;137;1500;0;0;0;0;0;0;0
+28.4;28;44040;5.547;134;1500;0;0;0;0;0;0;0
+28.5;28;44040;5.547;132;1500;0;0;0;0;0;0;0
+28.6;28;44040;5.547;130;1500;0;0;0;0;0;0;0
+28.7;28;44040;5.547;127;1500;0;0;0;0;0;0;0
+28.8;28;44040;5.547;125;1500;0;0;0;0;0;0;0
+28.9;28;44040;5.547;123;1500;0;0;0;0;0;0;0
+29;28;44040;5.547;120;1500;0;0;0;0;0;0;0
+29.1;28;44040;5.547;118;1500;0;0;0;0;0;0;0
+29.2;28;44040;5.547;116;1500;0;0;0;0;0;0;0
+29.3;28;44040;5.547;114;1500;0;0;0;0;0;0;0
+29.4;28;44040;5.547;112;1500;0;0;0;0;0;0;0
+29.5;28;44040;5.547;110;1500;0;0;0;0;0;0;0
+29.6;28;44040;5.547;108;1500;0;0;0;0;0;0;0
+29.7;28;44040;5.547;106;1500;0;0;0;0;0;0;0
+29.8;28;44040;5.547;104;1500;0;0;0;0;0;0;0
+29.9;28;44040;5.547;102;1500;0;0;0;0;0;0;0
+30;28;44040;5.547;100;1500;0;0;0;0;0;0;0
+30.1;28;44040;5.547;99;1500;0;0;0;0;0;0;0
+30.2;28;44040;5.547;98;1500;0;0;0;0;0;0;0
+30.3;28;44040;5.547;97;1500;0;0;0;0;0;0;0
+30.4;28;44040;5.547;97;1500;0;0;0;0;0;0;0
+30.5;28;44040;5.547;96;1500;0;0;0;0;0;0;0
+30.6;28;44040;5.547;95;1500;0;0;0;0;0;0;0
+30.7;28;44040;5.547;94;1500;0;0;0;0;0;0;0
+30.8;28;44040;5.547;93;1500;0;0;0;0;0;0;0
+30.9;28;44040;5.547;93;1500;0;0;0;0;0;0;0
+31;28;44040;5.547;92;1500;0;0;0;0;0;0;0
+31.1;28;44040;5.547;91;1500;0;0;0;0;0;0;0
+31.2;28;44040;5.547;90;1500;0;0;0;0;0;0;0
+31.3;28;44040;5.547;89;1500;0;0;0;0;0;0;0
+31.4;28;44040;5.547;89;1500;0;0;0;0;0;0;0
+31.5;28;44040;5.547;88;1500;0;0;0;0;0;0;0
+31.6;28;44040;5.547;87;1500;0;0;0;0;0;0;0
+31.7;28;44040;5.547;86;1500;0;0;0;0;0;0;0
+31.8;28;44040;5.547;86;1500;0;0;0;0;0;0;0
+31.9;28;44040;5.547;85;1500;0;0;0;0;0;0;0
+32;28;44040;5.547;84;1500;0;0;0;0;0;0;0
+32.1;28;44040;5.547;83;1500;0;0;0;0;0;0;0
+32.2;28;44040;5.547;83;1500;0;0;0;0;0;0;0
+32.3;28;44040;5.547;82;1500;0;0;0;0;0;0;0
+32.4;28;44040;5.547;81;1500;0;0;0;0;0;0;0
+32.5;28;44040;5.547;81;1500;0;0;0;0;0;0;0
+32.6;28;44040;5.547;80;1500;0;0;0;0;0;0;0
+32.7;28;44040;5.547;79;1500;0;0;0;0;0;0;0
+32.8;28;44040;5.547;79;1500;0;0;0;0;0;0;0
+32.9;28;44040;5.547;78;1500;0;0;0;0;0;0;0
+33;28;44040;5.547;77;1500;0;0;0;0;0;0;0
+33.1;28;44040;5.547;73;1500;0;0;0;0;0;0;0
+33.2;28;44040;5.547;69;1500;0;0;0;0;0;0;0
+33.3;28;44040;5.547;66;1500;0;0;0;0;0;0;0
+33.4;28;44040;5.547;62;1500;0;0;0;0;0;0;0
+33.5;28;44040;5.547;59;1500;0;0;0;0;0;0;0
+33.6;28;44040;5.547;56;1500;0;0;0;0;0;0;0
+33.7;28;44040;5.547;53;1500;0;0;0;0;0;0;0
+33.8;28;44040;5.547;50;1500;0;0;0;0;0;0;0
+33.9;28;44040;5.547;47;1500;0;0;0;0;0;0;0
+34;28;44040;5.547;45;1500;0;0;0;0;0;0;0
+34.1;28;44040;5.547;42;1500;0;0;0;0;0;0;0
+34.2;28;44040;5.547;40;1500;0;0;0;0;0;0;0
+34.3;28;44040;5.547;38;1500;0;0;0;0;0;0;0
+34.4;28;44040;5.547;36;1500;0;0;0;0;0;0;0
+34.5;28;44040;5.547;34;1500;0;0;0;0;0;0;0
+34.6;28;44040;5.547;32;1500;0;0;0;0;0;0;0
+34.7;28;44040;5.547;31;1500;0;0;0;0;0;0;0
+34.8;28;44040;5.547;29;1500;0;0;0;0;0;0;0
+34.9;28;44040;5.547;27;1500;0;0;0;0;0;0;0
+35;28;44040;5.547;26;1500;0;0;0;0;0;0;0
+35.1;28;44040;5.547;25;1500;0;0;0;0;0;0;0
+35.2;28;44040;5.547;23;1500;0;0;0;0;0;0;0
+35.3;28;44040;5.547;22;1500;0;0;0;0;0;0;0
+35.4;28;44040;5.547;21;1500;0;0;0;0;0;0;0
+35.5;28;44040;5.547;20;1500;0;0;0;0;0;0;0
+35.6;28;44040;5.547;19;1500;0;0;0;0;0;0;0
+35.7;28;44040;5.547;18;1500;0;0;0;0;0;0;0
+35.8;28;44040;5.547;17;1500;0;0;0;0;0;0;0
+35.9;28;44040;5.547;16;1500;0;0;0;0;0;0;0
+36;28;44040;5.547;15;1500;0;0;0;0;0;0;0
+36.1;28;44040;5.547;0;1500;0;0;0;0;0;0;0
+36.2;28;44040;5.547;0;1500;0;0;0;0;0;0;0
+36.3;28;44040;5.547;0;1500;0;0;0;0;0;0;0
+36.4;28;44040;5.547;0;1500;0;0;0;0;0;0;0
+36.5;28;44040;5.547;0;1500;0;0;0;0;0;0;0
+36.6;28;44040;5.547;0;1500;0;0;0;0;0;0;0
+36.7;28;44040;5.547;0;1500;0;0;0;0;0;0;0
+36.8;28;44040;5.547;0;1500;0;0;0;0;0;0;0
+36.9;28;44040;5.547;0;1500;0;0;0;0;0;0;0
+37;28;44040;5.547;0;1500;0;0;0;0;0;0;0
diff --git a/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs2_cdlc_mimo2x2_dl.csv b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs2_cdlc_mimo2x2_dl.csv
new file mode 100644
index 0000000000..f547dc59c7
--- /dev/null
+++ b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs2_cdlc_mimo2x2_dl.csv
@@ -0,0 +1,153 @@
+SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
+-15;2;2976;0.377;1500;1500;0;0;0;0;0;0;0
+-14.9;2;2976;0.377;1494;1500;0;0;0;0;0;0;0
+-14.8;2;2976;0.377;1489;1500;0;0;0;0;0;0;0
+-14.7;2;2976;0.377;1484;1500;0;0;0;0;0;0;0
+-14.6;2;2976;0.377;1479;1500;0;0;0;0;0;0;0
+-14.5;2;2976;0.377;1473;1500;0;0;0;0;0;0;0
+-14.4;2;2976;0.377;1468;1500;0;0;0;0;0;0;0
+-14.3;2;2976;0.377;1463;1500;0;0;0;0;0;0;0
+-14.2;2;2976;0.377;1458;1500;0;0;0;0;0;0;0
+-14.1;2;2976;0.377;1453;1500;0;0;0;0;0;0;0
+-14;2;2976;0.377;1448;1500;0;0;0;0;0;0;0
+-13.9;2;2976;0.377;1443;1500;0;0;0;0;0;0;0
+-13.8;2;2976;0.377;1438;1500;0;0;0;0;0;0;0
+-13.7;2;2976;0.377;1433;1500;0;0;0;0;0;0;0
+-13.6;2;2976;0.377;1427;1500;0;0;0;0;0;0;0
+-13.5;2;2976;0.377;1422;1500;0;0;0;0;0;0;0
+-13.4;2;2976;0.377;1417;1500;0;0;0;0;0;0;0
+-13.3;2;2976;0.377;1412;1500;0;0;0;0;0;0;0
+-13.2;2;2976;0.377;1407;1500;0;0;0;0;0;0;0
+-13.1;2;2976;0.377;1403;1500;0;0;0;0;0;0;0
+-13;2;2976;0.377;1398;1500;0;0;0;0;0;0;0
+-12.9;2;2976;0.377;1393;1500;0;0;0;0;0;0;0
+-12.8;2;2976;0.377;1388;1500;0;0;0;0;0;0;0
+-12.7;2;2976;0.377;1383;1500;0;0;0;0;0;0;0
+-12.6;2;2976;0.377;1378;1500;0;0;0;0;0;0;0
+-12.5;2;2976;0.377;1373;1500;0;0;0;0;0;0;0
+-12.4;2;2976;0.377;1368;1500;0;0;0;0;0;0;0
+-12.3;2;2976;0.377;1364;1500;0;0;0;0;0;0;0
+-12.2;2;2976;0.377;1359;1500;0;0;0;0;0;0;0
+-12.1;2;2976;0.377;1354;1500;0;0;0;0;0;0;0
+-12;2;2976;0.377;1349;1500;0;0;0;0;0;0;0
+-11.9;2;2976;0.377;1335;1500;0;0;0;0;0;0;0
+-11.8;2;2976;0.377;1321;1500;0;0;0;0;0;0;0
+-11.7;2;2976;0.377;1308;1500;0;0;0;0;0;0;0
+-11.6;2;2976;0.377;1294;1500;0;0;0;0;0;0;0
+-11.5;2;2976;0.377;1281;1500;0;0;0;0;0;0;0
+-11.4;2;2976;0.377;1267;1500;0;0;0;0;0;0;0
+-11.3;2;2976;0.377;1254;1500;0;0;0;0;0;0;0
+-11.2;2;2976;0.377;1241;1500;0;0;0;0;0;0;0
+-11.1;2;2976;0.377;1228;1500;0;0;0;0;0;0;0
+-11;2;2976;0.377;1216;1500;0;0;0;0;0;0;0
+-10.9;2;2976;0.377;1203;1500;0;0;0;0;0;0;0
+-10.8;2;2976;0.377;1191;1500;0;0;0;0;0;0;0
+-10.7;2;2976;0.377;1178;1500;0;0;0;0;0;0;0
+-10.6;2;2976;0.377;1166;1500;0;0;0;0;0;0;0
+-10.5;2;2976;0.377;1154;1500;0;0;0;0;0;0;0
+-10.4;2;2976;0.377;1142;1500;0;0;0;0;0;0;0
+-10.3;2;2976;0.377;1130;1500;0;0;0;0;0;0;0
+-10.2;2;2976;0.377;1119;1500;0;0;0;0;0;0;0
+-10.1;2;2976;0.377;1107;1500;0;0;0;0;0;0;0
+-10;2;2976;0.377;1095;1500;0;0;0;0;0;0;0
+-9.9;2;2976;0.377;1084;1500;0;0;0;0;0;0;0
+-9.8;2;2976;0.377;1073;1500;0;0;0;0;0;0;0
+-9.7;2;2976;0.377;1062;1500;0;0;0;0;0;0;0
+-9.6;2;2976;0.377;1051;1500;0;0;0;0;0;0;0
+-9.5;2;2976;0.377;1040;1500;0;0;0;0;0;0;0
+-9.4;2;2976;0.377;1029;1500;0;0;0;0;0;0;0
+-9.3;2;2976;0.377;1018;1500;0;0;0;0;0;0;0
+-9.2;2;2976;0.377;1008;1500;0;0;0;0;0;0;0
+-9.1;2;2976;0.377;997;1500;0;0;0;0;0;0;0
+-9;2;2976;0.377;987;1500;0;0;0;0;0;0;0
+-8.9;2;2976;0.377;970;1500;0;0;0;0;0;0;0
+-8.8;2;2976;0.377;953;1500;0;0;0;0;0;0;0
+-8.7;2;2976;0.377;937;1500;0;0;0;0;0;0;0
+-8.6;2;2976;0.377;921;1500;0;0;0;0;0;0;0
+-8.5;2;2976;0.377;905;1500;0;0;0;0;0;0;0
+-8.4;2;2976;0.377;889;1500;0;0;0;0;0;0;0
+-8.3;2;2976;0.377;874;1500;0;0;0;0;0;0;0
+-8.2;2;2976;0.377;859;1500;0;0;0;0;0;0;0
+-8.1;2;2976;0.377;844;1500;0;0;0;0;0;0;0
+-8;2;2976;0.377;829;1500;0;0;0;0;0;0;0
+-7.9;2;2976;0.377;815;1500;0;0;0;0;0;0;0
+-7.8;2;2976;0.377;801;1500;0;0;0;0;0;0;0
+-7.7;2;2976;0.377;787;1500;0;0;0;0;0;0;0
+-7.6;2;2976;0.377;773;1500;0;0;0;0;0;0;0
+-7.5;2;2976;0.377;760;1500;0;0;0;0;0;0;0
+-7.4;2;2976;0.377;747;1500;0;0;0;0;0;0;0
+-7.3;2;2976;0.377;734;1500;0;0;0;0;0;0;0
+-7.2;2;2976;0.377;721;1500;0;0;0;0;0;0;0
+-7.1;2;2976;0.377;709;1500;0;0;0;0;0;0;0
+-7;2;2976;0.377;697;1500;0;0;0;0;0;0;0
+-6.9;2;2976;0.377;685;1500;0;0;0;0;0;0;0
+-6.8;2;2976;0.377;673;1500;0;0;0;0;0;0;0
+-6.7;2;2976;0.377;661;1500;0;0;0;0;0;0;0
+-6.6;2;2976;0.377;650;1500;0;0;0;0;0;0;0
+-6.5;2;2976;0.377;639;1500;0;0;0;0;0;0;0
+-6.4;2;2976;0.377;628;1500;0;0;0;0;0;0;0
+-6.3;2;2976;0.377;617;1500;0;0;0;0;0;0;0
+-6.2;2;2976;0.377;606;1500;0;0;0;0;0;0;0
+-6.1;2;2976;0.377;596;1500;0;0;0;0;0;0;0
+-6;2;2976;0.377;585;1500;0;0;0;0;0;0;0
+-5.9;2;2976;0.377;555;1500;0;0;0;0;0;0;0
+-5.8;2;2976;0.377;527;1500;0;0;0;0;0;0;0
+-5.7;2;2976;0.377;500;1500;0;0;0;0;0;0;0
+-5.6;2;2976;0.377;474;1500;0;0;0;0;0;0;0
+-5.5;2;2976;0.377;450;1500;0;0;0;0;0;0;0
+-5.4;2;2976;0.377;427;1500;0;0;0;0;0;0;0
+-5.3;2;2976;0.377;405;1500;0;0;0;0;0;0;0
+-5.2;2;2976;0.377;384;1500;0;0;0;0;0;0;0
+-5.1;2;2976;0.377;365;1500;0;0;0;0;0;0;0
+-5;2;2976;0.377;346;1500;0;0;0;0;0;0;0
+-4.9;2;2976;0.377;328;1500;0;0;0;0;0;0;0
+-4.8;2;2976;0.377;312;1500;0;0;0;0;0;0;0
+-4.7;2;2976;0.377;296;1500;0;0;0;0;0;0;0
+-4.6;2;2976;0.377;280;1500;0;0;0;0;0;0;0
+-4.5;2;2976;0.377;266;1500;0;0;0;0;0;0;0
+-4.4;2;2976;0.377;252;1500;0;0;0;0;0;0;0
+-4.3;2;2976;0.377;240;1500;0;0;0;0;0;0;0
+-4.2;2;2976;0.377;227;1500;0;0;0;0;0;0;0
+-4.1;2;2976;0.377;216;1500;0;0;0;0;0;0;0
+-4;2;2976;0.377;205;1500;0;0;0;0;0;0;0
+-3.9;2;2976;0.377;194;1500;0;0;0;0;0;0;0
+-3.8;2;2976;0.377;184;1500;0;0;0;0;0;0;0
+-3.7;2;2976;0.377;175;1500;0;0;0;0;0;0;0
+-3.6;2;2976;0.377;166;1500;0;0;0;0;0;0;0
+-3.5;2;2976;0.377;157;1500;0;0;0;0;0;0;0
+-3.4;2;2976;0.377;149;1500;0;0;0;0;0;0;0
+-3.3;2;2976;0.377;142;1500;0;0;0;0;0;0;0
+-3.2;2;2976;0.377;134;1500;0;0;0;0;0;0;0
+-3.1;2;2976;0.377;128;1500;0;0;0;0;0;0;0
+-3;2;2976;0.377;121;1500;0;0;0;0;0;0;0
+-2.9;2;2976;0.377;107;1500;0;0;0;0;0;0;0
+-2.8;2;2976;0.377;94;1500;0;0;0;0;0;0;0
+-2.7;2;2976;0.377;83;1500;0;0;0;0;0;0;0
+-2.6;2;2976;0.377;73;1500;0;0;0;0;0;0;0
+-2.5;2;2976;0.377;64;1500;0;0;0;0;0;0;0
+-2.4;2;2976;0.377;57;1500;0;0;0;0;0;0;0
+-2.3;2;2976;0.377;50;1500;0;0;0;0;0;0;0
+-2.2;2;2976;0.377;44;1500;0;0;0;0;0;0;0
+-2.1;2;2976;0.377;39;1500;0;0;0;0;0;0;0
+-2;2;2976;0.377;34;1500;0;0;0;0;0;0;0
+-1.9;2;2976;0.377;30;1500;0;0;0;0;0;0;0
+-1.8;2;2976;0.377;27;1500;0;0;0;0;0;0;0
+-1.7;2;2976;0.377;24;1500;0;0;0;0;0;0;0
+-1.6;2;2976;0.377;21;1500;0;0;0;0;0;0;0
+-1.5;2;2976;0.377;18;1500;0;0;0;0;0;0;0
+-1.4;2;2976;0.377;16;1500;0;0;0;0;0;0;0
+-1.3;2;2976;0.377;14;1500;0;0;0;0;0;0;0
+-1.2;2;2976;0.377;13;1500;0;0;0;0;0;0;0
+-1.1;2;2976;0.377;11;1500;0;0;0;0;0;0;0
+-1;2;2976;0.377;10;1500;0;0;0;0;0;0;0
+-0.9;2;2976;0.377;9;1500;0;0;0;0;0;0;0
+-0.8;2;2976;0.377;8;1500;0;0;0;0;0;0;0
+-0.7;2;2976;0.377;7;1500;0;0;0;0;0;0;0
+-0.6;2;2976;0.377;6;1500;0;0;0;0;0;0;0
+-0.5;2;2976;0.377;5;1500;0;0;0;0;0;0;0
+-0.4;2;2976;0.377;5;1500;0;0;0;0;0;0;0
+-0.3;2;2976;0.377;4;1500;0;0;0;0;0;0;0
+-0.2;2;2976;0.377;4;1500;0;0;0;0;0;0;0
+-0.1;2;2976;0.377;3;1500;0;0;0;0;0;0;0
+0;2;2976;0.377;3;1500;0;0;0;0;0;0;0
+0.1;2;2976;0.377;0;1500;0;0;0;0;0;0;0
diff --git a/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs3_cdlc_mimo2x2_dl.csv b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs3_cdlc_mimo2x2_dl.csv
new file mode 100644
index 0000000000..cb49eeff8b
--- /dev/null
+++ b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs3_cdlc_mimo2x2_dl.csv
@@ -0,0 +1,153 @@
+SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
+-15;3;3912;0.4902;1448;1500;0;0;0;0;0;0;0
+-14.9;3;3912;0.4902;1436;1500;0;0;0;0;0;0;0
+-14.8;3;3912;0.4902;1424;1500;0;0;0;0;0;0;0
+-14.7;3;3912;0.4902;1413;1500;0;0;0;0;0;0;0
+-14.6;3;3912;0.4902;1401;1500;0;0;0;0;0;0;0
+-14.5;3;3912;0.4902;1390;1500;0;0;0;0;0;0;0
+-14.4;3;3912;0.4902;1379;1500;0;0;0;0;0;0;0
+-14.3;3;3912;0.4902;1367;1500;0;0;0;0;0;0;0
+-14.2;3;3912;0.4902;1356;1500;0;0;0;0;0;0;0
+-14.1;3;3912;0.4902;1345;1500;0;0;0;0;0;0;0
+-14;3;3912;0.4902;1334;1500;0;0;0;0;0;0;0
+-13.9;3;3912;0.4902;1323;1500;0;0;0;0;0;0;0
+-13.8;3;3912;0.4902;1313;1500;0;0;0;0;0;0;0
+-13.7;3;3912;0.4902;1302;1500;0;0;0;0;0;0;0
+-13.6;3;3912;0.4902;1291;1500;0;0;0;0;0;0;0
+-13.5;3;3912;0.4902;1281;1500;0;0;0;0;0;0;0
+-13.4;3;3912;0.4902;1270;1500;0;0;0;0;0;0;0
+-13.3;3;3912;0.4902;1260;1500;0;0;0;0;0;0;0
+-13.2;3;3912;0.4902;1250;1500;0;0;0;0;0;0;0
+-13.1;3;3912;0.4902;1240;1500;0;0;0;0;0;0;0
+-13;3;3912;0.4902;1230;1500;0;0;0;0;0;0;0
+-12.9;3;3912;0.4902;1220;1500;0;0;0;0;0;0;0
+-12.8;3;3912;0.4902;1210;1500;0;0;0;0;0;0;0
+-12.7;3;3912;0.4902;1200;1500;0;0;0;0;0;0;0
+-12.6;3;3912;0.4902;1190;1500;0;0;0;0;0;0;0
+-12.5;3;3912;0.4902;1180;1500;0;0;0;0;0;0;0
+-12.4;3;3912;0.4902;1171;1500;0;0;0;0;0;0;0
+-12.3;3;3912;0.4902;1161;1500;0;0;0;0;0;0;0
+-12.2;3;3912;0.4902;1152;1500;0;0;0;0;0;0;0
+-12.1;3;3912;0.4902;1142;1500;0;0;0;0;0;0;0
+-12;3;3912;0.4902;1133;1500;0;0;0;0;0;0;0
+-11.9;3;3912;0.4902;1120;1500;0;0;0;0;0;0;0
+-11.8;3;3912;0.4902;1108;1500;0;0;0;0;0;0;0
+-11.7;3;3912;0.4902;1095;1500;0;0;0;0;0;0;0
+-11.6;3;3912;0.4902;1083;1500;0;0;0;0;0;0;0
+-11.5;3;3912;0.4902;1071;1500;0;0;0;0;0;0;0
+-11.4;3;3912;0.4902;1058;1500;0;0;0;0;0;0;0
+-11.3;3;3912;0.4902;1046;1500;0;0;0;0;0;0;0
+-11.2;3;3912;0.4902;1035;1500;0;0;0;0;0;0;0
+-11.1;3;3912;0.4902;1023;1500;0;0;0;0;0;0;0
+-11;3;3912;0.4902;1011;1500;0;0;0;0;0;0;0
+-10.9;3;3912;0.4902;1000;1500;0;0;0;0;0;0;0
+-10.8;3;3912;0.4902;989;1500;0;0;0;0;0;0;0
+-10.7;3;3912;0.4902;977;1500;0;0;0;0;0;0;0
+-10.6;3;3912;0.4902;966;1500;0;0;0;0;0;0;0
+-10.5;3;3912;0.4902;955;1500;0;0;0;0;0;0;0
+-10.4;3;3912;0.4902;945;1500;0;0;0;0;0;0;0
+-10.3;3;3912;0.4902;934;1500;0;0;0;0;0;0;0
+-10.2;3;3912;0.4902;923;1500;0;0;0;0;0;0;0
+-10.1;3;3912;0.4902;913;1500;0;0;0;0;0;0;0
+-10;3;3912;0.4902;903;1500;0;0;0;0;0;0;0
+-9.9;3;3912;0.4902;893;1500;0;0;0;0;0;0;0
+-9.8;3;3912;0.4902;882;1500;0;0;0;0;0;0;0
+-9.7;3;3912;0.4902;872;1500;0;0;0;0;0;0;0
+-9.6;3;3912;0.4902;863;1500;0;0;0;0;0;0;0
+-9.5;3;3912;0.4902;853;1500;0;0;0;0;0;0;0
+-9.4;3;3912;0.4902;843;1500;0;0;0;0;0;0;0
+-9.3;3;3912;0.4902;834;1500;0;0;0;0;0;0;0
+-9.2;3;3912;0.4902;824;1500;0;0;0;0;0;0;0
+-9.1;3;3912;0.4902;815;1500;0;0;0;0;0;0;0
+-9;3;3912;0.4902;806;1500;0;0;0;0;0;0;0
+-8.9;3;3912;0.4902;782;1500;0;0;0;0;0;0;0
+-8.8;3;3912;0.4902;759;1500;0;0;0;0;0;0;0
+-8.7;3;3912;0.4902;736;1500;0;0;0;0;0;0;0
+-8.6;3;3912;0.4902;714;1500;0;0;0;0;0;0;0
+-8.5;3;3912;0.4902;693;1500;0;0;0;0;0;0;0
+-8.4;3;3912;0.4902;672;1500;0;0;0;0;0;0;0
+-8.3;3;3912;0.4902;652;1500;0;0;0;0;0;0;0
+-8.2;3;3912;0.4902;633;1500;0;0;0;0;0;0;0
+-8.1;3;3912;0.4902;614;1500;0;0;0;0;0;0;0
+-8;3;3912;0.4902;596;1500;0;0;0;0;0;0;0
+-7.9;3;3912;0.4902;578;1500;0;0;0;0;0;0;0
+-7.8;3;3912;0.4902;561;1500;0;0;0;0;0;0;0
+-7.7;3;3912;0.4902;544;1500;0;0;0;0;0;0;0
+-7.6;3;3912;0.4902;528;1500;0;0;0;0;0;0;0
+-7.5;3;3912;0.4902;512;1500;0;0;0;0;0;0;0
+-7.4;3;3912;0.4902;497;1500;0;0;0;0;0;0;0
+-7.3;3;3912;0.4902;482;1500;0;0;0;0;0;0;0
+-7.2;3;3912;0.4902;468;1500;0;0;0;0;0;0;0
+-7.1;3;3912;0.4902;454;1500;0;0;0;0;0;0;0
+-7;3;3912;0.4902;441;1500;0;0;0;0;0;0;0
+-6.9;3;3912;0.4902;427;1500;0;0;0;0;0;0;0
+-6.8;3;3912;0.4902;415;1500;0;0;0;0;0;0;0
+-6.7;3;3912;0.4902;402;1500;0;0;0;0;0;0;0
+-6.6;3;3912;0.4902;390;1500;0;0;0;0;0;0;0
+-6.5;3;3912;0.4902;379;1500;0;0;0;0;0;0;0
+-6.4;3;3912;0.4902;368;1500;0;0;0;0;0;0;0
+-6.3;3;3912;0.4902;357;1500;0;0;0;0;0;0;0
+-6.2;3;3912;0.4902;346;1500;0;0;0;0;0;0;0
+-6.1;3;3912;0.4902;336;1500;0;0;0;0;0;0;0
+-6;3;3912;0.4902;326;1500;0;0;0;0;0;0;0
+-5.9;3;3912;0.4902;296;1500;0;0;0;0;0;0;0
+-5.8;3;3912;0.4902;268;1500;0;0;0;0;0;0;0
+-5.7;3;3912;0.4902;243;1500;0;0;0;0;0;0;0
+-5.6;3;3912;0.4902;221;1500;0;0;0;0;0;0;0
+-5.5;3;3912;0.4902;201;1500;0;0;0;0;0;0;0
+-5.4;3;3912;0.4902;182;1500;0;0;0;0;0;0;0
+-5.3;3;3912;0.4902;165;1500;0;0;0;0;0;0;0
+-5.2;3;3912;0.4902;150;1500;0;0;0;0;0;0;0
+-5.1;3;3912;0.4902;136;1500;0;0;0;0;0;0;0
+-5;3;3912;0.4902;123;1500;0;0;0;0;0;0;0
+-4.9;3;3912;0.4902;112;1500;0;0;0;0;0;0;0
+-4.8;3;3912;0.4902;102;1500;0;0;0;0;0;0;0
+-4.7;3;3912;0.4902;92;1500;0;0;0;0;0;0;0
+-4.6;3;3912;0.4902;84;1500;0;0;0;0;0;0;0
+-4.5;3;3912;0.4902;76;1500;0;0;0;0;0;0;0
+-4.4;3;3912;0.4902;69;1500;0;0;0;0;0;0;0
+-4.3;3;3912;0.4902;63;1500;0;0;0;0;0;0;0
+-4.2;3;3912;0.4902;57;1500;0;0;0;0;0;0;0
+-4.1;3;3912;0.4902;51;1500;0;0;0;0;0;0;0
+-4;3;3912;0.4902;47;1500;0;0;0;0;0;0;0
+-3.9;3;3912;0.4902;42;1500;0;0;0;0;0;0;0
+-3.8;3;3912;0.4902;38;1500;0;0;0;0;0;0;0
+-3.7;3;3912;0.4902;35;1500;0;0;0;0;0;0;0
+-3.6;3;3912;0.4902;32;1500;0;0;0;0;0;0;0
+-3.5;3;3912;0.4902;29;1500;0;0;0;0;0;0;0
+-3.4;3;3912;0.4902;26;1500;0;0;0;0;0;0;0
+-3.3;3;3912;0.4902;24;1500;0;0;0;0;0;0;0
+-3.2;3;3912;0.4902;21;1500;0;0;0;0;0;0;0
+-3.1;3;3912;0.4902;20;1500;0;0;0;0;0;0;0
+-3;3;3912;0.4902;18;1500;0;0;0;0;0;0;0
+-2.9;3;3912;0.4902;0;1500;0;0;0;0;0;0;0
+-2.8;3;3912;0.4902;0;1500;0;0;0;0;0;0;0
+-2.7;3;3912;0.4902;0;1500;0;0;0;0;0;0;0
+-2.6;3;3912;0.4902;0;1500;0;0;0;0;0;0;0
+-2.5;3;3912;0.4902;0;1500;0;0;0;0;0;0;0
+-2.4;3;3912;0.4902;0;1500;0;0;0;0;0;0;0
+-2.3;3;3912;0.4902;0;1500;0;0;0;0;0;0;0
+-2.2;3;3912;0.4902;0;1500;0;0;0;0;0;0;0
+-2.1;3;3912;0.4902;0;1500;0;0;0;0;0;0;0
+-2;3;3912;0.4902;0;1500;0;0;0;0;0;0;0
+-1.9;3;3912;0.4902;0;1500;0;0;0;0;0;0;0
+-1.8;3;3912;0.4902;0;1500;0;0;0;0;0;0;0
+-1.7;3;3912;0.4902;0;1500;0;0;0;0;0;0;0
+-1.6;3;3912;0.4902;0;1500;0;0;0;0;0;0;0
+-1.5;3;3912;0.4902;0;1500;0;0;0;0;0;0;0
+-1.4;3;3912;0.4902;0;1500;0;0;0;0;0;0;0
+-1.3;3;3912;0.4902;0;1500;0;0;0;0;0;0;0
+-1.2;3;3912;0.4902;0;1500;0;0;0;0;0;0;0
+-1.1;3;3912;0.4902;0;1500;0;0;0;0;0;0;0
+-1;3;3912;0.4902;0;1500;0;0;0;0;0;0;0
+-0.9;3;3912;0.4902;0;1500;0;0;0;0;0;0;0
+-0.8;3;3912;0.4902;0;1500;0;0;0;0;0;0;0
+-0.7;3;3912;0.4902;0;1500;0;0;0;0;0;0;0
+-0.6;3;3912;0.4902;0;1500;0;0;0;0;0;0;0
+-0.5;3;3912;0.4902;0;1500;0;0;0;0;0;0;0
+-0.4;3;3912;0.4902;0;1500;0;0;0;0;0;0;0
+-0.3;3;3912;0.4902;0;1500;0;0;0;0;0;0;0
+-0.2;3;3912;0.4902;0;1500;0;0;0;0;0;0;0
+-0.1;3;3912;0.4902;0;1500;0;0;0;0;0;0;0
+0;3;3912;0.4902;0;1500;0;0;0;0;0;0;0
+0.1;3;3912;0.4902;0;1500;0;0;0;0;0;0;0
diff --git a/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs4_cdlc_mimo2x2_dl.csv b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs4_cdlc_mimo2x2_dl.csv
new file mode 100644
index 0000000000..eadcc98b0c
--- /dev/null
+++ b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs4_cdlc_mimo2x2_dl.csv
@@ -0,0 +1,153 @@
+SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
+-12;4;4736;0.6016;1494;1500;0;0;0;0;0;0;0
+-11.9;4;4736;0.6016;1486;1500;0;0;0;0;0;0;0
+-11.8;4;4736;0.6016;1478;1500;0;0;0;0;0;0;0
+-11.7;4;4736;0.6016;1470;1500;0;0;0;0;0;0;0
+-11.6;4;4736;0.6016;1462;1500;0;0;0;0;0;0;0
+-11.5;4;4736;0.6016;1454;1500;0;0;0;0;0;0;0
+-11.4;4;4736;0.6016;1447;1500;0;0;0;0;0;0;0
+-11.3;4;4736;0.6016;1439;1500;0;0;0;0;0;0;0
+-11.2;4;4736;0.6016;1431;1500;0;0;0;0;0;0;0
+-11.1;4;4736;0.6016;1423;1500;0;0;0;0;0;0;0
+-11;4;4736;0.6016;1416;1500;0;0;0;0;0;0;0
+-10.9;4;4736;0.6016;1408;1500;0;0;0;0;0;0;0
+-10.8;4;4736;0.6016;1401;1500;0;0;0;0;0;0;0
+-10.7;4;4736;0.6016;1393;1500;0;0;0;0;0;0;0
+-10.6;4;4736;0.6016;1386;1500;0;0;0;0;0;0;0
+-10.5;4;4736;0.6016;1379;1500;0;0;0;0;0;0;0
+-10.4;4;4736;0.6016;1371;1500;0;0;0;0;0;0;0
+-10.3;4;4736;0.6016;1364;1500;0;0;0;0;0;0;0
+-10.2;4;4736;0.6016;1357;1500;0;0;0;0;0;0;0
+-10.1;4;4736;0.6016;1349;1500;0;0;0;0;0;0;0
+-10;4;4736;0.6016;1342;1500;0;0;0;0;0;0;0
+-9.9;4;4736;0.6016;1335;1500;0;0;0;0;0;0;0
+-9.8;4;4736;0.6016;1328;1500;0;0;0;0;0;0;0
+-9.7;4;4736;0.6016;1321;1500;0;0;0;0;0;0;0
+-9.6;4;4736;0.6016;1314;1500;0;0;0;0;0;0;0
+-9.5;4;4736;0.6016;1307;1500;0;0;0;0;0;0;0
+-9.4;4;4736;0.6016;1300;1500;0;0;0;0;0;0;0
+-9.3;4;4736;0.6016;1293;1500;0;0;0;0;0;0;0
+-9.2;4;4736;0.6016;1286;1500;0;0;0;0;0;0;0
+-9.1;4;4736;0.6016;1279;1500;0;0;0;0;0;0;0
+-9;4;4736;0.6016;1272;1500;0;0;0;0;0;0;0
+-8.9;4;4736;0.6016;1259;1500;0;0;0;0;0;0;0
+-8.8;4;4736;0.6016;1245;1500;0;0;0;0;0;0;0
+-8.7;4;4736;0.6016;1232;1500;0;0;0;0;0;0;0
+-8.6;4;4736;0.6016;1218;1500;0;0;0;0;0;0;0
+-8.5;4;4736;0.6016;1205;1500;0;0;0;0;0;0;0
+-8.4;4;4736;0.6016;1192;1500;0;0;0;0;0;0;0
+-8.3;4;4736;0.6016;1180;1500;0;0;0;0;0;0;0
+-8.2;4;4736;0.6016;1167;1500;0;0;0;0;0;0;0
+-8.1;4;4736;0.6016;1154;1500;0;0;0;0;0;0;0
+-8;4;4736;0.6016;1142;1500;0;0;0;0;0;0;0
+-7.9;4;4736;0.6016;1130;1500;0;0;0;0;0;0;0
+-7.8;4;4736;0.6016;1118;1500;0;0;0;0;0;0;0
+-7.7;4;4736;0.6016;1106;1500;0;0;0;0;0;0;0
+-7.6;4;4736;0.6016;1094;1500;0;0;0;0;0;0;0
+-7.5;4;4736;0.6016;1082;1500;0;0;0;0;0;0;0
+-7.4;4;4736;0.6016;1070;1500;0;0;0;0;0;0;0
+-7.3;4;4736;0.6016;1059;1500;0;0;0;0;0;0;0
+-7.2;4;4736;0.6016;1048;1500;0;0;0;0;0;0;0
+-7.1;4;4736;0.6016;1036;1500;0;0;0;0;0;0;0
+-7;4;4736;0.6016;1025;1500;0;0;0;0;0;0;0
+-6.9;4;4736;0.6016;1014;1500;0;0;0;0;0;0;0
+-6.8;4;4736;0.6016;1003;1500;0;0;0;0;0;0;0
+-6.7;4;4736;0.6016;993;1500;0;0;0;0;0;0;0
+-6.6;4;4736;0.6016;982;1500;0;0;0;0;0;0;0
+-6.5;4;4736;0.6016;971;1500;0;0;0;0;0;0;0
+-6.4;4;4736;0.6016;961;1500;0;0;0;0;0;0;0
+-6.3;4;4736;0.6016;951;1500;0;0;0;0;0;0;0
+-6.2;4;4736;0.6016;940;1500;0;0;0;0;0;0;0
+-6.1;4;4736;0.6016;930;1500;0;0;0;0;0;0;0
+-6;4;4736;0.6016;920;1500;0;0;0;0;0;0;0
+-5.9;4;4736;0.6016;903;1500;0;0;0;0;0;0;0
+-5.8;4;4736;0.6016;885;1500;0;0;0;0;0;0;0
+-5.7;4;4736;0.6016;868;1500;0;0;0;0;0;0;0
+-5.6;4;4736;0.6016;851;1500;0;0;0;0;0;0;0
+-5.5;4;4736;0.6016;835;1500;0;0;0;0;0;0;0
+-5.4;4;4736;0.6016;819;1500;0;0;0;0;0;0;0
+-5.3;4;4736;0.6016;803;1500;0;0;0;0;0;0;0
+-5.2;4;4736;0.6016;787;1500;0;0;0;0;0;0;0
+-5.1;4;4736;0.6016;772;1500;0;0;0;0;0;0;0
+-5;4;4736;0.6016;757;1500;0;0;0;0;0;0;0
+-4.9;4;4736;0.6016;743;1500;0;0;0;0;0;0;0
+-4.8;4;4736;0.6016;728;1500;0;0;0;0;0;0;0
+-4.7;4;4736;0.6016;714;1500;0;0;0;0;0;0;0
+-4.6;4;4736;0.6016;700;1500;0;0;0;0;0;0;0
+-4.5;4;4736;0.6016;687;1500;0;0;0;0;0;0;0
+-4.4;4;4736;0.6016;674;1500;0;0;0;0;0;0;0
+-4.3;4;4736;0.6016;661;1500;0;0;0;0;0;0;0
+-4.2;4;4736;0.6016;648;1500;0;0;0;0;0;0;0
+-4.1;4;4736;0.6016;635;1500;0;0;0;0;0;0;0
+-4;4;4736;0.6016;623;1500;0;0;0;0;0;0;0
+-3.9;4;4736;0.6016;611;1500;0;0;0;0;0;0;0
+-3.8;4;4736;0.6016;599;1500;0;0;0;0;0;0;0
+-3.7;4;4736;0.6016;588;1500;0;0;0;0;0;0;0
+-3.6;4;4736;0.6016;576;1500;0;0;0;0;0;0;0
+-3.5;4;4736;0.6016;565;1500;0;0;0;0;0;0;0
+-3.4;4;4736;0.6016;554;1500;0;0;0;0;0;0;0
+-3.3;4;4736;0.6016;544;1500;0;0;0;0;0;0;0
+-3.2;4;4736;0.6016;533;1500;0;0;0;0;0;0;0
+-3.1;4;4736;0.6016;523;1500;0;0;0;0;0;0;0
+-3;4;4736;0.6016;513;1500;0;0;0;0;0;0;0
+-2.9;4;4736;0.6016;484;1500;0;0;0;0;0;0;0
+-2.8;4;4736;0.6016;456;1500;0;0;0;0;0;0;0
+-2.7;4;4736;0.6016;430;1500;0;0;0;0;0;0;0
+-2.6;4;4736;0.6016;406;1500;0;0;0;0;0;0;0
+-2.5;4;4736;0.6016;383;1500;0;0;0;0;0;0;0
+-2.4;4;4736;0.6016;361;1500;0;0;0;0;0;0;0
+-2.3;4;4736;0.6016;341;1500;0;0;0;0;0;0;0
+-2.2;4;4736;0.6016;321;1500;0;0;0;0;0;0;0
+-2.1;4;4736;0.6016;303;1500;0;0;0;0;0;0;0
+-2;4;4736;0.6016;286;1500;0;0;0;0;0;0;0
+-1.9;4;4736;0.6016;270;1500;0;0;0;0;0;0;0
+-1.8;4;4736;0.6016;254;1500;0;0;0;0;0;0;0
+-1.7;4;4736;0.6016;240;1500;0;0;0;0;0;0;0
+-1.6;4;4736;0.6016;226;1500;0;0;0;0;0;0;0
+-1.5;4;4736;0.6016;214;1500;0;0;0;0;0;0;0
+-1.4;4;4736;0.6016;201;1500;0;0;0;0;0;0;0
+-1.3;4;4736;0.6016;190;1500;0;0;0;0;0;0;0
+-1.2;4;4736;0.6016;179;1500;0;0;0;0;0;0;0
+-1.1;4;4736;0.6016;169;1500;0;0;0;0;0;0;0
+-1;4;4736;0.6016;159;1500;0;0;0;0;0;0;0
+-0.9;4;4736;0.6016;150;1500;0;0;0;0;0;0;0
+-0.8;4;4736;0.6016;142;1500;0;0;0;0;0;0;0
+-0.7;4;4736;0.6016;134;1500;0;0;0;0;0;0;0
+-0.6;4;4736;0.6016;126;1500;0;0;0;0;0;0;0
+-0.5;4;4736;0.6016;119;1500;0;0;0;0;0;0;0
+-0.4;4;4736;0.6016;112;1500;0;0;0;0;0;0;0
+-0.3;4;4736;0.6016;106;1500;0;0;0;0;0;0;0
+-0.2;4;4736;0.6016;100;1500;0;0;0;0;0;0;0
+-0.1;4;4736;0.6016;94;1500;0;0;0;0;0;0;0
+0;4;4736;0.6016;89;1500;0;0;0;0;0;0;0
+0.1;4;4736;0.6016;77;1500;0;0;0;0;0;0;0
+0.2;4;4736;0.6016;66;1500;0;0;0;0;0;0;0
+0.3;4;4736;0.6016;57;1500;0;0;0;0;0;0;0
+0.4;4;4736;0.6016;49;1500;0;0;0;0;0;0;0
+0.5;4;4736;0.6016;42;1500;0;0;0;0;0;0;0
+0.6;4;4736;0.6016;37;1500;0;0;0;0;0;0;0
+0.7;4;4736;0.6016;32;1500;0;0;0;0;0;0;0
+0.8;4;4736;0.6016;27;1500;0;0;0;0;0;0;0
+0.9;4;4736;0.6016;23;1500;0;0;0;0;0;0;0
+1;4;4736;0.6016;20;1500;0;0;0;0;0;0;0
+1.1;4;4736;0.6016;17;1500;0;0;0;0;0;0;0
+1.2;4;4736;0.6016;15;1500;0;0;0;0;0;0;0
+1.3;4;4736;0.6016;13;1500;0;0;0;0;0;0;0
+1.4;4;4736;0.6016;11;1500;0;0;0;0;0;0;0
+1.5;4;4736;0.6016;10;1500;0;0;0;0;0;0;0
+1.6;4;4736;0.6016;8;1500;0;0;0;0;0;0;0
+1.7;4;4736;0.6016;7;1500;0;0;0;0;0;0;0
+1.8;4;4736;0.6016;6;1500;0;0;0;0;0;0;0
+1.9;4;4736;0.6016;5;1500;0;0;0;0;0;0;0
+2;4;4736;0.6016;5;1500;0;0;0;0;0;0;0
+2.1;4;4736;0.6016;4;1500;0;0;0;0;0;0;0
+2.2;4;4736;0.6016;3;1500;0;0;0;0;0;0;0
+2.3;4;4736;0.6016;3;1500;0;0;0;0;0;0;0
+2.4;4;4736;0.6016;3;1500;0;0;0;0;0;0;0
+2.5;4;4736;0.6016;2;1500;0;0;0;0;0;0;0
+2.6;4;4736;0.6016;2;1500;0;0;0;0;0;0;0
+2.7;4;4736;0.6016;2;1500;0;0;0;0;0;0;0
+2.8;4;4736;0.6016;1;1500;0;0;0;0;0;0;0
+2.9;4;4736;0.6016;1;1500;0;0;0;0;0;0;0
+3;4;4736;0.6016;1;1500;0;0;0;0;0;0;0
+3.1;4;4736;0.6016;0;1500;0;0;0;0;0;0;0
diff --git a/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs5_cdlc_mimo2x2_dl.csv b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs5_cdlc_mimo2x2_dl.csv
new file mode 100644
index 0000000000..af66b58746
--- /dev/null
+++ b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs5_cdlc_mimo2x2_dl.csv
@@ -0,0 +1,153 @@
+SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
+-12;5;5888;0.7402;1500;1500;0;0;0;0;0;0;0
+-11.9;5;5888;0.7402;1496;1500;0;0;0;0;0;0;0
+-11.8;5;5888;0.7402;1492;1500;0;0;0;0;0;0;0
+-11.7;5;5888;0.7402;1489;1500;0;0;0;0;0;0;0
+-11.6;5;5888;0.7402;1485;1500;0;0;0;0;0;0;0
+-11.5;5;5888;0.7402;1481;1500;0;0;0;0;0;0;0
+-11.4;5;5888;0.7402;1477;1500;0;0;0;0;0;0;0
+-11.3;5;5888;0.7402;1473;1500;0;0;0;0;0;0;0
+-11.2;5;5888;0.7402;1470;1500;0;0;0;0;0;0;0
+-11.1;5;5888;0.7402;1466;1500;0;0;0;0;0;0;0
+-11;5;5888;0.7402;1462;1500;0;0;0;0;0;0;0
+-10.9;5;5888;0.7402;1458;1500;0;0;0;0;0;0;0
+-10.8;5;5888;0.7402;1455;1500;0;0;0;0;0;0;0
+-10.7;5;5888;0.7402;1451;1500;0;0;0;0;0;0;0
+-10.6;5;5888;0.7402;1447;1500;0;0;0;0;0;0;0
+-10.5;5;5888;0.7402;1444;1500;0;0;0;0;0;0;0
+-10.4;5;5888;0.7402;1440;1500;0;0;0;0;0;0;0
+-10.3;5;5888;0.7402;1436;1500;0;0;0;0;0;0;0
+-10.2;5;5888;0.7402;1433;1500;0;0;0;0;0;0;0
+-10.1;5;5888;0.7402;1429;1500;0;0;0;0;0;0;0
+-10;5;5888;0.7402;1425;1500;0;0;0;0;0;0;0
+-9.9;5;5888;0.7402;1422;1500;0;0;0;0;0;0;0
+-9.8;5;5888;0.7402;1418;1500;0;0;0;0;0;0;0
+-9.7;5;5888;0.7402;1414;1500;0;0;0;0;0;0;0
+-9.6;5;5888;0.7402;1411;1500;0;0;0;0;0;0;0
+-9.5;5;5888;0.7402;1407;1500;0;0;0;0;0;0;0
+-9.4;5;5888;0.7402;1404;1500;0;0;0;0;0;0;0
+-9.3;5;5888;0.7402;1400;1500;0;0;0;0;0;0;0
+-9.2;5;5888;0.7402;1396;1500;0;0;0;0;0;0;0
+-9.1;5;5888;0.7402;1393;1500;0;0;0;0;0;0;0
+-9;5;5888;0.7402;1389;1500;0;0;0;0;0;0;0
+-8.9;5;5888;0.7402;1376;1500;0;0;0;0;0;0;0
+-8.8;5;5888;0.7402;1363;1500;0;0;0;0;0;0;0
+-8.7;5;5888;0.7402;1351;1500;0;0;0;0;0;0;0
+-8.6;5;5888;0.7402;1338;1500;0;0;0;0;0;0;0
+-8.5;5;5888;0.7402;1325;1500;0;0;0;0;0;0;0
+-8.4;5;5888;0.7402;1313;1500;0;0;0;0;0;0;0
+-8.3;5;5888;0.7402;1301;1500;0;0;0;0;0;0;0
+-8.2;5;5888;0.7402;1288;1500;0;0;0;0;0;0;0
+-8.1;5;5888;0.7402;1276;1500;0;0;0;0;0;0;0
+-8;5;5888;0.7402;1264;1500;0;0;0;0;0;0;0
+-7.9;5;5888;0.7402;1252;1500;0;0;0;0;0;0;0
+-7.8;5;5888;0.7402;1241;1500;0;0;0;0;0;0;0
+-7.7;5;5888;0.7402;1229;1500;0;0;0;0;0;0;0
+-7.6;5;5888;0.7402;1218;1500;0;0;0;0;0;0;0
+-7.5;5;5888;0.7402;1206;1500;0;0;0;0;0;0;0
+-7.4;5;5888;0.7402;1195;1500;0;0;0;0;0;0;0
+-7.3;5;5888;0.7402;1184;1500;0;0;0;0;0;0;0
+-7.2;5;5888;0.7402;1172;1500;0;0;0;0;0;0;0
+-7.1;5;5888;0.7402;1161;1500;0;0;0;0;0;0;0
+-7;5;5888;0.7402;1151;1500;0;0;0;0;0;0;0
+-6.9;5;5888;0.7402;1140;1500;0;0;0;0;0;0;0
+-6.8;5;5888;0.7402;1129;1500;0;0;0;0;0;0;0
+-6.7;5;5888;0.7402;1118;1500;0;0;0;0;0;0;0
+-6.6;5;5888;0.7402;1108;1500;0;0;0;0;0;0;0
+-6.5;5;5888;0.7402;1098;1500;0;0;0;0;0;0;0
+-6.4;5;5888;0.7402;1087;1500;0;0;0;0;0;0;0
+-6.3;5;5888;0.7402;1077;1500;0;0;0;0;0;0;0
+-6.2;5;5888;0.7402;1067;1500;0;0;0;0;0;0;0
+-6.1;5;5888;0.7402;1057;1500;0;0;0;0;0;0;0
+-6;5;5888;0.7402;1047;1500;0;0;0;0;0;0;0
+-5.9;5;5888;0.7402;1034;1500;0;0;0;0;0;0;0
+-5.8;5;5888;0.7402;1022;1500;0;0;0;0;0;0;0
+-5.7;5;5888;0.7402;1009;1500;0;0;0;0;0;0;0
+-5.6;5;5888;0.7402;997;1500;0;0;0;0;0;0;0
+-5.5;5;5888;0.7402;985;1500;0;0;0;0;0;0;0
+-5.4;5;5888;0.7402;972;1500;0;0;0;0;0;0;0
+-5.3;5;5888;0.7402;961;1500;0;0;0;0;0;0;0
+-5.2;5;5888;0.7402;949;1500;0;0;0;0;0;0;0
+-5.1;5;5888;0.7402;937;1500;0;0;0;0;0;0;0
+-5;5;5888;0.7402;926;1500;0;0;0;0;0;0;0
+-4.9;5;5888;0.7402;914;1500;0;0;0;0;0;0;0
+-4.8;5;5888;0.7402;903;1500;0;0;0;0;0;0;0
+-4.7;5;5888;0.7402;892;1500;0;0;0;0;0;0;0
+-4.6;5;5888;0.7402;881;1500;0;0;0;0;0;0;0
+-4.5;5;5888;0.7402;870;1500;0;0;0;0;0;0;0
+-4.4;5;5888;0.7402;860;1500;0;0;0;0;0;0;0
+-4.3;5;5888;0.7402;849;1500;0;0;0;0;0;0;0
+-4.2;5;5888;0.7402;839;1500;0;0;0;0;0;0;0
+-4.1;5;5888;0.7402;829;1500;0;0;0;0;0;0;0
+-4;5;5888;0.7402;818;1500;0;0;0;0;0;0;0
+-3.9;5;5888;0.7402;808;1500;0;0;0;0;0;0;0
+-3.8;5;5888;0.7402;799;1500;0;0;0;0;0;0;0
+-3.7;5;5888;0.7402;789;1500;0;0;0;0;0;0;0
+-3.6;5;5888;0.7402;779;1500;0;0;0;0;0;0;0
+-3.5;5;5888;0.7402;770;1500;0;0;0;0;0;0;0
+-3.4;5;5888;0.7402;760;1500;0;0;0;0;0;0;0
+-3.3;5;5888;0.7402;751;1500;0;0;0;0;0;0;0
+-3.2;5;5888;0.7402;742;1500;0;0;0;0;0;0;0
+-3.1;5;5888;0.7402;733;1500;0;0;0;0;0;0;0
+-3;5;5888;0.7402;724;1500;0;0;0;0;0;0;0
+-2.9;5;5888;0.7402;699;1500;0;0;0;0;0;0;0
+-2.8;5;5888;0.7402;676;1500;0;0;0;0;0;0;0
+-2.7;5;5888;0.7402;653;1500;0;0;0;0;0;0;0
+-2.6;5;5888;0.7402;631;1500;0;0;0;0;0;0;0
+-2.5;5;5888;0.7402;610;1500;0;0;0;0;0;0;0
+-2.4;5;5888;0.7402;589;1500;0;0;0;0;0;0;0
+-2.3;5;5888;0.7402;569;1500;0;0;0;0;0;0;0
+-2.2;5;5888;0.7402;550;1500;0;0;0;0;0;0;0
+-2.1;5;5888;0.7402;531;1500;0;0;0;0;0;0;0
+-2;5;5888;0.7402;514;1500;0;0;0;0;0;0;0
+-1.9;5;5888;0.7402;496;1500;0;0;0;0;0;0;0
+-1.8;5;5888;0.7402;480;1500;0;0;0;0;0;0;0
+-1.7;5;5888;0.7402;463;1500;0;0;0;0;0;0;0
+-1.6;5;5888;0.7402;448;1500;0;0;0;0;0;0;0
+-1.5;5;5888;0.7402;433;1500;0;0;0;0;0;0;0
+-1.4;5;5888;0.7402;418;1500;0;0;0;0;0;0;0
+-1.3;5;5888;0.7402;404;1500;0;0;0;0;0;0;0
+-1.2;5;5888;0.7402;390;1500;0;0;0;0;0;0;0
+-1.1;5;5888;0.7402;377;1500;0;0;0;0;0;0;0
+-1;5;5888;0.7402;364;1500;0;0;0;0;0;0;0
+-0.9;5;5888;0.7402;352;1500;0;0;0;0;0;0;0
+-0.8;5;5888;0.7402;340;1500;0;0;0;0;0;0;0
+-0.7;5;5888;0.7402;329;1500;0;0;0;0;0;0;0
+-0.6;5;5888;0.7402;318;1500;0;0;0;0;0;0;0
+-0.5;5;5888;0.7402;307;1500;0;0;0;0;0;0;0
+-0.4;5;5888;0.7402;297;1500;0;0;0;0;0;0;0
+-0.3;5;5888;0.7402;287;1500;0;0;0;0;0;0;0
+-0.2;5;5888;0.7402;277;1500;0;0;0;0;0;0;0
+-0.1;5;5888;0.7402;268;1500;0;0;0;0;0;0;0
+0;5;5888;0.7402;259;1500;0;0;0;0;0;0;0
+0.1;5;5888;0.7402;236;1500;0;0;0;0;0;0;0
+0.2;5;5888;0.7402;216;1500;0;0;0;0;0;0;0
+0.3;5;5888;0.7402;197;1500;0;0;0;0;0;0;0
+0.4;5;5888;0.7402;180;1500;0;0;0;0;0;0;0
+0.5;5;5888;0.7402;164;1500;0;0;0;0;0;0;0
+0.6;5;5888;0.7402;150;1500;0;0;0;0;0;0;0
+0.7;5;5888;0.7402;137;1500;0;0;0;0;0;0;0
+0.8;5;5888;0.7402;125;1500;0;0;0;0;0;0;0
+0.9;5;5888;0.7402;114;1500;0;0;0;0;0;0;0
+1;5;5888;0.7402;104;1500;0;0;0;0;0;0;0
+1.1;5;5888;0.7402;95;1500;0;0;0;0;0;0;0
+1.2;5;5888;0.7402;86;1500;0;0;0;0;0;0;0
+1.3;5;5888;0.7402;79;1500;0;0;0;0;0;0;0
+1.4;5;5888;0.7402;72;1500;0;0;0;0;0;0;0
+1.5;5;5888;0.7402;66;1500;0;0;0;0;0;0;0
+1.6;5;5888;0.7402;60;1500;0;0;0;0;0;0;0
+1.7;5;5888;0.7402;55;1500;0;0;0;0;0;0;0
+1.8;5;5888;0.7402;50;1500;0;0;0;0;0;0;0
+1.9;5;5888;0.7402;46;1500;0;0;0;0;0;0;0
+2;5;5888;0.7402;42;1500;0;0;0;0;0;0;0
+2.1;5;5888;0.7402;38;1500;0;0;0;0;0;0;0
+2.2;5;5888;0.7402;35;1500;0;0;0;0;0;0;0
+2.3;5;5888;0.7402;32;1500;0;0;0;0;0;0;0
+2.4;5;5888;0.7402;29;1500;0;0;0;0;0;0;0
+2.5;5;5888;0.7402;26;1500;0;0;0;0;0;0;0
+2.6;5;5888;0.7402;24;1500;0;0;0;0;0;0;0
+2.7;5;5888;0.7402;22;1500;0;0;0;0;0;0;0
+2.8;5;5888;0.7402;20;1500;0;0;0;0;0;0;0
+2.9;5;5888;0.7402;18;1500;0;0;0;0;0;0;0
+3;5;5888;0.7402;17;1500;0;0;0;0;0;0;0
+3.1;5;5888;0.7402;0;1500;0;0;0;0;0;0;0
diff --git a/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs6_cdlc_mimo2x2_dl.csv b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs6_cdlc_mimo2x2_dl.csv
new file mode 100644
index 0000000000..4efacec585
--- /dev/null
+++ b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs6_cdlc_mimo2x2_dl.csv
@@ -0,0 +1,153 @@
+SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
+-9;6;6912;0.877;1438;1500;0;0;0;0;0;0;0
+-8.9;6;6912;0.877;1427;1500;0;0;0;0;0;0;0
+-8.8;6;6912;0.877;1415;1500;0;0;0;0;0;0;0
+-8.7;6;6912;0.877;1404;1500;0;0;0;0;0;0;0
+-8.6;6;6912;0.877;1393;1500;0;0;0;0;0;0;0
+-8.5;6;6912;0.877;1382;1500;0;0;0;0;0;0;0
+-8.4;6;6912;0.877;1371;1500;0;0;0;0;0;0;0
+-8.3;6;6912;0.877;1360;1500;0;0;0;0;0;0;0
+-8.2;6;6912;0.877;1349;1500;0;0;0;0;0;0;0
+-8.1;6;6912;0.877;1338;1500;0;0;0;0;0;0;0
+-8;6;6912;0.877;1328;1500;0;0;0;0;0;0;0
+-7.9;6;6912;0.877;1317;1500;0;0;0;0;0;0;0
+-7.8;6;6912;0.877;1307;1500;0;0;0;0;0;0;0
+-7.7;6;6912;0.877;1296;1500;0;0;0;0;0;0;0
+-7.6;6;6912;0.877;1286;1500;0;0;0;0;0;0;0
+-7.5;6;6912;0.877;1276;1500;0;0;0;0;0;0;0
+-7.4;6;6912;0.877;1266;1500;0;0;0;0;0;0;0
+-7.3;6;6912;0.877;1256;1500;0;0;0;0;0;0;0
+-7.2;6;6912;0.877;1246;1500;0;0;0;0;0;0;0
+-7.1;6;6912;0.877;1236;1500;0;0;0;0;0;0;0
+-7;6;6912;0.877;1226;1500;0;0;0;0;0;0;0
+-6.9;6;6912;0.877;1216;1500;0;0;0;0;0;0;0
+-6.8;6;6912;0.877;1207;1500;0;0;0;0;0;0;0
+-6.7;6;6912;0.877;1197;1500;0;0;0;0;0;0;0
+-6.6;6;6912;0.877;1187;1500;0;0;0;0;0;0;0
+-6.5;6;6912;0.877;1178;1500;0;0;0;0;0;0;0
+-6.4;6;6912;0.877;1169;1500;0;0;0;0;0;0;0
+-6.3;6;6912;0.877;1159;1500;0;0;0;0;0;0;0
+-6.2;6;6912;0.877;1150;1500;0;0;0;0;0;0;0
+-6.1;6;6912;0.877;1141;1500;0;0;0;0;0;0;0
+-6;6;6912;0.877;1132;1500;0;0;0;0;0;0;0
+-5.9;6;6912;0.877;1120;1500;0;0;0;0;0;0;0
+-5.8;6;6912;0.877;1109;1500;0;0;0;0;0;0;0
+-5.7;6;6912;0.877;1097;1500;0;0;0;0;0;0;0
+-5.6;6;6912;0.877;1086;1500;0;0;0;0;0;0;0
+-5.5;6;6912;0.877;1075;1500;0;0;0;0;0;0;0
+-5.4;6;6912;0.877;1064;1500;0;0;0;0;0;0;0
+-5.3;6;6912;0.877;1053;1500;0;0;0;0;0;0;0
+-5.2;6;6912;0.877;1042;1500;0;0;0;0;0;0;0
+-5.1;6;6912;0.877;1031;1500;0;0;0;0;0;0;0
+-5;6;6912;0.877;1021;1500;0;0;0;0;0;0;0
+-4.9;6;6912;0.877;1010;1500;0;0;0;0;0;0;0
+-4.8;6;6912;0.877;1000;1500;0;0;0;0;0;0;0
+-4.7;6;6912;0.877;989;1500;0;0;0;0;0;0;0
+-4.6;6;6912;0.877;979;1500;0;0;0;0;0;0;0
+-4.5;6;6912;0.877;969;1500;0;0;0;0;0;0;0
+-4.4;6;6912;0.877;959;1500;0;0;0;0;0;0;0
+-4.3;6;6912;0.877;949;1500;0;0;0;0;0;0;0
+-4.2;6;6912;0.877;940;1500;0;0;0;0;0;0;0
+-4.1;6;6912;0.877;930;1500;0;0;0;0;0;0;0
+-4;6;6912;0.877;920;1500;0;0;0;0;0;0;0
+-3.9;6;6912;0.877;911;1500;0;0;0;0;0;0;0
+-3.8;6;6912;0.877;901;1500;0;0;0;0;0;0;0
+-3.7;6;6912;0.877;892;1500;0;0;0;0;0;0;0
+-3.6;6;6912;0.877;883;1500;0;0;0;0;0;0;0
+-3.5;6;6912;0.877;874;1500;0;0;0;0;0;0;0
+-3.4;6;6912;0.877;865;1500;0;0;0;0;0;0;0
+-3.3;6;6912;0.877;856;1500;0;0;0;0;0;0;0
+-3.2;6;6912;0.877;847;1500;0;0;0;0;0;0;0
+-3.1;6;6912;0.877;838;1500;0;0;0;0;0;0;0
+-3;6;6912;0.877;830;1500;0;0;0;0;0;0;0
+-2.9;6;6912;0.877;812;1500;0;0;0;0;0;0;0
+-2.8;6;6912;0.877;794;1500;0;0;0;0;0;0;0
+-2.7;6;6912;0.877;777;1500;0;0;0;0;0;0;0
+-2.6;6;6912;0.877;760;1500;0;0;0;0;0;0;0
+-2.5;6;6912;0.877;743;1500;0;0;0;0;0;0;0
+-2.4;6;6912;0.877;727;1500;0;0;0;0;0;0;0
+-2.3;6;6912;0.877;711;1500;0;0;0;0;0;0;0
+-2.2;6;6912;0.877;696;1500;0;0;0;0;0;0;0
+-2.1;6;6912;0.877;680;1500;0;0;0;0;0;0;0
+-2;6;6912;0.877;666;1500;0;0;0;0;0;0;0
+-1.9;6;6912;0.877;651;1500;0;0;0;0;0;0;0
+-1.8;6;6912;0.877;637;1500;0;0;0;0;0;0;0
+-1.7;6;6912;0.877;623;1500;0;0;0;0;0;0;0
+-1.6;6;6912;0.877;609;1500;0;0;0;0;0;0;0
+-1.5;6;6912;0.877;596;1500;0;0;0;0;0;0;0
+-1.4;6;6912;0.877;583;1500;0;0;0;0;0;0;0
+-1.3;6;6912;0.877;570;1500;0;0;0;0;0;0;0
+-1.2;6;6912;0.877;558;1500;0;0;0;0;0;0;0
+-1.1;6;6912;0.877;546;1500;0;0;0;0;0;0;0
+-1;6;6912;0.877;534;1500;0;0;0;0;0;0;0
+-0.9;6;6912;0.877;522;1500;0;0;0;0;0;0;0
+-0.8;6;6912;0.877;511;1500;0;0;0;0;0;0;0
+-0.7;6;6912;0.877;500;1500;0;0;0;0;0;0;0
+-0.6;6;6912;0.877;489;1500;0;0;0;0;0;0;0
+-0.5;6;6912;0.877;478;1500;0;0;0;0;0;0;0
+-0.4;6;6912;0.877;468;1500;0;0;0;0;0;0;0
+-0.3;6;6912;0.877;458;1500;0;0;0;0;0;0;0
+-0.2;6;6912;0.877;448;1500;0;0;0;0;0;0;0
+-0.1;6;6912;0.877;438;1500;0;0;0;0;0;0;0
+0;6;6912;0.877;428;1500;0;0;0;0;0;0;0
+0.1;6;6912;0.877;405;1500;0;0;0;0;0;0;0
+0.2;6;6912;0.877;382;1500;0;0;0;0;0;0;0
+0.3;6;6912;0.877;361;1500;0;0;0;0;0;0;0
+0.4;6;6912;0.877;341;1500;0;0;0;0;0;0;0
+0.5;6;6912;0.877;322;1500;0;0;0;0;0;0;0
+0.6;6;6912;0.877;305;1500;0;0;0;0;0;0;0
+0.7;6;6912;0.877;288;1500;0;0;0;0;0;0;0
+0.8;6;6912;0.877;272;1500;0;0;0;0;0;0;0
+0.9;6;6912;0.877;257;1500;0;0;0;0;0;0;0
+1;6;6912;0.877;243;1500;0;0;0;0;0;0;0
+1.1;6;6912;0.877;229;1500;0;0;0;0;0;0;0
+1.2;6;6912;0.877;217;1500;0;0;0;0;0;0;0
+1.3;6;6912;0.877;205;1500;0;0;0;0;0;0;0
+1.4;6;6912;0.877;193;1500;0;0;0;0;0;0;0
+1.5;6;6912;0.877;183;1500;0;0;0;0;0;0;0
+1.6;6;6912;0.877;173;1500;0;0;0;0;0;0;0
+1.7;6;6912;0.877;163;1500;0;0;0;0;0;0;0
+1.8;6;6912;0.877;154;1500;0;0;0;0;0;0;0
+1.9;6;6912;0.877;146;1500;0;0;0;0;0;0;0
+2;6;6912;0.877;138;1500;0;0;0;0;0;0;0
+2.1;6;6912;0.877;130;1500;0;0;0;0;0;0;0
+2.2;6;6912;0.877;123;1500;0;0;0;0;0;0;0
+2.3;6;6912;0.877;116;1500;0;0;0;0;0;0;0
+2.4;6;6912;0.877;110;1500;0;0;0;0;0;0;0
+2.5;6;6912;0.877;104;1500;0;0;0;0;0;0;0
+2.6;6;6912;0.877;98;1500;0;0;0;0;0;0;0
+2.7;6;6912;0.877;92;1500;0;0;0;0;0;0;0
+2.8;6;6912;0.877;87;1500;0;0;0;0;0;0;0
+2.9;6;6912;0.877;83;1500;0;0;0;0;0;0;0
+3;6;6912;0.877;78;1500;0;0;0;0;0;0;0
+3.1;6;6912;0.877;67;1500;0;0;0;0;0;0;0
+3.2;6;6912;0.877;58;1500;0;0;0;0;0;0;0
+3.3;6;6912;0.877;50;1500;0;0;0;0;0;0;0
+3.4;6;6912;0.877;43;1500;0;0;0;0;0;0;0
+3.5;6;6912;0.877;37;1500;0;0;0;0;0;0;0
+3.6;6;6912;0.877;32;1500;0;0;0;0;0;0;0
+3.7;6;6912;0.877;28;1500;0;0;0;0;0;0;0
+3.8;6;6912;0.877;24;1500;0;0;0;0;0;0;0
+3.9;6;6912;0.877;20;1500;0;0;0;0;0;0;0
+4;6;6912;0.877;18;1500;0;0;0;0;0;0;0
+4.1;6;6912;0.877;15;1500;0;0;0;0;0;0;0
+4.2;6;6912;0.877;13;1500;0;0;0;0;0;0;0
+4.3;6;6912;0.877;11;1500;0;0;0;0;0;0;0
+4.4;6;6912;0.877;10;1500;0;0;0;0;0;0;0
+4.5;6;6912;0.877;8;1500;0;0;0;0;0;0;0
+4.6;6;6912;0.877;7;1500;0;0;0;0;0;0;0
+4.7;6;6912;0.877;6;1500;0;0;0;0;0;0;0
+4.8;6;6912;0.877;5;1500;0;0;0;0;0;0;0
+4.9;6;6912;0.877;5;1500;0;0;0;0;0;0;0
+5;6;6912;0.877;4;1500;0;0;0;0;0;0;0
+5.1;6;6912;0.877;3;1500;0;0;0;0;0;0;0
+5.2;6;6912;0.877;3;1500;0;0;0;0;0;0;0
+5.3;6;6912;0.877;3;1500;0;0;0;0;0;0;0
+5.4;6;6912;0.877;2;1500;0;0;0;0;0;0;0
+5.5;6;6912;0.877;2;1500;0;0;0;0;0;0;0
+5.6;6;6912;0.877;2;1500;0;0;0;0;0;0;0
+5.7;6;6912;0.877;1;1500;0;0;0;0;0;0;0
+5.8;6;6912;0.877;1;1500;0;0;0;0;0;0;0
+5.9;6;6912;0.877;1;1500;0;0;0;0;0;0;0
+6;6;6912;0.877;1;1500;0;0;0;0;0;0;0
+6.1;6;6912;0.877;0;1500;0;0;0;0;0;0;0
diff --git a/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs7_cdlc_mimo2x2_dl.csv b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs7_cdlc_mimo2x2_dl.csv
new file mode 100644
index 0000000000..98975493a3
--- /dev/null
+++ b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs7_cdlc_mimo2x2_dl.csv
@@ -0,0 +1,153 @@
+SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
+-9;7;8912;1.0273;1489;1500;0;0;0;0;0;0;0
+-8.9;7;8912;1.0273;1480;1500;0;0;0;0;0;0;0
+-8.8;7;8912;1.0273;1471;1500;0;0;0;0;0;0;0
+-8.7;7;8912;1.0273;1462;1500;0;0;0;0;0;0;0
+-8.6;7;8912;1.0273;1453;1500;0;0;0;0;0;0;0
+-8.5;7;8912;1.0273;1444;1500;0;0;0;0;0;0;0
+-8.4;7;8912;1.0273;1436;1500;0;0;0;0;0;0;0
+-8.3;7;8912;1.0273;1427;1500;0;0;0;0;0;0;0
+-8.2;7;8912;1.0273;1418;1500;0;0;0;0;0;0;0
+-8.1;7;8912;1.0273;1410;1500;0;0;0;0;0;0;0
+-8;7;8912;1.0273;1401;1500;0;0;0;0;0;0;0
+-7.9;7;8912;1.0273;1393;1500;0;0;0;0;0;0;0
+-7.8;7;8912;1.0273;1384;1500;0;0;0;0;0;0;0
+-7.7;7;8912;1.0273;1376;1500;0;0;0;0;0;0;0
+-7.6;7;8912;1.0273;1368;1500;0;0;0;0;0;0;0
+-7.5;7;8912;1.0273;1359;1500;0;0;0;0;0;0;0
+-7.4;7;8912;1.0273;1351;1500;0;0;0;0;0;0;0
+-7.3;7;8912;1.0273;1343;1500;0;0;0;0;0;0;0
+-7.2;7;8912;1.0273;1335;1500;0;0;0;0;0;0;0
+-7.1;7;8912;1.0273;1327;1500;0;0;0;0;0;0;0
+-7;7;8912;1.0273;1319;1500;0;0;0;0;0;0;0
+-6.9;7;8912;1.0273;1311;1500;0;0;0;0;0;0;0
+-6.8;7;8912;1.0273;1303;1500;0;0;0;0;0;0;0
+-6.7;7;8912;1.0273;1295;1500;0;0;0;0;0;0;0
+-6.6;7;8912;1.0273;1287;1500;0;0;0;0;0;0;0
+-6.5;7;8912;1.0273;1280;1500;0;0;0;0;0;0;0
+-6.4;7;8912;1.0273;1272;1500;0;0;0;0;0;0;0
+-6.3;7;8912;1.0273;1264;1500;0;0;0;0;0;0;0
+-6.2;7;8912;1.0273;1257;1500;0;0;0;0;0;0;0
+-6.1;7;8912;1.0273;1249;1500;0;0;0;0;0;0;0
+-6;7;8912;1.0273;1241;1500;0;0;0;0;0;0;0
+-5.9;7;8912;1.0273;1229;1500;0;0;0;0;0;0;0
+-5.8;7;8912;1.0273;1216;1500;0;0;0;0;0;0;0
+-5.7;7;8912;1.0273;1203;1500;0;0;0;0;0;0;0
+-5.6;7;8912;1.0273;1191;1500;0;0;0;0;0;0;0
+-5.5;7;8912;1.0273;1178;1500;0;0;0;0;0;0;0
+-5.4;7;8912;1.0273;1166;1500;0;0;0;0;0;0;0
+-5.3;7;8912;1.0273;1154;1500;0;0;0;0;0;0;0
+-5.2;7;8912;1.0273;1142;1500;0;0;0;0;0;0;0
+-5.1;7;8912;1.0273;1130;1500;0;0;0;0;0;0;0
+-5;7;8912;1.0273;1119;1500;0;0;0;0;0;0;0
+-4.9;7;8912;1.0273;1107;1500;0;0;0;0;0;0;0
+-4.8;7;8912;1.0273;1096;1500;0;0;0;0;0;0;0
+-4.7;7;8912;1.0273;1084;1500;0;0;0;0;0;0;0
+-4.6;7;8912;1.0273;1073;1500;0;0;0;0;0;0;0
+-4.5;7;8912;1.0273;1062;1500;0;0;0;0;0;0;0
+-4.4;7;8912;1.0273;1051;1500;0;0;0;0;0;0;0
+-4.3;7;8912;1.0273;1040;1500;0;0;0;0;0;0;0
+-4.2;7;8912;1.0273;1029;1500;0;0;0;0;0;0;0
+-4.1;7;8912;1.0273;1019;1500;0;0;0;0;0;0;0
+-4;7;8912;1.0273;1008;1500;0;0;0;0;0;0;0
+-3.9;7;8912;1.0273;998;1500;0;0;0;0;0;0;0
+-3.8;7;8912;1.0273;987;1500;0;0;0;0;0;0;0
+-3.7;7;8912;1.0273;977;1500;0;0;0;0;0;0;0
+-3.6;7;8912;1.0273;967;1500;0;0;0;0;0;0;0
+-3.5;7;8912;1.0273;957;1500;0;0;0;0;0;0;0
+-3.4;7;8912;1.0273;947;1500;0;0;0;0;0;0;0
+-3.3;7;8912;1.0273;937;1500;0;0;0;0;0;0;0
+-3.2;7;8912;1.0273;927;1500;0;0;0;0;0;0;0
+-3.1;7;8912;1.0273;918;1500;0;0;0;0;0;0;0
+-3;7;8912;1.0273;908;1500;0;0;0;0;0;0;0
+-2.9;7;8912;1.0273;897;1500;0;0;0;0;0;0;0
+-2.8;7;8912;1.0273;887;1500;0;0;0;0;0;0;0
+-2.7;7;8912;1.0273;876;1500;0;0;0;0;0;0;0
+-2.6;7;8912;1.0273;866;1500;0;0;0;0;0;0;0
+-2.5;7;8912;1.0273;856;1500;0;0;0;0;0;0;0
+-2.4;7;8912;1.0273;846;1500;0;0;0;0;0;0;0
+-2.3;7;8912;1.0273;836;1500;0;0;0;0;0;0;0
+-2.2;7;8912;1.0273;826;1500;0;0;0;0;0;0;0
+-2.1;7;8912;1.0273;816;1500;0;0;0;0;0;0;0
+-2;7;8912;1.0273;806;1500;0;0;0;0;0;0;0
+-1.9;7;8912;1.0273;797;1500;0;0;0;0;0;0;0
+-1.8;7;8912;1.0273;787;1500;0;0;0;0;0;0;0
+-1.7;7;8912;1.0273;778;1500;0;0;0;0;0;0;0
+-1.6;7;8912;1.0273;769;1500;0;0;0;0;0;0;0
+-1.5;7;8912;1.0273;760;1500;0;0;0;0;0;0;0
+-1.4;7;8912;1.0273;751;1500;0;0;0;0;0;0;0
+-1.3;7;8912;1.0273;742;1500;0;0;0;0;0;0;0
+-1.2;7;8912;1.0273;733;1500;0;0;0;0;0;0;0
+-1.1;7;8912;1.0273;724;1500;0;0;0;0;0;0;0
+-1;7;8912;1.0273;716;1500;0;0;0;0;0;0;0
+-0.9;7;8912;1.0273;707;1500;0;0;0;0;0;0;0
+-0.8;7;8912;1.0273;699;1500;0;0;0;0;0;0;0
+-0.7;7;8912;1.0273;691;1500;0;0;0;0;0;0;0
+-0.6;7;8912;1.0273;682;1500;0;0;0;0;0;0;0
+-0.5;7;8912;1.0273;674;1500;0;0;0;0;0;0;0
+-0.4;7;8912;1.0273;666;1500;0;0;0;0;0;0;0
+-0.3;7;8912;1.0273;658;1500;0;0;0;0;0;0;0
+-0.2;7;8912;1.0273;651;1500;0;0;0;0;0;0;0
+-0.1;7;8912;1.0273;643;1500;0;0;0;0;0;0;0
+0;7;8912;1.0273;635;1500;0;0;0;0;0;0;0
+0.1;7;8912;1.0273;614;1500;0;0;0;0;0;0;0
+0.2;7;8912;1.0273;593;1500;0;0;0;0;0;0;0
+0.3;7;8912;1.0273;574;1500;0;0;0;0;0;0;0
+0.4;7;8912;1.0273;554;1500;0;0;0;0;0;0;0
+0.5;7;8912;1.0273;536;1500;0;0;0;0;0;0;0
+0.6;7;8912;1.0273;518;1500;0;0;0;0;0;0;0
+0.7;7;8912;1.0273;500;1500;0;0;0;0;0;0;0
+0.8;7;8912;1.0273;484;1500;0;0;0;0;0;0;0
+0.9;7;8912;1.0273;467;1500;0;0;0;0;0;0;0
+1;7;8912;1.0273;452;1500;0;0;0;0;0;0;0
+1.1;7;8912;1.0273;437;1500;0;0;0;0;0;0;0
+1.2;7;8912;1.0273;422;1500;0;0;0;0;0;0;0
+1.3;7;8912;1.0273;408;1500;0;0;0;0;0;0;0
+1.4;7;8912;1.0273;394;1500;0;0;0;0;0;0;0
+1.5;7;8912;1.0273;381;1500;0;0;0;0;0;0;0
+1.6;7;8912;1.0273;368;1500;0;0;0;0;0;0;0
+1.7;7;8912;1.0273;356;1500;0;0;0;0;0;0;0
+1.8;7;8912;1.0273;344;1500;0;0;0;0;0;0;0
+1.9;7;8912;1.0273;332;1500;0;0;0;0;0;0;0
+2;7;8912;1.0273;321;1500;0;0;0;0;0;0;0
+2.1;7;8912;1.0273;310;1500;0;0;0;0;0;0;0
+2.2;7;8912;1.0273;300;1500;0;0;0;0;0;0;0
+2.3;7;8912;1.0273;290;1500;0;0;0;0;0;0;0
+2.4;7;8912;1.0273;280;1500;0;0;0;0;0;0;0
+2.5;7;8912;1.0273;271;1500;0;0;0;0;0;0;0
+2.6;7;8912;1.0273;262;1500;0;0;0;0;0;0;0
+2.7;7;8912;1.0273;253;1500;0;0;0;0;0;0;0
+2.8;7;8912;1.0273;244;1500;0;0;0;0;0;0;0
+2.9;7;8912;1.0273;236;1500;0;0;0;0;0;0;0
+3;7;8912;1.0273;228;1500;0;0;0;0;0;0;0
+3.1;7;8912;1.0273;213;1500;0;0;0;0;0;0;0
+3.2;7;8912;1.0273;198;1500;0;0;0;0;0;0;0
+3.3;7;8912;1.0273;185;1500;0;0;0;0;0;0;0
+3.4;7;8912;1.0273;172;1500;0;0;0;0;0;0;0
+3.5;7;8912;1.0273;160;1500;0;0;0;0;0;0;0
+3.6;7;8912;1.0273;149;1500;0;0;0;0;0;0;0
+3.7;7;8912;1.0273;139;1500;0;0;0;0;0;0;0
+3.8;7;8912;1.0273;130;1500;0;0;0;0;0;0;0
+3.9;7;8912;1.0273;121;1500;0;0;0;0;0;0;0
+4;7;8912;1.0273;112;1500;0;0;0;0;0;0;0
+4.1;7;8912;1.0273;105;1500;0;0;0;0;0;0;0
+4.2;7;8912;1.0273;98;1500;0;0;0;0;0;0;0
+4.3;7;8912;1.0273;91;1500;0;0;0;0;0;0;0
+4.4;7;8912;1.0273;85;1500;0;0;0;0;0;0;0
+4.5;7;8912;1.0273;79;1500;0;0;0;0;0;0;0
+4.6;7;8912;1.0273;74;1500;0;0;0;0;0;0;0
+4.7;7;8912;1.0273;69;1500;0;0;0;0;0;0;0
+4.8;7;8912;1.0273;64;1500;0;0;0;0;0;0;0
+4.9;7;8912;1.0273;59;1500;0;0;0;0;0;0;0
+5;7;8912;1.0273;55;1500;0;0;0;0;0;0;0
+5.1;7;8912;1.0273;52;1500;0;0;0;0;0;0;0
+5.2;7;8912;1.0273;48;1500;0;0;0;0;0;0;0
+5.3;7;8912;1.0273;45;1500;0;0;0;0;0;0;0
+5.4;7;8912;1.0273;42;1500;0;0;0;0;0;0;0
+5.5;7;8912;1.0273;39;1500;0;0;0;0;0;0;0
+5.6;7;8912;1.0273;36;1500;0;0;0;0;0;0;0
+5.7;7;8912;1.0273;34;1500;0;0;0;0;0;0;0
+5.8;7;8912;1.0273;31;1500;0;0;0;0;0;0;0
+5.9;7;8912;1.0273;29;1500;0;0;0;0;0;0;0
+6;7;8912;1.0273;27;1500;0;0;0;0;0;0;0
+6.1;7;8912;1.0273;0;1500;0;0;0;0;0;0;0
diff --git a/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs8_cdlc_mimo2x2_dl.csv b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs8_cdlc_mimo2x2_dl.csv
new file mode 100644
index 0000000000..9e70c14ea7
--- /dev/null
+++ b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs8_cdlc_mimo2x2_dl.csv
@@ -0,0 +1,155 @@
+SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
+-9;8;9924;1.1758;1495;1500;0;0;0;0;0;0;0
+-8.9;8;9924;1.1758;1489;1500;0;0;0;0;0;0;0
+-8.8;8;9924;1.1758;1482;1500;0;0;0;0;0;0;0
+-8.7;8;9924;1.1758;1475;1500;0;0;0;0;0;0;0
+-8.6;8;9924;1.1758;1468;1500;0;0;0;0;0;0;0
+-8.5;8;9924;1.1758;1462;1500;0;0;0;0;0;0;0
+-8.4;8;9924;1.1758;1455;1500;0;0;0;0;0;0;0
+-8.3;8;9924;1.1758;1449;1500;0;0;0;0;0;0;0
+-8.2;8;9924;1.1758;1442;1500;0;0;0;0;0;0;0
+-8.1;8;9924;1.1758;1436;1500;0;0;0;0;0;0;0
+-8;8;9924;1.1758;1429;1500;0;0;0;0;0;0;0
+-7.9;8;9924;1.1758;1423;1500;0;0;0;0;0;0;0
+-7.8;8;9924;1.1758;1416;1500;0;0;0;0;0;0;0
+-7.7;8;9924;1.1758;1410;1500;0;0;0;0;0;0;0
+-7.6;8;9924;1.1758;1404;1500;0;0;0;0;0;0;0
+-7.5;8;9924;1.1758;1397;1500;0;0;0;0;0;0;0
+-7.4;8;9924;1.1758;1391;1500;0;0;0;0;0;0;0
+-7.3;8;9924;1.1758;1385;1500;0;0;0;0;0;0;0
+-7.2;8;9924;1.1758;1378;1500;0;0;0;0;0;0;0
+-7.1;8;9924;1.1758;1372;1500;0;0;0;0;0;0;0
+-7;8;9924;1.1758;1366;1500;0;0;0;0;0;0;0
+-6.9;8;9924;1.1758;1360;1500;0;0;0;0;0;0;0
+-6.8;8;9924;1.1758;1354;1500;0;0;0;0;0;0;0
+-6.7;8;9924;1.1758;1348;1500;0;0;0;0;0;0;0
+-6.6;8;9924;1.1758;1342;1500;0;0;0;0;0;0;0
+-6.5;8;9924;1.1758;1335;1500;0;0;0;0;0;0;0
+-6.4;8;9924;1.1758;1329;1500;0;0;0;0;0;0;0
+-6.3;8;9924;1.1758;1323;1500;0;0;0;0;0;0;0
+-6.2;8;9924;1.1758;1317;1500;0;0;0;0;0;0;0
+-6.1;8;9924;1.1758;1312;1500;0;0;0;0;0;0;0
+-6;8;9924;1.1758;1306;1500;0;0;0;0;0;0;0
+-5.9;8;9924;1.1758;1293;1500;0;0;0;0;0;0;0
+-5.8;8;9924;1.1758;1280;1500;0;0;0;0;0;0;0
+-5.7;8;9924;1.1758;1268;1500;0;0;0;0;0;0;0
+-5.6;8;9924;1.1758;1256;1500;0;0;0;0;0;0;0
+-5.5;8;9924;1.1758;1244;1500;0;0;0;0;0;0;0
+-5.4;8;9924;1.1758;1232;1500;0;0;0;0;0;0;0
+-5.3;8;9924;1.1758;1220;1500;0;0;0;0;0;0;0
+-5.2;8;9924;1.1758;1208;1500;0;0;0;0;0;0;0
+-5.1;8;9924;1.1758;1196;1500;0;0;0;0;0;0;0
+-5;8;9924;1.1758;1185;1500;0;0;0;0;0;0;0
+-4.9;8;9924;1.1758;1173;1500;0;0;0;0;0;0;0
+-4.8;8;9924;1.1758;1162;1500;0;0;0;0;0;0;0
+-4.7;8;9924;1.1758;1150;1500;0;0;0;0;0;0;0
+-4.6;8;9924;1.1758;1139;1500;0;0;0;0;0;0;0
+-4.5;8;9924;1.1758;1128;1500;0;0;0;0;0;0;0
+-4.4;8;9924;1.1758;1117;1500;0;0;0;0;0;0;0
+-4.3;8;9924;1.1758;1107;1500;0;0;0;0;0;0;0
+-4.2;8;9924;1.1758;1096;1500;0;0;0;0;0;0;0
+-4.1;8;9924;1.1758;1085;1500;0;0;0;0;0;0;0
+-4;8;9924;1.1758;1075;1500;0;0;0;0;0;0;0
+-3.9;8;9924;1.1758;1064;1500;0;0;0;0;0;0;0
+-3.8;8;9924;1.1758;1054;1500;0;0;0;0;0;0;0
+-3.7;8;9924;1.1758;1044;1500;0;0;0;0;0;0;0
+-3.6;8;9924;1.1758;1034;1500;0;0;0;0;0;0;0
+-3.5;8;9924;1.1758;1024;1500;0;0;0;0;0;0;0
+-3.4;8;9924;1.1758;1014;1500;0;0;0;0;0;0;0
+-3.3;8;9924;1.1758;1004;1500;0;0;0;0;0;0;0
+-3.2;8;9924;1.1758;994;1500;0;0;0;0;0;0;0
+-3.1;8;9924;1.1758;985;1500;0;0;0;0;0;0;0
+-3;8;9924;1.1758;975;1500;0;0;0;0;0;0;0
+-2.9;8;9924;1.1758;966;1500;0;0;0;0;0;0;0
+-2.8;8;9924;1.1758;957;1500;0;0;0;0;0;0;0
+-2.7;8;9924;1.1758;949;1500;0;0;0;0;0;0;0
+-2.6;8;9924;1.1758;940;1500;0;0;0;0;0;0;0
+-2.5;8;9924;1.1758;932;1500;0;0;0;0;0;0;0
+-2.4;8;9924;1.1758;923;1500;0;0;0;0;0;0;0
+-2.3;8;9924;1.1758;915;1500;0;0;0;0;0;0;0
+-2.2;8;9924;1.1758;907;1500;0;0;0;0;0;0;0
+-2.1;8;9924;1.1758;898;1500;0;0;0;0;0;0;0
+-2;8;9924;1.1758;890;1500;0;0;0;0;0;0;0
+-1.9;8;9924;1.1758;882;1500;0;0;0;0;0;0;0
+-1.8;8;9924;1.1758;874;1500;0;0;0;0;0;0;0
+-1.7;8;9924;1.1758;866;1500;0;0;0;0;0;0;0
+-1.6;8;9924;1.1758;858;1500;0;0;0;0;0;0;0
+-1.5;8;9924;1.1758;851;1500;0;0;0;0;0;0;0
+-1.4;8;9924;1.1758;843;1500;0;0;0;0;0;0;0
+-1.3;8;9924;1.1758;835;1500;0;0;0;0;0;0;0
+-1.2;8;9924;1.1758;828;1500;0;0;0;0;0;0;0
+-1.1;8;9924;1.1758;820;1500;0;0;0;0;0;0;0
+-1;8;9924;1.1758;813;1500;0;0;0;0;0;0;0
+-0.9;8;9924;1.1758;805;1500;0;0;0;0;0;0;0
+-0.8;8;9924;1.1758;798;1500;0;0;0;0;0;0;0
+-0.7;8;9924;1.1758;791;1500;0;0;0;0;0;0;0
+-0.6;8;9924;1.1758;784;1500;0;0;0;0;0;0;0
+-0.5;8;9924;1.1758;777;1500;0;0;0;0;0;0;0
+-0.4;8;9924;1.1758;769;1500;0;0;0;0;0;0;0
+-0.3;8;9924;1.1758;763;1500;0;0;0;0;0;0;0
+-0.2;8;9924;1.1758;756;1500;0;0;0;0;0;0;0
+-0.1;8;9924;1.1758;749;1500;0;0;0;0;0;0;0
+0;8;9924;1.1758;742;1500;0;0;0;0;0;0;0
+0.1;8;9924;1.1758;727;1500;0;0;0;0;0;0;0
+0.2;8;9924;1.1758;712;1500;0;0;0;0;0;0;0
+0.3;8;9924;1.1758;698;1500;0;0;0;0;0;0;0
+0.4;8;9924;1.1758;683;1500;0;0;0;0;0;0;0
+0.5;8;9924;1.1758;669;1500;0;0;0;0;0;0;0
+0.6;8;9924;1.1758;656;1500;0;0;0;0;0;0;0
+0.7;8;9924;1.1758;642;1500;0;0;0;0;0;0;0
+0.8;8;9924;1.1758;629;1500;0;0;0;0;0;0;0
+0.9;8;9924;1.1758;616;1500;0;0;0;0;0;0;0
+1;8;9924;1.1758;604;1500;0;0;0;0;0;0;0
+1.1;8;9924;1.1758;592;1500;0;0;0;0;0;0;0
+1.2;8;9924;1.1758;579;1500;0;0;0;0;0;0;0
+1.3;8;9924;1.1758;568;1500;0;0;0;0;0;0;0
+1.4;8;9924;1.1758;556;1500;0;0;0;0;0;0;0
+1.5;8;9924;1.1758;545;1500;0;0;0;0;0;0;0
+1.6;8;9924;1.1758;534;1500;0;0;0;0;0;0;0
+1.7;8;9924;1.1758;523;1500;0;0;0;0;0;0;0
+1.8;8;9924;1.1758;512;1500;0;0;0;0;0;0;0
+1.9;8;9924;1.1758;502;1500;0;0;0;0;0;0;0
+2;8;9924;1.1758;491;1500;0;0;0;0;0;0;0
+2.1;8;9924;1.1758;481;1500;0;0;0;0;0;0;0
+2.2;8;9924;1.1758;472;1500;0;0;0;0;0;0;0
+2.3;8;9924;1.1758;462;1500;0;0;0;0;0;0;0
+2.4;8;9924;1.1758;453;1500;0;0;0;0;0;0;0
+2.5;8;9924;1.1758;443;1500;0;0;0;0;0;0;0
+2.6;8;9924;1.1758;434;1500;0;0;0;0;0;0;0
+2.7;8;9924;1.1758;425;1500;0;0;0;0;0;0;0
+2.8;8;9924;1.1758;417;1500;0;0;0;0;0;0;0
+2.9;8;9924;1.1758;408;1500;0;0;0;0;0;0;0
+3;8;9924;1.1758;400;1500;0;0;0;0;0;0;0
+3.1;8;9924;1.1758;382;1500;0;0;0;0;0;0;0
+3.2;8;9924;1.1758;366;1500;0;0;0;0;0;0;0
+3.3;8;9924;1.1758;350;1500;0;0;0;0;0;0;0
+3.4;8;9924;1.1758;334;1500;0;0;0;0;0;0;0
+3.5;8;9924;1.1758;320;1500;0;0;0;0;0;0;0
+3.6;8;9924;1.1758;306;1500;0;0;0;0;0;0;0
+3.7;8;9924;1.1758;292;1500;0;0;0;0;0;0;0
+3.8;8;9924;1.1758;279;1500;0;0;0;0;0;0;0
+3.9;8;9924;1.1758;267;1500;0;0;0;0;0;0;0
+4;8;9924;1.1758;255;1500;0;0;0;0;0;0;0
+4.1;8;9924;1.1758;244;1500;0;0;0;0;0;0;0
+4.2;8;9924;1.1758;233;1500;0;0;0;0;0;0;0
+4.3;8;9924;1.1758;223;1500;0;0;0;0;0;0;0
+4.4;8;9924;1.1758;213;1500;0;0;0;0;0;0;0
+4.5;8;9924;1.1758;204;1500;0;0;0;0;0;0;0
+4.6;8;9924;1.1758;195;1500;0;0;0;0;0;0;0
+4.7;8;9924;1.1758;186;1500;0;0;0;0;0;0;0
+4.8;8;9924;1.1758;178;1500;0;0;0;0;0;0;0
+4.9;8;9924;1.1758;170;1500;0;0;0;0;0;0;0
+5;8;9924;1.1758;163;1500;0;0;0;0;0;0;0
+5.1;8;9924;1.1758;156;1500;0;0;0;0;0;0;0
+5.2;8;9924;1.1758;149;1500;0;0;0;0;0;0;0
+5.3;8;9924;1.1758;142;1500;0;0;0;0;0;0;0
+5.4;8;9924;1.1758;136;1500;0;0;0;0;0;0;0
+5.5;8;9924;1.1758;130;1500;0;0;0;0;0;0;0
+5.6;8;9924;1.1758;124;1500;0;0;0;0;0;0;0
+5.7;8;9924;1.1758;119;1500;0;0;0;0;0;0;0
+5.8;8;9924;1.1758;114;1500;0;0;0;0;0;0;0
+5.9;8;9924;1.1758;109;1500;0;0;0;0;0;0;0
+6;8;9924;1.1758;104;1500;0;0;0;0;0;0;0
+6.1;8;9924;1.1758;65;1500;0;0;0;0;0;0;0
+6.2;8;9924;1.1758;3;1500;0;0;0;0;0;0;0
+6.3;8;9924;1.1758;0;1500;0;0;0;0;0;0;0
diff --git a/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs9_cdlc_mimo2x2_dl.csv b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs9_cdlc_mimo2x2_dl.csv
new file mode 100644
index 0000000000..6db366e48e
--- /dev/null
+++ b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/AWGN_MIMO2x2_results/mcs9_cdlc_mimo2x2_dl.csv
@@ -0,0 +1,302 @@
+SNR;MCS;TBS;rate;err0;trials0;err1;trials1;err2;trials2;err3;trials3;dci_err
+-10;9;10504;1.3262;1500;1500;0;0;0;0;0;0;0
+-9.9;9;10504;1.3262;1498;1500;0;0;0;0;0;0;0
+-9.8;9;10504;1.3262;1496;1500;0;0;0;0;0;0;0
+-9.7;9;10504;1.3262;1494;1500;0;0;0;0;0;0;0
+-9.6;9;10504;1.3262;1492;1500;0;0;0;0;0;0;0
+-9.5;9;10504;1.3262;1490;1500;0;0;0;0;0;0;0
+-9.4;9;10504;1.3262;1488;1500;0;0;0;0;0;0;0
+-9.3;9;10504;1.3262;1486;1500;0;0;0;0;0;0;0
+-9.2;9;10504;1.3262;1484;1500;0;0;0;0;0;0;0
+-9.1;9;10504;1.3262;1483;1500;0;0;0;0;0;0;0
+-9;9;10504;1.3262;1481;1500;0;0;0;0;0;0;0
+-8.9;9;10504;1.3262;1479;1500;0;0;0;0;0;0;0
+-8.8;9;10504;1.3262;1477;1500;0;0;0;0;0;0;0
+-8.7;9;10504;1.3262;1475;1500;0;0;0;0;0;0;0
+-8.6;9;10504;1.3262;1473;1500;0;0;0;0;0;0;0
+-8.5;9;10504;1.3262;1471;1500;0;0;0;0;0;0;0
+-8.4;9;10504;1.3262;1469;1500;0;0;0;0;0;0;0
+-8.3;9;10504;1.3262;1467;1500;0;0;0;0;0;0;0
+-8.2;9;10504;1.3262;1465;1500;0;0;0;0;0;0;0
+-8.1;9;10504;1.3262;1463;1500;0;0;0;0;0;0;0
+-8;9;10504;1.3262;1461;1500;0;0;0;0;0;0;0
+-7.9;9;10504;1.3262;1460;1500;0;0;0;0;0;0;0
+-7.8;9;10504;1.3262;1458;1500;0;0;0;0;0;0;0
+-7.7;9;10504;1.3262;1456;1500;0;0;0;0;0;0;0
+-7.6;9;10504;1.3262;1454;1500;0;0;0;0;0;0;0
+-7.5;9;10504;1.3262;1452;1500;0;0;0;0;0;0;0
+-7.4;9;10504;1.3262;1450;1500;0;0;0;0;0;0;0
+-7.3;9;10504;1.3262;1448;1500;0;0;0;0;0;0;0
+-7.2;9;10504;1.3262;1446;1500;0;0;0;0;0;0;0
+-7.1;9;10504;1.3262;1444;1500;0;0;0;0;0;0;0
+-7;9;10504;1.3262;1443;1500;0;0;0;0;0;0;0
+-6.9;9;10504;1.3262;1432;1500;0;0;0;0;0;0;0
+-6.8;9;10504;1.3262;1421;1500;0;0;0;0;0;0;0
+-6.7;9;10504;1.3262;1410;1500;0;0;0;0;0;0;0
+-6.6;9;10504;1.3262;1400;1500;0;0;0;0;0;0;0
+-6.5;9;10504;1.3262;1389;1500;0;0;0;0;0;0;0
+-6.4;9;10504;1.3262;1379;1500;0;0;0;0;0;0;0
+-6.3;9;10504;1.3262;1369;1500;0;0;0;0;0;0;0
+-6.2;9;10504;1.3262;1358;1500;0;0;0;0;0;0;0
+-6.1;9;10504;1.3262;1348;1500;0;0;0;0;0;0;0
+-6;9;10504;1.3262;1338;1500;0;0;0;0;0;0;0
+-5.9;9;10504;1.3262;1328;1500;0;0;0;0;0;0;0
+-5.8;9;10504;1.3262;1318;1500;0;0;0;0;0;0;0
+-5.7;9;10504;1.3262;1308;1500;0;0;0;0;0;0;0
+-5.6;9;10504;1.3262;1298;1500;0;0;0;0;0;0;0
+-5.5;9;10504;1.3262;1289;1500;0;0;0;0;0;0;0
+-5.4;9;10504;1.3262;1279;1500;0;0;0;0;0;0;0
+-5.3;9;10504;1.3262;1269;1500;0;0;0;0;0;0;0
+-5.2;9;10504;1.3262;1260;1500;0;0;0;0;0;0;0
+-5.1;9;10504;1.3262;1250;1500;0;0;0;0;0;0;0
+-5;9;10504;1.3262;1241;1500;0;0;0;0;0;0;0
+-4.9;9;10504;1.3262;1232;1500;0;0;0;0;0;0;0
+-4.8;9;10504;1.3262;1222;1500;0;0;0;0;0;0;0
+-4.7;9;10504;1.3262;1213;1500;0;0;0;0;0;0;0
+-4.6;9;10504;1.3262;1204;1500;0;0;0;0;0;0;0
+-4.5;9;10504;1.3262;1195;1500;0;0;0;0;0;0;0
+-4.4;9;10504;1.3262;1186;1500;0;0;0;0;0;0;0
+-4.3;9;10504;1.3262;1177;1500;0;0;0;0;0;0;0
+-4.2;9;10504;1.3262;1168;1500;0;0;0;0;0;0;0
+-4.1;9;10504;1.3262;1160;1500;0;0;0;0;0;0;0
+-4;9;10504;1.3262;1151;1500;0;0;0;0;0;0;0
+-3.9;9;10504;1.3262;1140;1500;0;0;0;0;0;0;0
+-3.8;9;10504;1.3262;1129;1500;0;0;0;0;0;0;0
+-3.7;9;10504;1.3262;1118;1500;0;0;0;0;0;0;0
+-3.6;9;10504;1.3262;1107;1500;0;0;0;0;0;0;0
+-3.5;9;10504;1.3262;1096;1500;0;0;0;0;0;0;0
+-3.4;9;10504;1.3262;1086;1500;0;0;0;0;0;0;0
+-3.3;9;10504;1.3262;1075;1500;0;0;0;0;0;0;0
+-3.2;9;10504;1.3262;1065;1500;0;0;0;0;0;0;0
+-3.1;9;10504;1.3262;1055;1500;0;0;0;0;0;0;0
+-3;9;10504;1.3262;1045;1500;0;0;0;0;0;0;0
+-2.9;9;10504;1.3262;1034;1500;0;0;0;0;0;0;0
+-2.8;9;10504;1.3262;1024;1500;0;0;0;0;0;0;0
+-2.7;9;10504;1.3262;1015;1500;0;0;0;0;0;0;0
+-2.6;9;10504;1.3262;1005;1500;0;0;0;0;0;0;0
+-2.5;9;10504;1.3262;995;1500;0;0;0;0;0;0;0
+-2.4;9;10504;1.3262;985;1500;0;0;0;0;0;0;0
+-2.3;9;10504;1.3262;976;1500;0;0;0;0;0;0;0
+-2.2;9;10504;1.3262;967;1500;0;0;0;0;0;0;0
+-2.1;9;10504;1.3262;957;1500;0;0;0;0;0;0;0
+-2;9;10504;1.3262;948;1500;0;0;0;0;0;0;0
+-1.9;9;10504;1.3262;939;1500;0;0;0;0;0;0;0
+-1.8;9;10504;1.3262;930;1500;0;0;0;0;0;0;0
+-1.7;9;10504;1.3262;921;1500;0;0;0;0;0;0;0
+-1.6;9;10504;1.3262;912;1500;0;0;0;0;0;0;0
+-1.5;9;10504;1.3262;903;1500;0;0;0;0;0;0;0
+-1.4;9;10504;1.3262;894;1500;0;0;0;0;0;0;0
+-1.3;9;10504;1.3262;886;1500;0;0;0;0;0;0;0
+-1.2;9;10504;1.3262;877;1500;0;0;0;0;0;0;0
+-1.1;9;10504;1.3262;869;1500;0;0;0;0;0;0;0
+-1;9;10504;1.3262;860;1500;0;0;0;0;0;0;0
+-0.9;9;10504;1.3262;852;1500;0;0;0;0;0;0;0
+-0.8;9;10504;1.3262;844;1500;0;0;0;0;0;0;0
+-0.7;9;10504;1.3262;836;1500;0;0;0;0;0;0;0
+-0.6;9;10504;1.3262;829;1500;0;0;0;0;0;0;0
+-0.5;9;10504;1.3262;821;1500;0;0;0;0;0;0;0
+-0.4;9;10504;1.3262;813;1500;0;0;0;0;0;0;0
+-0.3;9;10504;1.3262;806;1500;0;0;0;0;0;0;0
+-0.2;9;10504;1.3262;798;1500;0;0;0;0;0;0;0
+-0.1;9;10504;1.3262;791;1500;0;0;0;0;0;0;0
+0;9;10504;1.3262;783;1500;0;0;0;0;0;0;0
+0.1;9;10504;1.3262;776;1500;0;0;0;0;0;0;0
+0.2;9;10504;1.3262;769;1500;0;0;0;0;0;0;0
+0.3;9;10504;1.3262;761;1500;0;0;0;0;0;0;0
+0.4;9;10504;1.3262;754;1500;0;0;0;0;0;0;0
+0.5;9;10504;1.3262;747;1500;0;0;0;0;0;0;0
+0.6;9;10504;1.3262;740;1500;0;0;0;0;0;0;0
+0.7;9;10504;1.3262;733;1500;0;0;0;0;0;0;0
+0.8;9;10504;1.3262;726;1500;0;0;0;0;0;0;0
+0.9;9;10504;1.3262;720;1500;0;0;0;0;0;0;0
+1;9;10504;1.3262;713;1500;0;0;0;0;0;0;0
+1.1;9;10504;1.3262;706;1500;0;0;0;0;0;0;0
+1.2;9;10504;1.3262;700;1500;0;0;0;0;0;0;0
+1.3;9;10504;1.3262;693;1500;0;0;0;0;0;0;0
+1.4;9;10504;1.3262;687;1500;0;0;0;0;0;0;0
+1.5;9;10504;1.3262;680;1500;0;0;0;0;0;0;0
+1.6;9;10504;1.3262;674;1500;0;0;0;0;0;0;0
+1.7;9;10504;1.3262;668;1500;0;0;0;0;0;0;0
+1.8;9;10504;1.3262;661;1500;0;0;0;0;0;0;0
+1.9;9;10504;1.3262;655;1500;0;0;0;0;0;0;0
+2;9;10504;1.3262;649;1500;0;0;0;0;0;0;0
+2.1;9;10504;1.3262;634;1500;0;0;0;0;0;0;0
+2.2;9;10504;1.3262;619;1500;0;0;0;0;0;0;0
+2.3;9;10504;1.3262;604;1500;0;0;0;0;0;0;0
+2.4;9;10504;1.3262;590;1500;0;0;0;0;0;0;0
+2.5;9;10504;1.3262;576;1500;0;0;0;0;0;0;0
+2.6;9;10504;1.3262;563;1500;0;0;0;0;0;0;0
+2.7;9;10504;1.3262;550;1500;0;0;0;0;0;0;0
+2.8;9;10504;1.3262;537;1500;0;0;0;0;0;0;0
+2.9;9;10504;1.3262;524;1500;0;0;0;0;0;0;0
+3;9;10504;1.3262;512;1500;0;0;0;0;0;0;0
+3.1;9;10504;1.3262;500;1500;0;0;0;0;0;0;0
+3.2;9;10504;1.3262;488;1500;0;0;0;0;0;0;0
+3.3;9;10504;1.3262;477;1500;0;0;0;0;0;0;0
+3.4;9;10504;1.3262;466;1500;0;0;0;0;0;0;0
+3.5;9;10504;1.3262;455;1500;0;0;0;0;0;0;0
+3.6;9;10504;1.3262;444;1500;0;0;0;0;0;0;0
+3.7;9;10504;1.3262;434;1500;0;0;0;0;0;0;0
+3.8;9;10504;1.3262;423;1500;0;0;0;0;0;0;0
+3.9;9;10504;1.3262;414;1500;0;0;0;0;0;0;0
+4;9;10504;1.3262;404;1500;0;0;0;0;0;0;0
+4.1;9;10504;1.3262;394;1500;0;0;0;0;0;0;0
+4.2;9;10504;1.3262;385;1500;0;0;0;0;0;0;0
+4.3;9;10504;1.3262;376;1500;0;0;0;0;0;0;0
+4.4;9;10504;1.3262;367;1500;0;0;0;0;0;0;0
+4.5;9;10504;1.3262;359;1500;0;0;0;0;0;0;0
+4.6;9;10504;1.3262;350;1500;0;0;0;0;0;0;0
+4.7;9;10504;1.3262;342;1500;0;0;0;0;0;0;0
+4.8;9;10504;1.3262;334;1500;0;0;0;0;0;0;0
+4.9;9;10504;1.3262;326;1500;0;0;0;0;0;0;0
+5;9;10504;1.3262;319;1500;0;0;0;0;0;0;0
+5.1;9;10504;1.3262;305;1500;0;0;0;0;0;0;0
+5.2;9;10504;1.3262;291;1500;0;0;0;0;0;0;0
+5.3;9;10504;1.3262;279;1500;0;0;0;0;0;0;0
+5.4;9;10504;1.3262;266;1500;0;0;0;0;0;0;0
+5.5;9;10504;1.3262;255;1500;0;0;0;0;0;0;0
+5.6;9;10504;1.3262;243;1500;0;0;0;0;0;0;0
+5.7;9;10504;1.3262;233;1500;0;0;0;0;0;0;0
+5.8;9;10504;1.3262;223;1500;0;0;0;0;0;0;0
+5.9;9;10504;1.3262;213;1500;0;0;0;0;0;0;0
+6;9;10504;1.3262;204;1500;0;0;0;0;0;0;0
+6.1;9;10504;1.3262;195;1500;0;0;0;0;0;0;0
+6.2;9;10504;1.3262;186;1500;0;0;0;0;0;0;0
+6.3;9;10504;1.3262;178;1500;0;0;0;0;0;0;0
+6.4;9;10504;1.3262;170;1500;0;0;0;0;0;0;0
+6.5;9;10504;1.3262;163;1500;0;0;0;0;0;0;0
+6.6;9;10504;1.3262;156;1500;0;0;0;0;0;0;0
+6.7;9;10504;1.3262;149;1500;0;0;0;0;0;0;0
+6.8;9;10504;1.3262;142;1500;0;0;0;0;0;0;0
+6.9;9;10504;1.3262;136;1500;0;0;0;0;0;0;0
+7;9;10504;1.3262;130;1500;0;0;0;0;0;0;0
+7.1;9;10504;1.3262;124;1500;0;0;0;0;0;0;0
+7.2;9;10504;1.3262;119;1500;0;0;0;0;0;0;0
+7.3;9;10504;1.3262;114;1500;0;0;0;0;0;0;0
+7.4;9;10504;1.3262;109;1500;0;0;0;0;0;0;0
+7.5;9;10504;1.3262;104;1500;0;0;0;0;0;0;0
+7.6;9;10504;1.3262;99;1500;0;0;0;0;0;0;0
+7.7;9;10504;1.3262;95;1500;0;0;0;0;0;0;0
+7.8;9;10504;1.3262;91;1500;0;0;0;0;0;0;0
+7.9;9;10504;1.3262;87;1500;0;0;0;0;0;0;0
+8;9;10504;1.3262;83;1500;0;0;0;0;0;0;0
+8.1;9;10504;1.3262;77;1500;0;0;0;0;0;0;0
+8.2;9;10504;1.3262;72;1500;0;0;0;0;0;0;0
+8.3;9;10504;1.3262;68;1500;0;0;0;0;0;0;0
+8.4;9;10504;1.3262;63;1500;0;0;0;0;0;0;0
+8.5;9;10504;1.3262;59;1500;0;0;0;0;0;0;0
+8.6;9;10504;1.3262;55;1500;0;0;0;0;0;0;0
+8.7;9;10504;1.3262;51;1500;0;0;0;0;0;0;0
+8.8;9;10504;1.3262;48;1500;0;0;0;0;0;0;0
+8.9;9;10504;1.3262;45;1500;0;0;0;0;0;0;0
+9;9;10504;1.3262;42;1500;0;0;0;0;0;0;0
+9.1;9;10504;1.3262;39;1500;0;0;0;0;0;0;0
+9.2;9;10504;1.3262;36;1500;0;0;0;0;0;0;0
+9.3;9;10504;1.3262;34;1500;0;0;0;0;0;0;0
+9.4;9;10504;1.3262;32;1500;0;0;0;0;0;0;0
+9.5;9;10504;1.3262;30;1500;0;0;0;0;0;0;0
+9.6;9;10504;1.3262;28;1500;0;0;0;0;0;0;0
+9.7;9;10504;1.3262;26;1500;0;0;0;0;0;0;0
+9.8;9;10504;1.3262;24;1500;0;0;0;0;0;0;0
+9.9;9;10504;1.3262;22;1500;0;0;0;0;0;0;0
+10;9;10504;1.3262;21;1500;0;0;0;0;0;0;0
+10.1;9;10504;1.3262;20;1500;0;0;0;0;0;0;0
+10.2;9;10504;1.3262;18;1500;0;0;0;0;0;0;0
+10.3;9;10504;1.3262;17;1500;0;0;0;0;0;0;0
+10.4;9;10504;1.3262;16;1500;0;0;0;0;0;0;0
+10.5;9;10504;1.3262;15;1500;0;0;0;0;0;0;0
+10.6;9;10504;1.3262;14;1500;0;0;0;0;0;0;0
+10.7;9;10504;1.3262;13;1500;0;0;0;0;0;0;0
+10.8;9;10504;1.3262;12;1500;0;0;0;0;0;0;0
+10.9;9;10504;1.3262;11;1500;0;0;0;0;0;0;0
+11;9;10504;1.3262;11;1500;0;0;0;0;0;0;0
+11.1;9;10504;1.3262;9;1500;0;0;0;0;0;0;0
+11.2;9;10504;1.3262;9;1500;0;0;0;0;0;0;0
+11.3;9;10504;1.3262;8;1500;0;0;0;0;0;0;0
+11.4;9;10504;1.3262;7;1500;0;0;0;0;0;0;0
+11.5;9;10504;1.3262;6;1500;0;0;0;0;0;0;0
+11.6;9;10504;1.3262;6;1500;0;0;0;0;0;0;0
+11.7;9;10504;1.3262;5;1500;0;0;0;0;0;0;0
+11.8;9;10504;1.3262;5;1500;0;0;0;0;0;0;0
+11.9;9;10504;1.3262;4;1500;0;0;0;0;0;0;0
+12;9;10504;1.3262;4;1500;0;0;0;0;0;0;0
+12.1;9;10504;1.3262;3;1500;0;0;0;0;0;0;0
+12.2;9;10504;1.3262;3;1500;0;0;0;0;0;0;0
+12.3;9;10504;1.3262;3;1500;0;0;0;0;0;0;0
+12.4;9;10504;1.3262;2;1500;0;0;0;0;0;0;0
+12.5;9;10504;1.3262;2;1500;0;0;0;0;0;0;0
+12.6;9;10504;1.3262;2;1500;0;0;0;0;0;0;0
+12.7;9;10504;1.3262;2;1500;0;0;0;0;0;0;0
+12.8;9;10504;1.3262;2;1500;0;0;0;0;0;0;0
+12.9;9;10504;1.3262;1;1500;0;0;0;0;0;0;0
+13;9;10504;1.3262;1;1500;0;0;0;0;0;0;0
+13.1;9;10504;1.3262;1;1500;0;0;0;0;0;0;0
+13.2;9;10504;1.3262;1;1500;0;0;0;0;0;0;0
+13.3;9;10504;1.3262;1;1500;0;0;0;0;0;0;0
+13.4;9;10504;1.3262;1;1500;0;0;0;0;0;0;0
+13.5;9;10504;1.3262;1;1500;0;0;0;0;0;0;0
+13.6;9;10504;1.3262;1;1500;0;0;0;0;0;0;0
+13.7;9;10504;1.3262;1;1500;0;0;0;0;0;0;0
+13.8;9;10504;1.3262;1;1500;0;0;0;0;0;0;0
+13.9;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+14;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+14.1;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+14.2;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+14.3;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+14.4;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+14.5;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+14.6;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+14.7;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+14.8;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+14.9;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+15;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+15.1;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+15.2;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+15.3;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+15.4;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+15.5;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+15.6;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+15.7;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+15.8;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+15.9;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+16;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+16.1;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+16.2;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+16.3;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+16.4;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+16.5;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+16.6;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+16.7;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+16.8;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+16.9;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+17;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+17.1;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+17.2;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+17.3;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+17.4;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+17.5;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+17.6;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+17.7;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+17.8;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+17.9;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+18;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+18.1;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+18.2;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+18.3;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+18.4;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+18.5;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+18.6;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+18.7;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+18.8;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+18.9;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+19;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+19.1;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+19.2;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+19.3;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+19.4;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+19.5;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+19.6;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+19.7;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+19.8;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+19.9;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
+20;9;10504;1.3262;0;1500;0;0;0;0;0;0;0
diff --git a/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/README.md b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/README.md
new file mode 100644
index 0000000000..22be32eff3
--- /dev/null
+++ b/openair1/SIMULATION/NR_PHY/BLER_SIMULATIONS/AWGN/README.md
@@ -0,0 +1,23 @@
+# Overview of AWGN BLER Table #
+
+Look-up tables of performance versus signal-to-noise ratio (SNR) are obtained via PHY simulations in additive white Gaussian noise (AWGN) channels. Then, to evaluate the BLER of fading channel, we map the received SINR to an AWGN curve using these look-up tables. Note that due to time/frequency selective fading, the received SINR value for each packet/ resource block varies. This requires the computation of AWGN equivalent SINR, also generally known as effective SINR, by mapping the individual symbol SINRs to a scalar. Then, the performance of the PHY in a fading channel at a given effective SINR is equivalent to the performance in AWGN channel.
+
+## AWGN_results ##
+
+ The provided simulation results are for NR SISO channel modeling.
+
+## AWGN_MIMO 2x2_results ##
+
+ The provided simulation results are for NR MIMO 2x2 channel modeling.
+
+
+# Table Generation Method #
+
+The tables result from an exponential effective SINR mapping (EESM) and comparison to MATLAB link-level simulation models.
+
+# Limitations #
+
+These BLER curves are used in the packet dropping abstraction process.
+The curves in the tables can be used under the condition of L1 abstraction mode and packet dropping abstraction process.
+
+
diff --git a/openair1/SIMULATION/TOOLS/DOC/rtusage.md b/openair1/SIMULATION/TOOLS/DOC/rtusage.md
index 13a54c258c..059d02a307 100644
--- a/openair1/SIMULATION/TOOLS/DOC/rtusage.md
+++ b/openair1/SIMULATION/TOOLS/DOC/rtusage.md
@@ -63,7 +63,7 @@ softmodem_enb>
-The [rfsimulator documentation](../../../../sdr/rfsimulator/README.md ) has also some specific information when using the channel simulation via this tool.
+The [rfsimulator documentation](../../../../radio/rfsimulator/README.md ) has also some specific information when using the channel simulation via this tool.
[channel simulation main page](channel_simulation.md)
[oai Wikis home](https://gitlab.eurecom.fr/oai/openairinterface5g/wikis/home)
diff --git a/openair2/E1AP/e1ap.h b/openair2/E1AP/e1ap.h
index c7b2c24e8b..ef22152648 100644
--- a/openair2/E1AP/e1ap.h
+++ b/openair2/E1AP/e1ap.h
@@ -25,7 +25,7 @@
#define __E1AP_H_
#include
-#include "openairinterface5g_limits.h"
+#include "common/openairinterface5g_limits.h"
#include
#include
diff --git a/openair2/ENB_APP/NB_IoT_config.c b/openair2/ENB_APP/NB_IoT_config.c
index 617954bf3a..2936549da7 100644
--- a/openair2/ENB_APP/NB_IoT_config.c
+++ b/openair2/ENB_APP/NB_IoT_config.c
@@ -39,7 +39,7 @@
#include "SystemInformationBlockType2.h"
#include "PHY/phy_extern.h"
-#include "sdr/ETHERNET/USERSPACE/LIB/ethernet_lib.h"
+#include "radio/ETHERNET/USERSPACE/LIB/ethernet_lib.h"
#include "common/config/config_userapi.h"
#include "RRC_config_tools.h"
#include "RRC_paramsvalues.h"
diff --git a/openair2/ENB_APP/enb_config.c b/openair2/ENB_APP/enb_config.c
index 5e2ce872db..92a2bb76dd 100644
--- a/openair2/ENB_APP/enb_config.c
+++ b/openair2/ENB_APP/enb_config.c
@@ -46,7 +46,7 @@
#include "LAYER2/MAC/mac_proto.h"
#include "PHY/phy_extern.h"
#include "PHY/INIT/phy_init.h"
-#include "sdr/ETHERNET/USERSPACE/LIB/ethernet_lib.h"
+#include "radio/ETHERNET/USERSPACE/LIB/ethernet_lib.h"
#include "nfapi_vnf.h"
#include "nfapi_pnf.h"
#include "targets/RT/USER/lte-softmodem.h"
diff --git a/openair2/F1AP/f1ap_common.h b/openair2/F1AP/f1ap_common.h
index e89e8a70cc..b322c4b3aa 100644
--- a/openair2/F1AP/f1ap_common.h
+++ b/openair2/F1AP/f1ap_common.h
@@ -32,7 +32,7 @@
#ifndef F1AP_COMMON_H_
#define F1AP_COMMON_H_
-#include "openairinterface5g_limits.h"
+#include "common/openairinterface5g_limits.h"
#include
#define F1AP_UE_IDENTIFIER_NUMBER 3
diff --git a/openair2/GNB_APP/gnb_config.c b/openair2/GNB_APP/gnb_config.c
index bbd1098887..a85840a38b 100644
--- a/openair2/GNB_APP/gnb_config.c
+++ b/openair2/GNB_APP/gnb_config.c
@@ -50,7 +50,7 @@
// #include "LAYER2/MAC/extern.h"
// #include "LAYER2/MAC/proto.h"
#include "PHY/INIT/phy_init.h"
-#include "sdr/ETHERNET/USERSPACE/LIB/ethernet_lib.h"
+#include "radio/ETHERNET/USERSPACE/LIB/ethernet_lib.h"
#include "nfapi_vnf.h"
#include "nfapi_pnf.h"
diff --git a/openair2/LAYER2/MAC/mac.h b/openair2/LAYER2/MAC/mac.h
index 12ffaf4a5b..fe2f877fb3 100644
--- a/openair2/LAYER2/MAC/mac.h
+++ b/openair2/LAYER2/MAC/mac.h
@@ -74,7 +74,7 @@
#include "PHY/defs_common.h" // for PRACH_RESOURCES_t
#include "PHY/LTE_TRANSPORT/transport_common.h"
-#include "sdr/COMMON/common_lib.h"
+#include "radio/COMMON/common_lib.h"
/** @defgroup _mac MAC
* @ingroup _oai2
diff --git a/openair2/LAYER2/NR_MAC_COMMON/nr_mac.h b/openair2/LAYER2/NR_MAC_COMMON/nr_mac.h
index ef9e6360b6..10a03e30af 100644
--- a/openair2/LAYER2/NR_MAC_COMMON/nr_mac.h
+++ b/openair2/LAYER2/NR_MAC_COMMON/nr_mac.h
@@ -300,6 +300,9 @@ typedef struct {
int num_srs;
int num_harqs;
int num_csi_reports;
+ uint8_t pmi;
+ uint8_t ri;
+ uint8_t cqi;
} nr_emulated_l1_t;
typedef struct {
diff --git a/openair2/LAYER2/NR_MAC_UE/main_ue_nr.c b/openair2/LAYER2/NR_MAC_UE/main_ue_nr.c
index f8b313efd8..524c3b3fcd 100644
--- a/openair2/LAYER2/NR_MAC_UE/main_ue_nr.c
+++ b/openair2/LAYER2/NR_MAC_UE/main_ue_nr.c
@@ -32,7 +32,7 @@
//#include "defs.h"
#include "mac_proto.h"
-#include "sdr/COMMON/common_lib.h"
+#include "radio/COMMON/common_lib.h"
//#undef MALLOC
#include "assertions.h"
#include "PHY/types.h"
diff --git a/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c b/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
index 76f43eab58..5685693bca 100644
--- a/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
+++ b/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
@@ -50,6 +50,7 @@
#include "NR_MAC_UE/mac_extern.h"
#include "NR_MAC_COMMON/nr_mac_extern.h"
#include "common/utils/nr/nr_common.h"
+#include "openair2/NR_UE_PHY_INTERFACE/NR_Packet_Drop.h"
/* PHY */
#include "PHY/NR_TRANSPORT/nr_dci.h"
@@ -2694,6 +2695,17 @@ uint8_t get_csirs_RI_PMI_CQI_payload(NR_UE_MAC_INST_t *mac,
int cqi_bitlen = csi_report->csi_meas_bitlen.cqi_bitlen[mac->csirs_measurements.rank_indicator];
int padding_bitlen = n_bits - (cri_bitlen + ri_bitlen + pmi_x1_bitlen + pmi_x2_bitlen + cqi_bitlen);
+ if (get_softmodem_params()->emulate_l1) {
+ static const uint8_t mcs_to_cqi[] = {0, 1, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9,
+ 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15};
+ CHECK_INDEX(nr_bler_data, NR_NUM_MCS - 1);
+ int mcs = get_mcs_from_sinr(nr_bler_data, (mac->nr_ue_emul_l1.cqi - 640) * 0.1);
+ CHECK_INDEX(mcs_to_cqi, mcs);
+ mac->csirs_measurements.rank_indicator = mac->nr_ue_emul_l1.ri;
+ mac->csirs_measurements.i1 = mac->nr_ue_emul_l1.pmi;
+ mac->csirs_measurements.cqi = mcs_to_cqi[mcs];
+ }
+
// TODO: Improvements will be needed to cri_bitlen>0 and pmi_x1_bitlen>0
temp_payload = (mac->csirs_measurements.rank_indicator<<(cri_bitlen+cqi_bitlen+pmi_x2_bitlen+padding_bitlen+pmi_x1_bitlen)) |
(mac->csirs_measurements.i1<<(cri_bitlen+cqi_bitlen+pmi_x2_bitlen)) |
diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
index 55ddf388a7..75e152dc37 100644
--- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
+++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
@@ -151,6 +151,11 @@ int nr_process_mac_pdu(instance_t module_idP,
//38.321 section 6.1.3.1
//fixed length
mac_len =1;
+ if (pdu_len < sizeof(NR_BSR_SHORT)) {
+ LOG_E(NR_MAC, "pdu_len %d is invalid (prior to cast of size %ld)\n",
+ pdu_len, sizeof(NR_BSR_SHORT));
+ return 0;
+ }
/* Extract short BSR value */
ce_ptr = &pduP[mac_subheader_len];
NR_BSR_SHORT *bsr_s = (NR_BSR_SHORT *) ce_ptr;
@@ -174,8 +179,10 @@ int nr_process_mac_pdu(instance_t module_idP,
to be a partial PDU at the end of this buffer, so here
we gracefully ignore that by returning 0. See:
https://gitlab.eurecom.fr/oai/openairinterface5g/-/issues/534 */
- if (!get_mac_len(pduP, pdu_len, &mac_len, &mac_subheader_len))
+ if (!get_mac_len(pduP, pdu_len, &mac_len, &mac_subheader_len)) {
+ LOG_E(NR_MAC, "pdu_len %d is invalid (shorter than MAC PDU header)\n", pdu_len);
return 0;
+ }
/* Extract long BSR value */
ce_ptr = &pduP[mac_subheader_len];
NR_BSR_LONG *bsr_l = (NR_BSR_LONG *) ce_ptr;
@@ -282,8 +289,10 @@ int nr_process_mac_pdu(instance_t module_idP,
case UL_SCH_LCID_SRB1:
case UL_SCH_LCID_SRB2:
- if (!get_mac_len(pduP, pdu_len, &mac_len, &mac_subheader_len))
+ if (!get_mac_len(pduP, pdu_len, &mac_len, &mac_subheader_len)) {
+ LOG_E(NR_MAC, "pdu_len %d is invalid (shorter than MAC PDU header)\n", pdu_len);
return 0;
+ }
rnti_t crnti = UE->rnti;
NR_UE_info_t* UE_idx = UE;
@@ -328,6 +337,11 @@ int nr_process_mac_pdu(instance_t module_idP,
mac_len = 8;
// Check if it is a valid CCCH1 message, we get all 00's messages very often
+ if (pdu_len < mac_subheader_len + mac_len) {
+ LOG_E(NR_MAC, "pdu_len %d is invalid (prior to cast of size %d)\n",
+ pdu_len, mac_subheader_len + mac_len);
+ return 0;
+ }
int i = 0;
for(i=0; i<(mac_subheader_len+mac_len); i++) {
if(pduP[i] != 0) {
@@ -354,8 +368,10 @@ int nr_process_mac_pdu(instance_t module_idP,
case UL_SCH_LCID_DTCH ... (UL_SCH_LCID_DTCH + 28):
// check if LCID is valid at current time.
- if (!get_mac_len(pduP, pdu_len, &mac_len, &mac_subheader_len))
+ if (!get_mac_len(pduP, pdu_len, &mac_len, &mac_subheader_len)) {
+ LOG_E(NR_MAC, "pdu_len %d is invalid (shorter than MAC PDU header)\n", pdu_len);
return 0;
+ }
LOG_D(NR_MAC, "[UE %04x] %d.%d : ULSCH -> UL-%s %d (gNB %ld, %d bytes)\n",
UE->rnti,
diff --git a/openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h b/openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
index 4d65de8403..7981ddeb24 100644
--- a/openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
+++ b/openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
@@ -43,7 +43,7 @@
#include
/* Commmon */
-#include "sdr/COMMON/common_lib.h"
+#include "radio/COMMON/common_lib.h"
#include "COMMON/platform_constants.h"
#include "common/ran_context.h"
#include "collection/linear_alloc.h"
diff --git a/openair2/LAYER2/PDCP_v10.1.0/pdcp.c b/openair2/LAYER2/PDCP_v10.1.0/pdcp.c
index 14a16f572b..2699a07c04 100644
--- a/openair2/LAYER2/PDCP_v10.1.0/pdcp.c
+++ b/openair2/LAYER2/PDCP_v10.1.0/pdcp.c
@@ -49,7 +49,7 @@
#include "nfapi/oai_integration/vendor_ext.h"
#include "common/utils/LOG/vcd_signal_dumper.h"
#include "common/ngran_types.h"
-#include "targets/COMMON/openairinterface5g_limits.h"
+#include "common/openairinterface5g_limits.h"
#include "targets/RT/USER/lte-softmodem.h"
#include "SIMULATION/ETH_TRANSPORT/proto.h"
#include "UTIL/OSA/osa_defs.h"
diff --git a/openair2/LAYER2/RLC/rlc.c b/openair2/LAYER2/RLC/rlc.c
index 1e2266adb1..b18b67198f 100644
--- a/openair2/LAYER2/RLC/rlc.c
+++ b/openair2/LAYER2/RLC/rlc.c
@@ -34,7 +34,7 @@
#include "common/utils/LOG/log.h"
#include "UTIL/OCG/OCG_vars.h"
#include "common/utils/LOG/vcd_signal_dumper.h"
-#include "targets/COMMON/openairinterface5g_limits.h"
+#include "common/openairinterface5g_limits.h"
#include "assertions.h"
#include
diff --git a/openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.c b/openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.c
index 50d6dd48e0..d0be2223db 100644
--- a/openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.c
+++ b/openair2/LAYER2/nr_pdcp/nr_pdcp_oai_api.c
@@ -37,6 +37,7 @@
#include "LAYER2/nr_rlc/nr_rlc_oai_api.h"
#include
#include "openair2/SDAP/nr_sdap/nr_sdap.h"
+#include "executables/softmodem-common.h"
#define TODO do { \
printf("%s:%d:%s: todo\n", __FILE__, __LINE__, __FUNCTION__); \
diff --git a/openair2/LAYER2/nr_rlc/nr_rlc_entity_am.c b/openair2/LAYER2/nr_rlc/nr_rlc_entity_am.c
index 3789bfad46..783aa6e849 100644
--- a/openair2/LAYER2/nr_rlc/nr_rlc_entity_am.c
+++ b/openair2/LAYER2/nr_rlc/nr_rlc_entity_am.c
@@ -317,8 +317,8 @@ static void process_control_pdu(nr_rlc_entity_am_t *entity,
int so_end;
int range;
int prev_nack_sn = -1;
- int prev_so_start;
- int prev_so_end;
+ int prev_so_start = 0;
+ int prev_so_end = 0;
int tx_next_ack;
nr_rlc_sdu_segment_t *cur_wait_list;
nr_rlc_sdu_segment_t *prev_wait_list;
diff --git a/openair2/MCE_APP/mce_config.c b/openair2/MCE_APP/mce_config.c
index dfbea5c652..bcc6b4f71b 100644
--- a/openair2/MCE_APP/mce_config.c
+++ b/openair2/MCE_APP/mce_config.c
@@ -45,7 +45,7 @@
#include "LAYER2/MAC/mac_proto.h"
#include "PHY/phy_extern.h"
#include "PHY/INIT/phy_init.h"
-#include "sdr/ETHERNET/USERSPACE/LIB/ethernet_lib.h"
+#include "radio/ETHERNET/USERSPACE/LIB/ethernet_lib.h"
#include "nfapi_vnf.h"
#include "nfapi_pnf.h"
diff --git a/openair2/NETWORK_DRIVER/UE_IP/constant.h b/openair2/NETWORK_DRIVER/UE_IP/constant.h
index ccd992dd4e..9df54d74d5 100644
--- a/openair2/NETWORK_DRIVER/UE_IP/constant.h
+++ b/openair2/NETWORK_DRIVER/UE_IP/constant.h
@@ -19,7 +19,7 @@
* contact@openairinterface.org
*/
-#include "openairinterface5g_limits.h"
+#include "common/openairinterface5g_limits.h"
#ifndef _UE_IP_CST
#define _UE_IP_CST
diff --git a/openair2/NR_PHY_INTERFACE/NR_IF_Module.h b/openair2/NR_PHY_INTERFACE/NR_IF_Module.h
index 9d543b0918..dec6bf5b4e 100644
--- a/openair2/NR_PHY_INTERFACE/NR_IF_Module.h
+++ b/openair2/NR_PHY_INTERFACE/NR_IF_Module.h
@@ -125,7 +125,7 @@ void NR_IF_Module_kill(int Mod_id);
void NR_UL_indication(NR_UL_IND_t *UL_INFO);
-void RCconfig_nr_ue_L1(void);
+void RCconfig_nr_ue_macrlc(void);
/*Interface for Downlink, transmitting the DLSCH SDU, DCI SDU*/
void NR_Schedule_Response(NR_Sched_Rsp_t *Sched_INFO);
diff --git a/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c b/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c
index fad6d4df04..e548717459 100644
--- a/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c
+++ b/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c
@@ -45,8 +45,9 @@
#include "openair2/RRC/NR_UE/rrc_vars.h"
#include "openair2/GNB_APP/L1_nr_paramdef.h"
#include "openair2/GNB_APP/gnb_paramdef.h"
-#include "sdr/ETHERNET/USERSPACE/LIB/if_defs.h"
+#include "radio/ETHERNET/USERSPACE/LIB/if_defs.h"
#include
+#include "openair2/GNB_APP/MACRLC_nr_paramdef.h"
#define MAX_IF_MODULES 100
@@ -712,7 +713,7 @@ void check_and_process_dci(nfapi_nr_dl_tti_request_t *dl_tti_request,
{
frame = tx_data_request->SFN;
slot = tx_data_request->Slot;
- LOG_I(NR_PHY, "[%d, %d] PDSCH in tx_request\n", frame, slot);
+ LOG_D(NR_PHY, "[%d, %d] PDSCH in tx_request\n", frame, slot);
copy_tx_data_req_to_dl_info(&mac->dl_info, tx_data_request);
}
else
@@ -735,7 +736,6 @@ void check_and_process_dci(nfapi_nr_dl_tti_request_t *dl_tti_request,
slot = ul_tti_request->Slot;
LOG_T(NR_PHY, "[%d, %d] ul_tti_request\n", frame, slot);
copy_ul_tti_data_req_to_dl_info(&mac->dl_info, ul_tti_request);
- free_and_zero(ul_tti_request);
}
else
{
@@ -1016,16 +1016,17 @@ void *nrue_standalone_pnf_task(void *context)
nr_phy_channel_params_t *ch_info = CALLOC(1, sizeof(*ch_info));
memcpy(ch_info, buffer, sizeof(*ch_info));
- if (ch_info->nb_of_sinrs > 1)
- LOG_W(NR_PHY, "Expecting at most one SINR.\n");
+ if (ch_info->nb_of_csi > 1)
+ LOG_W(NR_PHY, "Expecting only one CSI report.\n");
// TODO: Update sinr field of slot_rnti_mcs to be array.
- for (int i = 0; i < ch_info->nb_of_sinrs; ++i)
+ for (int i = 0; i < ch_info->nb_of_csi; ++i)
{
- slot_rnti_mcs[NFAPI_SFNSLOT2SLOT(ch_info->sfn_slot)].sinr = ch_info->sinr[i];
+ slot_rnti_mcs[NFAPI_SFNSLOT2SLOT(ch_info->sfn_slot)].sinr = ch_info->csi[i].sinr;
+ slot_rnti_mcs[NFAPI_SFNSLOT2SLOT(ch_info->sfn_slot)].area_code = ch_info->csi[i].area_code;
- LOG_T(NR_PHY, "Received_SINR[%d] = %f, sfn:slot %d:%d\n",
- i, ch_info->sinr[i], NFAPI_SFNSLOT2SFN(ch_info->sfn_slot), NFAPI_SFNSLOT2SLOT(ch_info->sfn_slot));
+ LOG_D(NR_PHY, "Received_SINR[%d] = %f, sfn:slot %d:%d\n",
+ i, ch_info->csi[i].sinr, NFAPI_SFNSLOT2SFN(ch_info->sfn_slot), NFAPI_SFNSLOT2SLOT(ch_info->sfn_slot));
}
if (!put_queue(&nr_chan_param_queue, ch_info))
@@ -1240,6 +1241,7 @@ int nr_ue_dl_indication(nr_downlink_indication_t *dl_info, NR_UL_TIME_ALIGNMENT_
(dl_info->rx_ind->rx_indication_body+i)->pdsch_pdu.ack_nack,
(dl_info->rx_ind->rx_indication_body+i)->pdsch_pdu.pdu,
(dl_info->rx_ind->rx_indication_body+i)->pdsch_pdu.pdu_length)) << FAPI_NR_RX_PDU_TYPE_SIB;
+ free((dl_info->rx_ind->rx_indication_body+i)->pdsch_pdu.pdu);
break;
case FAPI_NR_RX_PDU_TYPE_DLSCH:
ret_mask |= (handle_dlsch(dl_info, ul_time_alignment, i)) << FAPI_NR_RX_PDU_TYPE_DLSCH;
@@ -1260,13 +1262,6 @@ int nr_ue_dl_indication(nr_downlink_indication_t *dl_info, NR_UL_TIME_ALIGNMENT_
free(dl_info->rx_ind);
dl_info->rx_ind = NULL;
}
-
- //clean up nr_downlink_indication_t *dl_info
- free(dl_info->dci_ind);
- dl_info->dci_ind = NULL;
- free(dl_info->rx_ind);
- dl_info->rx_ind = NULL;
-
}
return 0;
}
@@ -1314,29 +1309,29 @@ int nr_ue_dcireq(nr_dcireq_t *dcireq) {
return 0;
}
-void RCconfig_nr_ue_L1(void) {
+void RCconfig_nr_ue_macrlc(void) {
int j;
- paramdef_t L1_Params[] = L1PARAMS_DESC;
- paramlist_def_t L1_ParamList = {CONFIG_STRING_L1_LIST, NULL, 0};
+ paramdef_t MACRLC_Params[] = MACRLCPARAMS_DESC;
+ paramlist_def_t MACRLC_ParamList = {CONFIG_STRING_MACRLC_LIST, NULL, 0};
- config_getlist(&L1_ParamList, L1_Params, sizeof(L1_Params) / sizeof(paramdef_t), NULL);
- if (L1_ParamList.numelt > 0) {
- for (j = 0; j < L1_ParamList.numelt; j++) {
- if (strcmp(*(L1_ParamList.paramarray[j][L1_TRANSPORT_N_PREFERENCE_IDX].strptr), "nfapi") == 0) {
+ config_getlist(&MACRLC_ParamList, MACRLC_Params, sizeof(MACRLC_Params) / sizeof(paramdef_t), NULL);
+ if (MACRLC_ParamList.numelt > 0) {
+ for (j = 0; j < MACRLC_ParamList.numelt; j++) {
+ if (strcmp(*(MACRLC_ParamList.paramarray[j][MACRLC_TRANSPORT_N_PREFERENCE_IDX].strptr), "nfapi") == 0) {
stub_eth_params.local_if_name = strdup(
- *(L1_ParamList.paramarray[j][L1_LOCAL_N_IF_NAME_IDX].strptr));
+ *(MACRLC_ParamList.paramarray[j][MACRLC_LOCAL_N_IF_NAME_IDX].strptr));
stub_eth_params.my_addr = strdup(
- *(L1_ParamList.paramarray[j][L1_LOCAL_N_ADDRESS_IDX].strptr));
+ *(MACRLC_ParamList.paramarray[j][MACRLC_LOCAL_N_ADDRESS_IDX].strptr));
stub_eth_params.remote_addr = strdup(
- *(L1_ParamList.paramarray[j][L1_REMOTE_N_ADDRESS_IDX].strptr));
+ *(MACRLC_ParamList.paramarray[j][MACRLC_REMOTE_N_ADDRESS_IDX].strptr));
stub_eth_params.my_portc =
- *(L1_ParamList.paramarray[j][L1_LOCAL_N_PORTC_IDX].iptr);
+ *(MACRLC_ParamList.paramarray[j][MACRLC_LOCAL_N_PORTC_IDX].iptr);
stub_eth_params.remote_portc =
- *(L1_ParamList.paramarray[j][L1_REMOTE_N_PORTC_IDX].iptr);
+ *(MACRLC_ParamList.paramarray[j][MACRLC_REMOTE_N_PORTC_IDX].iptr);
stub_eth_params.my_portd =
- *(L1_ParamList.paramarray[j][L1_LOCAL_N_PORTD_IDX].iptr);
+ *(MACRLC_ParamList.paramarray[j][MACRLC_LOCAL_N_PORTD_IDX].iptr);
stub_eth_params.remote_portd =
- *(L1_ParamList.paramarray[j][L1_REMOTE_N_PORTD_IDX].iptr);
+ *(MACRLC_ParamList.paramarray[j][MACRLC_REMOTE_N_PORTD_IDX].iptr);
stub_eth_params.transp_preference = ETH_UDP_MODE;
}
}
diff --git a/openair2/NR_UE_PHY_INTERFACE/NR_Packet_Drop.c b/openair2/NR_UE_PHY_INTERFACE/NR_Packet_Drop.c
index 97938c6b02..59d6b6b673 100644
--- a/openair2/NR_UE_PHY_INTERFACE/NR_Packet_Drop.c
+++ b/openair2/NR_UE_PHY_INTERFACE/NR_Packet_Drop.c
@@ -181,3 +181,27 @@ bool should_drop_transport_block(int slot, uint16_t rnti)
}
return false;
}
+
+int get_mcs_from_sinr(nr_bler_struct *nr_bler_data, float sinr)
+{
+ if (sinr < (nr_bler_data[0].bler_table[0][0])) {
+ LOG_I(NR_MAC, "The SINR found is smaller than first MCS table\n");
+ return 0;
+ }
+
+ if (sinr > (nr_bler_data[NR_NUM_MCS-1].bler_table[nr_bler_data[NR_NUM_MCS-1].length - 1][0])) {
+ LOG_I(NR_MAC, "The SINR found is larger than last MCS table\n");
+ return NR_NUM_MCS-1;
+ }
+
+ for (int n = NR_NUM_MCS-1; n >= 0; n--) {
+ float largest_sinr = (nr_bler_data[n].bler_table[nr_bler_data[n].length - 1][0]);
+ float smallest_sinr = (nr_bler_data[n].bler_table[0][0]);
+ if (sinr < largest_sinr && sinr > smallest_sinr) {
+ LOG_I(NR_MAC, "The SINR found in MCS %d table\n", n);
+ return n;
+ }
+ }
+ LOG_E(NR_MAC, "Unable to get an MCS value.\n");
+ abort();
+}
diff --git a/openair2/NR_UE_PHY_INTERFACE/NR_Packet_Drop.h b/openair2/NR_UE_PHY_INTERFACE/NR_Packet_Drop.h
index 549eb5c2e3..340d07fb48 100644
--- a/openair2/NR_UE_PHY_INTERFACE/NR_Packet_Drop.h
+++ b/openair2/NR_UE_PHY_INTERFACE/NR_Packet_Drop.h
@@ -27,42 +27,57 @@
#include "openair2/NR_PHY_INTERFACE/NR_IF_Module.h"
#define NR_NUM_MCS 29
-#define NUM_SINR 100
+#define NR_NUM_SINR 372
#define NUM_BLER_COL 13
#define NUM_NFAPI_SLOT 20
#define NR_NUM_LAYER 1
-#define MAX_CHAN_PARAMS 256
+#define MAX_NR_CHAN_PARAMS 256
-typedef struct nr_phy_channel_params_t
-{
- uint16_t sfn_slot;
- uint16_t message_id;
- uint16_t nb_of_sinrs;
- float sinr[NR_NUM_LAYER];
+typedef struct NR_UL_TIME_ALIGNMENT NR_UL_TIME_ALIGNMENT_t;
+
+typedef struct {
+ float sinr;
+ float rsrp;
+ float rsrq;
+ uint8_t source;
+ uint8_t pmi;
+ uint8_t ri;
+ uint8_t cqi;
+ uint8_t area_code;
+} nr_channel_status;
+
+typedef struct nr_phy_channel_params_t {
+ uint16_t sfn_slot;
+ uint16_t message_id;
+ uint16_t nb_of_csi;
+ nr_channel_status csi[NR_NUM_LAYER];
} nr_phy_channel_params_t;
-typedef struct
-{
- uint8_t slot;
- uint16_t rnti[MAX_CHAN_PARAMS];
- uint8_t mcs[MAX_CHAN_PARAMS];
- uint8_t rvIndex[MAX_CHAN_PARAMS];
- float sinr;
- uint16_t num_pdus;
- bool drop_flag[MAX_CHAN_PARAMS];
- bool latest;
+typedef struct {
+ uint8_t slot;
+ uint16_t rnti[MAX_NR_CHAN_PARAMS];
+ uint8_t mcs[MAX_NR_CHAN_PARAMS];
+ uint8_t rvIndex[MAX_NR_CHAN_PARAMS];
+ float sinr;
+ uint16_t num_pdus;
+ bool drop_flag[MAX_NR_CHAN_PARAMS];
+ bool latest;
+ uint8_t area_code;
} slot_rnti_mcs_s;
-typedef struct
-{
- uint16_t length;
- float bler_table[NUM_SINR][NUM_BLER_COL];
+typedef struct {
+ uint16_t length;
+ float bler_table[NR_NUM_SINR][NUM_BLER_COL];
} nr_bler_struct;
+extern nr_bler_struct nr_bler_data[NR_NUM_MCS];
+extern nr_bler_struct nr_mimo_bler_data[NR_NUM_MCS];
+
void read_channel_param(const nfapi_nr_dl_tti_pdsch_pdu_rel15_t * pdu, int sf, int index);
void save_pdsch_pdu_for_crnti(nfapi_nr_dl_tti_request_t *dl_tti_request);
float get_bler_val(uint8_t mcs, int sinr);
bool should_drop_transport_block(int slot, uint16_t rnti);
bool is_channel_modeling(void);
+int get_mcs_from_sinr(nr_bler_struct *nr_bler_data, float sinr);
#endif
diff --git a/openair2/PHY_INTERFACE/IF_Module.h b/openair2/PHY_INTERFACE/IF_Module.h
index d446c23938..f306903f5f 100644
--- a/openair2/PHY_INTERFACE/IF_Module.h
+++ b/openair2/PHY_INTERFACE/IF_Module.h
@@ -38,7 +38,7 @@
#include "nfapi_interface.h"
#include "platform_types.h"
#include
-#include
+#include
#define MAX_NUM_DL_PDU 100
diff --git a/openair2/PHY_INTERFACE/UE_MAC_interface.h b/openair2/PHY_INTERFACE/UE_MAC_interface.h
index 207c3293b4..e7a833adfa 100644
--- a/openair2/PHY_INTERFACE/UE_MAC_interface.h
+++ b/openair2/PHY_INTERFACE/UE_MAC_interface.h
@@ -38,7 +38,7 @@
#include "nfapi_interface.h"
#include "openair1/PHY/defs_RU.h"
-#include "targets/COMMON/openairinterface5g_limits.h"
+#include "common/openairinterface5g_limits.h"
#define MAX_NUM_DL_PDU 100
#define MAX_NUM_UL_PDU 100
diff --git a/openair2/PHY_INTERFACE/phy_stub_UE.c b/openair2/PHY_INTERFACE/phy_stub_UE.c
index 28aeac880a..dfc82fa017 100644
--- a/openair2/PHY_INTERFACE/phy_stub_UE.c
+++ b/openair2/PHY_INTERFACE/phy_stub_UE.c
@@ -27,7 +27,7 @@
#include "openair2/PHY_INTERFACE/phy_stub_UE.h"
#include "openair2/ENB_APP/L1_paramdef.h"
#include "openair2/ENB_APP/enb_paramdef.h"
-#include "sdr/ETHERNET/USERSPACE/LIB/if_defs.h"
+#include "radio/ETHERNET/USERSPACE/LIB/if_defs.h"
#include "common/config/config_load_configmodule.h"
#include "common/config/config_userapi.h"
#include
diff --git a/openair2/RRC/LTE/defs_NB_IoT.h b/openair2/RRC/LTE/defs_NB_IoT.h
index 17ef77ff17..8f19d62cea 100644
--- a/openair2/RRC/LTE/defs_NB_IoT.h
+++ b/openair2/RRC/LTE/defs_NB_IoT.h
@@ -42,7 +42,7 @@
#include "rrc_types_NB_IoT.h"
#include "COMMON/platform_constants.h"
#include "COMMON/platform_types.h"
-#include "openairinterface5g_limits.h"
+#include "common/openairinterface5g_limits.h"
#include "COMMON/mac_rrc_primitives.h"
diff --git a/openair2/RRC/NR/MESSAGES/asn1_msg.c b/openair2/RRC/NR/MESSAGES/asn1_msg.c
index 82ecf18812..9b782cc9bb 100755
--- a/openair2/RRC/NR/MESSAGES/asn1_msg.c
+++ b/openair2/RRC/NR/MESSAGES/asn1_msg.c
@@ -1018,78 +1018,7 @@ void fill_initial_SpCellConfig(int uid,
config_pucch_resset1(pucch_Config, NULL);
set_pucch_power_config(pucch_Config, configuration->do_CSIRS);
- initialUplinkBWP->pusch_Config = calloc(1,sizeof(*initialUplinkBWP->pusch_Config));
- initialUplinkBWP->pusch_Config->present = NR_SetupRelease_PUSCH_Config_PR_setup;
- NR_PUSCH_Config_t *pusch_Config = calloc(1,sizeof(*pusch_Config));
- initialUplinkBWP->pusch_Config->choice.setup = pusch_Config;
- pusch_Config->dataScramblingIdentityPUSCH = NULL;
- pusch_Config->txConfig=calloc(1,sizeof(*pusch_Config->txConfig));
- *pusch_Config->txConfig= NR_PUSCH_Config__txConfig_codebook;
- pusch_Config->dmrs_UplinkForPUSCH_MappingTypeA = NULL;
- pusch_Config->dmrs_UplinkForPUSCH_MappingTypeB = calloc(1,sizeof(*pusch_Config->dmrs_UplinkForPUSCH_MappingTypeB));
- pusch_Config->dmrs_UplinkForPUSCH_MappingTypeB->present = NR_SetupRelease_DMRS_UplinkConfig_PR_setup;
- pusch_Config->dmrs_UplinkForPUSCH_MappingTypeB->choice.setup = calloc(1,sizeof(*pusch_Config->dmrs_UplinkForPUSCH_MappingTypeB->choice.setup));
- NR_DMRS_UplinkConfig_t *NR_DMRS_UplinkConfig = pusch_Config->dmrs_UplinkForPUSCH_MappingTypeB->choice.setup;
- NR_DMRS_UplinkConfig->dmrs_Type = NULL;
- NR_DMRS_UplinkConfig->dmrs_AdditionalPosition = NULL; /*calloc(1,sizeof(*NR_DMRS_UplinkConfig->dmrs_AdditionalPosition));
- *NR_DMRS_UplinkConfig->dmrs_AdditionalPosition = NR_DMRS_UplinkConfig__dmrs_AdditionalPosition_pos0;*/
- NR_DMRS_UplinkConfig->phaseTrackingRS=NULL;
- NR_DMRS_UplinkConfig->maxLength=NULL;
- NR_DMRS_UplinkConfig->transformPrecodingDisabled = calloc(1,sizeof(*NR_DMRS_UplinkConfig->transformPrecodingDisabled));
- NR_DMRS_UplinkConfig->transformPrecodingDisabled->scramblingID0 = NULL;
- NR_DMRS_UplinkConfig->transformPrecodingDisabled->scramblingID1 = NULL;
- NR_DMRS_UplinkConfig->transformPrecodingEnabled = NULL;
- pusch_Config->pusch_PowerControl = calloc(1,sizeof(*pusch_Config->pusch_PowerControl));
- pusch_Config->pusch_PowerControl->tpc_Accumulation = NULL;
- pusch_Config->pusch_PowerControl->msg3_Alpha = calloc(1,sizeof(*pusch_Config->pusch_PowerControl->msg3_Alpha));
- *pusch_Config->pusch_PowerControl->msg3_Alpha = NR_Alpha_alpha1;
- pusch_Config->pusch_PowerControl->p0_NominalWithoutGrant = calloc(1,sizeof(*pusch_Config->pusch_PowerControl->p0_NominalWithoutGrant));
- *pusch_Config->pusch_PowerControl->p0_NominalWithoutGrant = -76;
- pusch_Config->pusch_PowerControl->p0_AlphaSets = calloc(1,sizeof(*pusch_Config->pusch_PowerControl->p0_AlphaSets));
- NR_P0_PUSCH_AlphaSet_t *aset = calloc(1,sizeof(*aset));
- aset->p0_PUSCH_AlphaSetId=0;
- aset->p0=calloc(1,sizeof(*aset->p0));
- *aset->p0 = 0;
- aset->alpha=calloc(1,sizeof(*aset->alpha));
- *aset->alpha=NR_Alpha_alpha1;
- ASN_SEQUENCE_ADD(&pusch_Config->pusch_PowerControl->p0_AlphaSets->list,aset);
- pusch_Config->pusch_PowerControl->pathlossReferenceRSToAddModList = calloc(1,sizeof(*pusch_Config->pusch_PowerControl->pathlossReferenceRSToAddModList));
- NR_PUSCH_PathlossReferenceRS_t *plrefRS = calloc(1,sizeof(*plrefRS));
- plrefRS->pusch_PathlossReferenceRS_Id=0;
- plrefRS->referenceSignal.present = NR_PUSCH_PathlossReferenceRS__referenceSignal_PR_ssb_Index;
- plrefRS->referenceSignal.choice.ssb_Index = 0;
- ASN_SEQUENCE_ADD(&pusch_Config->pusch_PowerControl->pathlossReferenceRSToAddModList->list,plrefRS);
- pusch_Config->pusch_PowerControl->pathlossReferenceRSToReleaseList = NULL;
- pusch_Config->pusch_PowerControl->twoPUSCH_PC_AdjustmentStates = NULL;
- pusch_Config->pusch_PowerControl->deltaMCS = calloc(1, sizeof(*pusch_Config->pusch_PowerControl->deltaMCS));
- *pusch_Config->pusch_PowerControl->deltaMCS = NR_PUSCH_PowerControl__deltaMCS_enabled;
- pusch_Config->pusch_PowerControl->sri_PUSCH_MappingToAddModList = calloc(1,sizeof(*pusch_Config->pusch_PowerControl->sri_PUSCH_MappingToAddModList));
- NR_SRI_PUSCH_PowerControl_t *sriPUSCHPC=calloc(1,sizeof(*sriPUSCHPC));
- sriPUSCHPC->sri_PUSCH_PowerControlId=0;
- sriPUSCHPC->sri_PUSCH_PathlossReferenceRS_Id=0;
- sriPUSCHPC->sri_P0_PUSCH_AlphaSetId=0;
- sriPUSCHPC->sri_PUSCH_ClosedLoopIndex=NR_SRI_PUSCH_PowerControl__sri_PUSCH_ClosedLoopIndex_i0;
- ASN_SEQUENCE_ADD(&pusch_Config->pusch_PowerControl->sri_PUSCH_MappingToAddModList->list,sriPUSCHPC);
- pusch_Config->pusch_PowerControl->sri_PUSCH_MappingToReleaseList = NULL;
- pusch_Config->frequencyHopping=NULL;
- pusch_Config->frequencyHoppingOffsetLists=NULL;
- pusch_Config->resourceAllocation = NR_PUSCH_Config__resourceAllocation_resourceAllocationType1;
- pusch_Config->pusch_TimeDomainAllocationList = NULL;
- pusch_Config->pusch_AggregationFactor=NULL;
- pusch_Config->mcs_Table=NULL;
- pusch_Config->mcs_TableTransformPrecoder=NULL;
- pusch_Config->transformPrecoder= NULL;
- if (scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->msg3_transformPrecoder == NULL) {
- pusch_Config->transformPrecoder=calloc(1,sizeof(*pusch_Config->transformPrecoder));
- *pusch_Config->transformPrecoder = NR_PUSCH_Config__transformPrecoder_disabled;
- }
- pusch_Config->codebookSubset=calloc(1,sizeof(*pusch_Config->codebookSubset));
- *pusch_Config->codebookSubset = NR_PUSCH_Config__codebookSubset_nonCoherent;
- pusch_Config->maxRank=calloc(1,sizeof(*pusch_Config->maxRank));
- *pusch_Config->maxRank= 1;
- pusch_Config->rbg_Size=NULL;
- pusch_Config->uci_OnPUSCH=NULL;
- pusch_Config->tp_pi2BPSK=NULL;
+ initialUplinkBWP->pusch_Config = config_pusch(NULL, scc);
long maxMIMO_Layers = uplinkConfig &&
uplinkConfig->pusch_ServingCellConfig &&
diff --git a/openair2/RRC/NR/nr_rrc_config.c b/openair2/RRC/NR/nr_rrc_config.c
index 33fbb8402e..eaf00371b5 100644
--- a/openair2/RRC/NR/nr_rrc_config.c
+++ b/openair2/RRC/NR/nr_rrc_config.c
@@ -870,6 +870,77 @@ void set_dl_mcs_table(int scs,
bwp_Dedicated->pdsch_Config->choice.setup->mcs_Table = NULL;
}
+struct NR_SetupRelease_PUSCH_Config *config_pusch(NR_PUSCH_Config_t *pusch_Config, const NR_ServingCellConfigCommon_t *scc)
+{
+ struct NR_SetupRelease_PUSCH_Config *setup_puschconfig = calloc(1, sizeof(*setup_puschconfig));
+ setup_puschconfig->present = NR_SetupRelease_PUSCH_Config_PR_setup;
+ if (!pusch_Config)
+ pusch_Config = calloc(1, sizeof(*pusch_Config));
+ setup_puschconfig->choice.setup = pusch_Config;
+
+ pusch_Config->dataScramblingIdentityPUSCH = NULL;
+ pusch_Config->txConfig = calloc(1, sizeof(*pusch_Config->txConfig));
+ *pusch_Config->txConfig = NR_PUSCH_Config__txConfig_codebook;
+ pusch_Config->dmrs_UplinkForPUSCH_MappingTypeA = NULL;
+ pusch_Config->dmrs_UplinkForPUSCH_MappingTypeB = calloc(1, sizeof(*pusch_Config->dmrs_UplinkForPUSCH_MappingTypeB));
+ pusch_Config->dmrs_UplinkForPUSCH_MappingTypeB->present = NR_SetupRelease_DMRS_UplinkConfig_PR_setup;
+ pusch_Config->dmrs_UplinkForPUSCH_MappingTypeB->choice.setup = calloc(1, sizeof(*pusch_Config->dmrs_UplinkForPUSCH_MappingTypeB->choice.setup));
+ NR_DMRS_UplinkConfig_t *NR_DMRS_UplinkConfig = pusch_Config->dmrs_UplinkForPUSCH_MappingTypeB->choice.setup;
+ NR_DMRS_UplinkConfig->dmrs_Type = NULL;
+ NR_DMRS_UplinkConfig->dmrs_AdditionalPosition = NULL;
+ NR_DMRS_UplinkConfig->phaseTrackingRS = NULL;
+ NR_DMRS_UplinkConfig->maxLength = NULL;
+ NR_DMRS_UplinkConfig->transformPrecodingDisabled = calloc(1, sizeof(*NR_DMRS_UplinkConfig->transformPrecodingDisabled));
+ NR_DMRS_UplinkConfig->transformPrecodingDisabled->scramblingID0 = NULL;
+ NR_DMRS_UplinkConfig->transformPrecodingDisabled->scramblingID1 = NULL;
+ NR_DMRS_UplinkConfig->transformPrecodingEnabled = NULL;
+ pusch_Config->pusch_PowerControl = calloc(1, sizeof(*pusch_Config->pusch_PowerControl));
+ pusch_Config->pusch_PowerControl->tpc_Accumulation = NULL;
+ pusch_Config->pusch_PowerControl->msg3_Alpha = calloc(1, sizeof(*pusch_Config->pusch_PowerControl->msg3_Alpha));
+ *pusch_Config->pusch_PowerControl->msg3_Alpha = NR_Alpha_alpha1;
+ pusch_Config->pusch_PowerControl->p0_NominalWithoutGrant = NULL;
+ pusch_Config->pusch_PowerControl->p0_AlphaSets = calloc(1, sizeof(*pusch_Config->pusch_PowerControl->p0_AlphaSets));
+ NR_P0_PUSCH_AlphaSet_t *aset = calloc(1, sizeof(*aset));
+ aset->p0_PUSCH_AlphaSetId = 0;
+ aset->p0 = calloc(1, sizeof(*aset->p0));
+ *aset->p0 = 0;
+ aset->alpha = calloc(1, sizeof(*aset->alpha));
+ *aset->alpha = NR_Alpha_alpha1;
+ ASN_SEQUENCE_ADD(&pusch_Config->pusch_PowerControl->p0_AlphaSets->list, aset);
+ pusch_Config->pusch_PowerControl->pathlossReferenceRSToAddModList = calloc(1, sizeof(*pusch_Config->pusch_PowerControl->pathlossReferenceRSToAddModList));
+ NR_PUSCH_PathlossReferenceRS_t *plrefRS = calloc(1, sizeof(*plrefRS));
+ plrefRS->pusch_PathlossReferenceRS_Id = 0;
+ plrefRS->referenceSignal.present = NR_PUSCH_PathlossReferenceRS__referenceSignal_PR_ssb_Index;
+ plrefRS->referenceSignal.choice.ssb_Index = 0;
+ ASN_SEQUENCE_ADD(&pusch_Config->pusch_PowerControl->pathlossReferenceRSToAddModList->list, plrefRS);
+ pusch_Config->pusch_PowerControl->pathlossReferenceRSToReleaseList = NULL;
+ pusch_Config->pusch_PowerControl->twoPUSCH_PC_AdjustmentStates = NULL;
+ pusch_Config->pusch_PowerControl->deltaMCS = calloc(1, sizeof(*pusch_Config->pusch_PowerControl->deltaMCS));
+ *pusch_Config->pusch_PowerControl->deltaMCS = NR_PUSCH_PowerControl__deltaMCS_enabled;
+ pusch_Config->pusch_PowerControl->sri_PUSCH_MappingToAddModList = NULL;
+ pusch_Config->pusch_PowerControl->sri_PUSCH_MappingToReleaseList = NULL;
+ pusch_Config->frequencyHopping = NULL;
+ pusch_Config->frequencyHoppingOffsetLists = NULL;
+ pusch_Config->resourceAllocation = NR_PUSCH_Config__resourceAllocation_resourceAllocationType1;
+ pusch_Config->pusch_TimeDomainAllocationList = NULL;
+ pusch_Config->pusch_AggregationFactor = NULL;
+ pusch_Config->mcs_Table = NULL;
+ pusch_Config->mcs_TableTransformPrecoder = NULL;
+ pusch_Config->transformPrecoder = NULL;
+ if (scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->msg3_transformPrecoder == NULL) {
+ pusch_Config->transformPrecoder = calloc(1, sizeof(*pusch_Config->transformPrecoder));
+ *pusch_Config->transformPrecoder = NR_PUSCH_Config__transformPrecoder_disabled;
+ }
+ pusch_Config->codebookSubset = calloc(1, sizeof(*pusch_Config->codebookSubset));
+ *pusch_Config->codebookSubset = NR_PUSCH_Config__codebookSubset_nonCoherent;
+ asn1cCallocOne(pusch_Config->maxRank, 1);
+ pusch_Config->rbg_Size = NULL;
+ pusch_Config->uci_OnPUSCH = NULL;
+ pusch_Config->tp_pi2BPSK = NULL;
+
+ return setup_puschconfig;
+}
+
void config_downlinkBWP(NR_BWP_Downlink_t *bwp,
const NR_ServingCellConfigCommon_t *scc,
const NR_ServingCellConfig_t *servingcellconfigdedicated,
@@ -1098,73 +1169,12 @@ void config_uplinkBWP(NR_BWP_Uplink_t *ubwp,
scheduling_request_config(scc, pucch_Config);
set_dl_DataToUL_ACK(pucch_Config, configuration->minRXTXTIME);
- ubwp->bwp_Dedicated->pusch_Config = calloc(1,sizeof(*ubwp->bwp_Dedicated->pusch_Config));
- ubwp->bwp_Dedicated->pusch_Config->present = NR_SetupRelease_PUSCH_Config_PR_setup;
NR_PUSCH_Config_t *pusch_Config = NULL;
if(servingcellconfigdedicated->uplinkConfig->uplinkBWP_ToAddModList &&
bwp_loop < servingcellconfigdedicated->uplinkConfig->uplinkBWP_ToAddModList->list.count) {
pusch_Config = servingcellconfigdedicated->uplinkConfig->uplinkBWP_ToAddModList->list.array[bwp_loop]->bwp_Dedicated->pusch_Config->choice.setup;
- } else {
- pusch_Config = calloc(1,sizeof(*pusch_Config));
}
- ubwp->bwp_Dedicated->pusch_Config->choice.setup = pusch_Config;
- pusch_Config->txConfig=calloc(1,sizeof(*pusch_Config->txConfig));
- *pusch_Config->txConfig= NR_PUSCH_Config__txConfig_codebook;
- pusch_Config->dmrs_UplinkForPUSCH_MappingTypeA = NULL;
- if (!pusch_Config->dmrs_UplinkForPUSCH_MappingTypeB) {
- pusch_Config->dmrs_UplinkForPUSCH_MappingTypeB = calloc(1,sizeof(*pusch_Config->dmrs_UplinkForPUSCH_MappingTypeB));
- pusch_Config->dmrs_UplinkForPUSCH_MappingTypeB->present = NR_SetupRelease_DMRS_UplinkConfig_PR_setup;
- pusch_Config->dmrs_UplinkForPUSCH_MappingTypeB->choice.setup = calloc(1,sizeof(*pusch_Config->dmrs_UplinkForPUSCH_MappingTypeB->choice.setup));
- }
- NR_DMRS_UplinkConfig_t *NR_DMRS_UplinkConfig = pusch_Config->dmrs_UplinkForPUSCH_MappingTypeB->choice.setup;
- NR_DMRS_UplinkConfig->dmrs_Type = NULL;
- NR_DMRS_UplinkConfig->dmrs_AdditionalPosition = calloc(1,sizeof(*NR_DMRS_UplinkConfig->dmrs_AdditionalPosition));
- *NR_DMRS_UplinkConfig->dmrs_AdditionalPosition = NR_DMRS_UplinkConfig__dmrs_AdditionalPosition_pos0;
- NR_DMRS_UplinkConfig->phaseTrackingRS=NULL;
- NR_DMRS_UplinkConfig->maxLength=NULL;
- NR_DMRS_UplinkConfig->transformPrecodingDisabled = calloc(1,sizeof(*NR_DMRS_UplinkConfig->transformPrecodingDisabled));
- NR_DMRS_UplinkConfig->transformPrecodingDisabled->scramblingID0 = NULL;
- NR_DMRS_UplinkConfig->transformPrecodingDisabled->scramblingID1 = NULL;
- NR_DMRS_UplinkConfig->transformPrecodingEnabled = NULL;
- pusch_Config->pusch_PowerControl = calloc(1,sizeof(*pusch_Config->pusch_PowerControl));
- pusch_Config->pusch_PowerControl->tpc_Accumulation = NULL;
- pusch_Config->pusch_PowerControl->msg3_Alpha = calloc(1,sizeof(*pusch_Config->pusch_PowerControl->msg3_Alpha));
- *pusch_Config->pusch_PowerControl->msg3_Alpha = NR_Alpha_alpha1;
- pusch_Config->pusch_PowerControl->p0_NominalWithoutGrant = NULL;
- pusch_Config->pusch_PowerControl->p0_AlphaSets = calloc(1,sizeof(*pusch_Config->pusch_PowerControl->p0_AlphaSets));
- NR_P0_PUSCH_AlphaSet_t *aset = calloc(1,sizeof(*aset));
- aset->p0_PUSCH_AlphaSetId=0;
- aset->p0=calloc(1,sizeof(*aset->p0));
- *aset->p0 = 0;
- aset->alpha=calloc(1,sizeof(*aset->alpha));
- *aset->alpha=NR_Alpha_alpha1;
- ASN_SEQUENCE_ADD(&pusch_Config->pusch_PowerControl->p0_AlphaSets->list,aset);
- pusch_Config->pusch_PowerControl->pathlossReferenceRSToAddModList = NULL;
- pusch_Config->pusch_PowerControl->pathlossReferenceRSToReleaseList = NULL;
- pusch_Config->pusch_PowerControl->twoPUSCH_PC_AdjustmentStates = NULL;
- pusch_Config->pusch_PowerControl->deltaMCS = calloc(1, sizeof(*pusch_Config->pusch_PowerControl->deltaMCS));
- *pusch_Config->pusch_PowerControl->deltaMCS = NR_PUSCH_PowerControl__deltaMCS_enabled;
- pusch_Config->pusch_PowerControl->sri_PUSCH_MappingToAddModList = NULL;
- pusch_Config->pusch_PowerControl->sri_PUSCH_MappingToReleaseList = NULL;
- pusch_Config->frequencyHopping=NULL;
- pusch_Config->frequencyHoppingOffsetLists=NULL;
- pusch_Config->resourceAllocation = NR_PUSCH_Config__resourceAllocation_resourceAllocationType1;
- pusch_Config->pusch_TimeDomainAllocationList = NULL;
- pusch_Config->pusch_AggregationFactor=NULL;
- pusch_Config->mcs_Table=NULL;
- pusch_Config->mcs_TableTransformPrecoder=NULL;
- pusch_Config->transformPrecoder= NULL;
- if (scc->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->msg3_transformPrecoder == NULL) {
- pusch_Config->transformPrecoder=calloc(1,sizeof(*pusch_Config->transformPrecoder));
- *pusch_Config->transformPrecoder = NR_PUSCH_Config__transformPrecoder_disabled;
- }
- pusch_Config->codebookSubset=calloc(1,sizeof(*pusch_Config->codebookSubset));
- *pusch_Config->codebookSubset = NR_PUSCH_Config__codebookSubset_nonCoherent;
- pusch_Config->maxRank=calloc(1,sizeof(*pusch_Config->maxRank));
- *pusch_Config->maxRank= 1;
- pusch_Config->rbg_Size=NULL;
- pusch_Config->uci_OnPUSCH=NULL;
- pusch_Config->tp_pi2BPSK=NULL;
+ ubwp->bwp_Dedicated->pusch_Config = config_pusch(pusch_Config, scc);
long maxMIMO_Layers = servingcellconfigdedicated &&
servingcellconfigdedicated->uplinkConfig
diff --git a/openair2/RRC/NR/nr_rrc_config.h b/openair2/RRC/NR/nr_rrc_config.h
index 27d6c5f080..156db46d3b 100644
--- a/openair2/RRC/NR/nr_rrc_config.h
+++ b/openair2/RRC/NR/nr_rrc_config.h
@@ -161,6 +161,7 @@ void prepare_sim_uecap(NR_UE_NR_Capability_t *cap,
int numerology,
int rbsize,
int mcs_table);
+struct NR_SetupRelease_PUSCH_Config *config_pusch(NR_PUSCH_Config_t *pusch_Config, const NR_ServingCellConfigCommon_t *scc);
void config_downlinkBWP(NR_BWP_Downlink_t *bwp,
const NR_ServingCellConfigCommon_t *scc,
const NR_ServingCellConfig_t *servingcellconfigdedicated,
diff --git a/openair2/RRC/NR/rrc_gNB_reconfig.c b/openair2/RRC/NR/rrc_gNB_reconfig.c
index 01abd58659..c9702fedd2 100644
--- a/openair2/RRC/NR/rrc_gNB_reconfig.c
+++ b/openair2/RRC/NR/rrc_gNB_reconfig.c
@@ -378,106 +378,12 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
NR_BWP_UplinkDedicated_t *initialUplinkBWP = calloc(1,sizeof(*initialUplinkBWP));
secondaryCellGroup->spCellConfig->spCellConfigDedicated->uplinkConfig->initialUplinkBWP = initialUplinkBWP;
initialUplinkBWP->pucch_Config = NULL;
- initialUplinkBWP->pusch_Config = calloc(1,sizeof(*initialUplinkBWP->pusch_Config));
- initialUplinkBWP->pusch_Config->present = NR_SetupRelease_PUSCH_Config_PR_setup;
NR_PUSCH_Config_t *pusch_Config = NULL;
if (servingcellconfigdedicated->uplinkConfig->uplinkBWP_ToAddModList) {
pusch_Config = servingcellconfigdedicated->uplinkConfig->uplinkBWP_ToAddModList->list.array[0]->bwp_Dedicated->pusch_Config->choice.setup;
- } else {
- pusch_Config = calloc(1,sizeof(*pusch_Config));
- }
- initialUplinkBWP->pusch_Config->choice.setup = pusch_Config;
- pusch_Config->txConfig=calloc(1,sizeof(*pusch_Config->txConfig));
- *pusch_Config->txConfig= NR_PUSCH_Config__txConfig_codebook;
- pusch_Config->dmrs_UplinkForPUSCH_MappingTypeA = NULL;
- if (!pusch_Config->dmrs_UplinkForPUSCH_MappingTypeB) {
- pusch_Config->dmrs_UplinkForPUSCH_MappingTypeB = calloc(1,sizeof(*pusch_Config->dmrs_UplinkForPUSCH_MappingTypeB));
- pusch_Config->dmrs_UplinkForPUSCH_MappingTypeB->present = NR_SetupRelease_DMRS_UplinkConfig_PR_setup;
- pusch_Config->dmrs_UplinkForPUSCH_MappingTypeB->choice.setup = calloc(1,sizeof(*pusch_Config->dmrs_UplinkForPUSCH_MappingTypeB->choice.setup));
- }
- NR_DMRS_UplinkConfig_t *NR_DMRS_UplinkConfig = pusch_Config->dmrs_UplinkForPUSCH_MappingTypeB->choice.setup;
- NR_DMRS_UplinkConfig->dmrs_Type = NULL;
- NR_DMRS_UplinkConfig->dmrs_AdditionalPosition = calloc(1,sizeof(*NR_DMRS_UplinkConfig->dmrs_AdditionalPosition));
- *NR_DMRS_UplinkConfig->dmrs_AdditionalPosition = NR_DMRS_UplinkConfig__dmrs_AdditionalPosition_pos0;
- if (!servingcellconfigdedicated) {
- NR_DMRS_UplinkConfig->phaseTrackingRS=NULL;
- }
- NR_DMRS_UplinkConfig->maxLength=NULL;
- NR_DMRS_UplinkConfig->transformPrecodingDisabled = calloc(1,sizeof(*NR_DMRS_UplinkConfig->transformPrecodingDisabled));
- NR_DMRS_UplinkConfig->transformPrecodingDisabled->scramblingID0 = NULL;
- NR_DMRS_UplinkConfig->transformPrecodingDisabled->scramblingID1 = NULL;
- NR_DMRS_UplinkConfig->transformPrecodingEnabled = NULL;
- pusch_Config->pusch_PowerControl = calloc(1,sizeof(*pusch_Config->pusch_PowerControl));
- pusch_Config->pusch_PowerControl->tpc_Accumulation = NULL;
- pusch_Config->pusch_PowerControl->msg3_Alpha = calloc(1,sizeof(*pusch_Config->pusch_PowerControl->msg3_Alpha));
- *pusch_Config->pusch_PowerControl->msg3_Alpha = NR_Alpha_alpha1;
- pusch_Config->pusch_PowerControl->p0_NominalWithoutGrant = NULL;
- pusch_Config->pusch_PowerControl->p0_AlphaSets = calloc(1,sizeof(*pusch_Config->pusch_PowerControl->p0_AlphaSets));
- NR_P0_PUSCH_AlphaSet_t *aset = calloc(1,sizeof(*aset));
- aset->p0_PUSCH_AlphaSetId=0;
- aset->p0=calloc(1,sizeof(*aset->p0));
- *aset->p0 = 0;
- aset->alpha=calloc(1,sizeof(*aset->alpha));
- *aset->alpha=NR_Alpha_alpha1;
- ASN_SEQUENCE_ADD(&pusch_Config->pusch_PowerControl->p0_AlphaSets->list,aset);
- pusch_Config->pusch_PowerControl->pathlossReferenceRSToAddModList = NULL;
- pusch_Config->pusch_PowerControl->pathlossReferenceRSToReleaseList = NULL;
- pusch_Config->pusch_PowerControl->twoPUSCH_PC_AdjustmentStates = NULL;
- pusch_Config->pusch_PowerControl->deltaMCS = calloc(1, sizeof(*pusch_Config->pusch_PowerControl->deltaMCS));
- *pusch_Config->pusch_PowerControl->deltaMCS = NR_PUSCH_PowerControl__deltaMCS_enabled;
- pusch_Config->pusch_PowerControl->sri_PUSCH_MappingToAddModList = NULL;
- pusch_Config->pusch_PowerControl->sri_PUSCH_MappingToReleaseList = NULL;
- pusch_Config->frequencyHopping=NULL;
- pusch_Config->frequencyHoppingOffsetLists=NULL;
- pusch_Config->resourceAllocation = NR_PUSCH_Config__resourceAllocation_resourceAllocationType1;
- pusch_Config->pusch_TimeDomainAllocationList = NULL;
- pusch_Config->pusch_AggregationFactor=NULL;
- pusch_Config->mcs_Table=NULL;
- pusch_Config->transformPrecoder= NULL;
- pusch_Config->mcs_TableTransformPrecoder=NULL;
- /* if msg3_transformprecoding is set in conf file - pusch config should not disable it */
- if (servingcellconfigcommon->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->msg3_transformPrecoder == NULL) {
- pusch_Config->transformPrecoder=calloc(1,sizeof(*pusch_Config->transformPrecoder));
- *pusch_Config->transformPrecoder = NR_PUSCH_Config__transformPrecoder_disabled;
- }
- pusch_Config->codebookSubset=calloc(1,sizeof(*pusch_Config->codebookSubset));
- *pusch_Config->codebookSubset = NR_PUSCH_Config__codebookSubset_nonCoherent;
- pusch_Config->maxRank=calloc(1,sizeof(*pusch_Config->maxRank));
- *pusch_Config->maxRank= configuration->pusch_AntennaPorts;
- pusch_Config->rbg_Size=NULL;
- pusch_Config->uci_OnPUSCH=NULL;
- pusch_Config->tp_pi2BPSK=NULL;
-
- /*------------------------------TRANSFORM PRECODING- -----------------------------------------------------------------------*/
-
- uint8_t transformPrecoder = NR_PUSCH_Config__transformPrecoder_disabled;
-
- // TBD: configure this from .conf file, Dedicated params cannot yet be configured in .conf file.
- // Enable this to test transform precoding enabled from dedicated config.
- /*if (pusch_Config->transformPrecoder == NULL)
- pusch_Config->transformPrecoder=calloc(1,sizeof(*pusch_Config->transformPrecoder));
-
- *pusch_Config->transformPrecoder = NR_PUSCH_Config__transformPrecoder_enabled; */
- // END -------
-
- if (pusch_Config->transformPrecoder == NULL) {
- if (servingcellconfigcommon->uplinkConfigCommon->initialUplinkBWP->rach_ConfigCommon->choice.setup->msg3_transformPrecoder != NULL)
- transformPrecoder = NR_PUSCH_Config__transformPrecoder_enabled;
- }
- else
- transformPrecoder = *pusch_Config->transformPrecoder;
-
-
- if (transformPrecoder == NR_PUSCH_Config__transformPrecoder_enabled ) {
- /* Enable DMRS uplink config for transform precoding enabled */
- NR_DMRS_UplinkConfig->transformPrecodingEnabled = calloc(1,sizeof(*NR_DMRS_UplinkConfig->transformPrecodingEnabled));
- NR_DMRS_UplinkConfig->transformPrecodingEnabled->nPUSCH_Identity = NULL;
- NR_DMRS_UplinkConfig->transformPrecodingEnabled->sequenceGroupHopping = NULL;
- NR_DMRS_UplinkConfig->transformPrecodingEnabled->sequenceHopping = NULL;
- NR_DMRS_UplinkConfig->transformPrecodingEnabled->ext1 = NULL;
- LOG_I(RRC,"TRANSFORM PRECODING ENABLED......\n");
}
+ initialUplinkBWP->pusch_Config = config_pusch(pusch_Config, servingcellconfigcommon);
long maxMIMO_Layers = servingcellconfigdedicated->uplinkConfig &&
servingcellconfigdedicated->uplinkConfig->pusch_ServingCellConfig &&
diff --git a/openair2/UTIL/OMV/structures.h b/openair2/UTIL/OMV/structures.h
index 5c48641f86..5d3377b3de 100644
--- a/openair2/UTIL/OMV/structures.h
+++ b/openair2/UTIL/OMV/structures.h
@@ -31,7 +31,7 @@
#ifndef STRUCTURES_H
#define STRUCTURES_H
-#include "openairinterface5g_limits.h"
+#include "common/openairinterface5g_limits.h"
#ifndef __PHY_IMPLEMENTATION_DEFS_H__
#define Maxneighbor NUMBER_OF_UE_MAX
#ifndef NB_ANTENNAS_RX
diff --git a/openair2/UTIL/OTG/otg_defs.h b/openair2/UTIL/OTG/otg_defs.h
index af0260587f..e1107f824d 100644
--- a/openair2/UTIL/OTG/otg_defs.h
+++ b/openair2/UTIL/OTG/otg_defs.h
@@ -34,7 +34,7 @@
# define __OTG_DEFS_H__
/* \brief To define the NUMBER_OF_eNB_MAX and MAX_MOBILES_PER_ENB */
-#include "openairinterface5g_limits.h"
+#include "common/openairinterface5g_limits.h"
#include
#include "otg_config.h"
diff --git a/openair3/MME_APP/mme_config.c b/openair3/MME_APP/mme_config.c
index d51795a91a..b05d78510a 100644
--- a/openair3/MME_APP/mme_config.c
+++ b/openair3/MME_APP/mme_config.c
@@ -45,7 +45,7 @@
#include "LAYER2/MAC/mac_proto.h"
#include "PHY/phy_extern.h"
#include "PHY/INIT/phy_init.h"
-#include "sdr/ETHERNET/USERSPACE/LIB/ethernet_lib.h"
+#include "radio/ETHERNET/USERSPACE/LIB/ethernet_lib.h"
#include "nfapi_vnf.h"
#include "nfapi_pnf.h"
diff --git a/openair3/NAS/COMMON/API/NETWORK/as_message.c b/openair3/NAS/COMMON/API/NETWORK/as_message.c
index 4a2da21594..1a986ced1f 100644
--- a/openair3/NAS/COMMON/API/NETWORK/as_message.c
+++ b/openair3/NAS/COMMON/API/NETWORK/as_message.c
@@ -210,7 +210,9 @@ int as_message_encode(char* buffer, as_message_t* msg, int length)
as_nas_info_t nas_msg;
Byte_t *dataptr=NULL;
uint32_t len=0;
-
+
+ memset(&nas_msg, 0, sizeof(as_nas_info_t));
+
switch (msg->msgID) {
case AS_BROADCAST_INFO_IND:
/* Broadcast information */
diff --git a/openair3/NAS/UE/nas_ue_task.h b/openair3/NAS/UE/nas_ue_task.h
index 5615f366b7..a114757771 100644
--- a/openair3/NAS/UE/nas_ue_task.h
+++ b/openair3/NAS/UE/nas_ue_task.h
@@ -22,7 +22,7 @@
#ifndef NAS_UE_TASK_H_
#define NAS_UE_TASK_H_
-#include "openairinterface5g_limits.h"
+#include "common/openairinterface5g_limits.h"
#include "user_defs.h"
// XXX simple array container for multiple users
diff --git a/openair3/UTILS/conversions.c b/openair3/UTILS/conversions.c
deleted file mode 100644
index 2def84abb0..0000000000
--- a/openair3/UTILS/conversions.c
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The OpenAirInterface Software Alliance licenses this file to You under
- * the OAI Public License, Version 1.1 (the "License"); you may not use this file
- * except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.openairinterface.org/?page_id=698
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *-------------------------------------------------------------------------------
- * For more information about the OpenAirInterface (OAI) Software Alliance:
- * contact@openairinterface.org
- */
-
-#include
-#include
-#include
-
-#include "conversions.h"
-
-static const char hex_to_ascii_table[16] = {
- '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f',
-};
-
-static const signed char ascii_to_hex_table[0x100] = {
- -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
- -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
- -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,-1,-1,-1,-1,-1,-1,
- -1,10,11,12,13,14,15,-1,-1,-1,-1,-1,-1,-1,-1,-1,
- -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
- -1,10,11,12,13,14,15,-1,-1,-1,-1,-1,-1,-1,-1,-1,
- -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
- -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
- -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
- -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
- -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
- -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
- -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
- -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
- -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
-};
-
-void hexa_to_ascii(uint8_t *from, char *to, size_t length)
-{
- int i;
-
- for(i = 0; i < length; i++) {
- uint8_t upper = (from[i] & 0xf0) >> 4;
- uint8_t lower = from[i] & 0x0f;
- to[2 * i] = hex_to_ascii_table[upper];
- to[2 * i + 1] = hex_to_ascii_table[lower];
- }
-}
-
-int ascii_to_hex(uint8_t *dst, const char *h)
-{
- const unsigned char *hex = (const unsigned char *) h;
- unsigned i = 0;
-
- for (;;) {
- int high, low;
-
- while (*hex && isspace(*hex))
- hex++;
-
- if (!*hex)
- return 1;
-
- high = ascii_to_hex_table[*hex++];
-
- if (high < 0)
- return 0;
-
- while (*hex && isspace(*hex))
- hex++;
-
- if (!*hex)
- return 0;
-
- low = ascii_to_hex_table[*hex++];
-
- if (low < 0)
- return 0;
-
- dst[i++] = (high << 4) | low;
- }
-}
-
diff --git a/openair3/UTILS/conversions.h b/openair3/UTILS/conversions.h
index 0361c34f33..ad53c6f27d 100644
--- a/openair3/UTILS/conversions.h
+++ b/openair3/UTILS/conversions.h
@@ -560,8 +560,4 @@ do { \
#define GTP_TEID_TO_ASN1 INT32_TO_OCTET_STRING
#define OCTET_STRING_TO_TAC OCTET_STRING_TO_INT16
-void hexa_to_ascii(uint8_t *from, char *to, size_t length);
-
-int ascii_to_hex(uint8_t *dst, const char *h);
-
#endif /* CONVERSIONS_H_ */
diff --git a/openair3/UTILS/enum_string.c b/openair3/UTILS/enum_string.c
deleted file mode 100644
index c2eccc7a9e..0000000000
--- a/openair3/UTILS/enum_string.c
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The OpenAirInterface Software Alliance licenses this file to You under
- * the OAI Public License, Version 1.1 (the "License"); you may not use this file
- * except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.openairinterface.org/?page_id=698
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *-------------------------------------------------------------------------------
- * For more information about the OpenAirInterface (OAI) Software Alliance:
- * contact@openairinterface.org
- */
-
-#include
-#include
-#include
-
-#include "common_types.h"
-
-#include "enum_string.h"
-
-enum_to_string_t rat_to_string[NUMBER_OF_RAT_TYPE] = {
- { RAT_WLAN, "WLAN" },
- { RAT_VIRTUAL, "VIRUTAL" },
- { RAT_UTRAN, "UTRAN" },
- { RAT_GERAN, "GERAN" },
- { RAT_GAN, "GAN" },
- { RAT_HSPA_EVOLUTION, "HSPA_EVOLUTION" },
- { RAT_EUTRAN, "E-UTRAN" },
- { RAT_CDMA2000_1X, "CDMA2000_1X" },
- { RAT_HRPD, "HRPD" },
- { RAT_UMB, "UMB" },
- { RAT_EHRPD, "EHRPD" },
-};
-
-enum_to_string_t network_access_mode_to_string[NAM_MAX] = {
- { NAM_PACKET_AND_CIRCUIT, "PACKET AND CIRCUIT" },
- { NAM_RESERVED, "RESERVED" },
- { NAM_ONLY_PACKET, "ONLY PACKET" },
-};
-
-enum_to_string_t all_apn_conf_ind_to_string[ALL_APN_MAX] = {
- { ALL_APN_CONFIGURATIONS_INCLUDED, "ALL APN CONFIGURATIONS INCLUDED" },
- { MODIFIED_ADDED_APN_CONFIGURATIONS_INCLUDED, "MODIFIED ADDED APN CONFIGURATIONS INCLUDED" },
-};
-
-enum_to_string_t pdn_type_to_string[IP_MAX] = {
- { IPv4, "IPv4" },
- { IPv6, "IPv6" },
- { IPv4_AND_v6, "IPv4 and IPv6" },
- { IPv4_OR_v6, "IPv4 or IPv6" },
-};
-
-static int
-compare_values(const void *m1, const void *m2)
-{
- enum_to_string_t *mi1 = (enum_to_string_t *) m1;
- enum_to_string_t *mi2 = (enum_to_string_t *) m2;
- return (mi1->enum_value - mi2->enum_value);
-}
-
-char *enum_to_string(int enum_val, enum_to_string_t *string_table, int nb_element)
-{
- enum_to_string_t *res;
- enum_to_string_t temp;
-
- temp.enum_value = enum_val;
- res = bsearch(&temp, string_table, nb_element,
- sizeof(enum_to_string_t), compare_values);
-
- if (res == NULL) {
- return "UNKNOWN";
- }
-
- return res->enum_value_name;
-}
diff --git a/openair3/UTILS/enum_string.h b/openair3/UTILS/enum_string.h
deleted file mode 100644
index 7b53ab31e3..0000000000
--- a/openair3/UTILS/enum_string.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The OpenAirInterface Software Alliance licenses this file to You under
- * the OAI Public License, Version 1.1 (the "License"); you may not use this file
- * except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.openairinterface.org/?page_id=698
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *-------------------------------------------------------------------------------
- * For more information about the OpenAirInterface (OAI) Software Alliance:
- * contact@openairinterface.org
- */
-
-#ifndef ENUM_STRING_H_
-#define ENUM_STRING_H_
-
-typedef struct {
- int enum_value;
- char *enum_value_name;
-} enum_to_string_t;
-
-extern enum_to_string_t network_access_mode_to_string[NAM_MAX];
-extern enum_to_string_t rat_to_string[NUMBER_OF_RAT_TYPE];
-extern enum_to_string_t pdn_type_to_string[IP_MAX];
-
-char *enum_to_string(int enum_val, enum_to_string_t *string_table, int nb_element);
-#define ACCESS_MODE_TO_STRING(vAL) \
- enum_to_string((int)vAL, network_access_mode_to_string, \
- sizeof(network_access_mode_to_string) / sizeof(enum_to_string_t))
-#define PDN_TYPE_TO_STRING(vAL) \
- enum_to_string((int)vAL, pdn_type_to_string, \
- sizeof(pdn_type_to_string) / sizeof(enum_to_string_t))
-
-#endif /* ENUM_STRING_H_ */
diff --git a/openair3/UTILS/mcc_mnc_itu.c b/openair3/UTILS/mcc_mnc_itu.c
deleted file mode 100644
index 6b999c36df..0000000000
--- a/openair3/UTILS/mcc_mnc_itu.c
+++ /dev/null
@@ -1,1817 +0,0 @@
-/*
- * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The OpenAirInterface Software Alliance licenses this file to You under
- * the OAI Public License, Version 1.1 (the "License"); you may not use this file
- * except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.openairinterface.org/?page_id=698
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *-------------------------------------------------------------------------------
- * For more information about the OpenAirInterface (OAI) Software Alliance:
- * contact@openairinterface.org
- */
-
-#include
-#include
-#include
-#include
-#include
-
-#include "assertions.h"
-#include "mcc_mnc_itu.h"
-
-// From http://www.itu.int/pub/T-SP-E.212B-2014
-const mcc_mnc_list_t mcc_mnc_list[] = {
- {001, "01"},
- {412, "01"},
- {412, "20"},
- {412, "40"},
- {412, "50"},
- {412, "80"},
- {412, "88"},
- {276, "01"},
- {276, "02"},
- {276, "03"},
- {276, "04"},
- {603, "01"},
- {603, "02"},
- {262, "01"},
- {262, "02"},
- {262, "03"},
- {262, "04"},
- {262, "05"},
- {262, "06"},
- {262, "07"},
- {262, "08"},
- {262, "09"},
- {262, "10"},
- {262, "11"},
- {262, "12"},
- {262, "13"},
- {262, "14"},
- {262, "15"},
- {262, "16"},
- {262, "17"},
- {262, "18"},
- {262, "19"},
- {262, "20"},
- {262, "41"},
- {262, "42"},
- {262, "43"},
- {262, "77"},
- {262, "78"},
- {262, "79"},
- {213, "03"},
- {631, "02"},
- {631, "04"},
- {365, "010"},
- {365, "840"},
- {344, "030"},
- {344, "920"},
- {344, "930"},
- {420, "01"},
- {420, "03"},
- {722, "010"},
- {722, "020"},
- {722, "070"},
- {722, "310"},
- {722, "320"},
- {722, "330"},
- {722, "341"},
- {363, "01"},
- {505, "01"},
- {505, "02"},
- {505, "03"},
- {505, "04"},
- {505, "05"},
- {505, "06"},
- {505, "07"},
- {505, "08"},
- {505, "09"},
- {505, "10"},
- {505, "11"},
- {505, "12"},
- {505, "13"},
- {505, "14"},
- {505, "15"},
- {505, "16"},
- {505, "17"},
- {505, "18"},
- {505, "19"},
- {505, "20"},
- {505, "21"},
- {505, "22"},
- {505, "23"},
- {505, "24"},
- {505, "25"},
- {505, "26"},
- {505, "27"},
- {505, "28"},
- {505, "30"},
- {505, "31"},
- {505, "62"},
- {505, "68"},
- {505, "71"},
- {505, "72"},
- {505, "88"},
- {505, "90"},
- {505, "99"},
- {232, "01"},
- {232, "02"},
- {232, "03"},
- {232, "04"},
- {232, "05"},
- {232, "06"},
- {232, "07"},
- {232, "09"},
- {232, "10"},
- {232, "11"},
- {232, "12"},
- {232, "14"},
- {232, "15"},
- {232, "91"},
- {400, "01"},
- {400, "02"},
- {400, "03"},
- {400, "04"},
- {426, "01"},
- {426, "02"},
- {426, "03"},
- {426, "04"},
- {426, "05"},
- {470, "01"},
- {470, "02"},
- {470, "03"},
- {342, "600"},
- {342, "820"},
- {257, "01"},
- {257, "02"},
- {257, "03"},
- {257, "04"},
- {257, "05"},
- {257, "06"},
- {206, "01"},
- {206, "02"},
- {206, "05"},
- {206, "06"},
- {206, "07"},
- {206, "10"},
- {206, "20"},
- {702, "67"},
- {702, "68"},
- {616, "01"},
- {616, "02"},
- {616, "03"},
- {350, "000"},
- {402, "11"},
- {402, "17"},
- {736, "01"},
- {736, "02"},
- {736, "03"},
- {218, "03"},
- {218, "05"},
- {218, "90"},
- {652, "01"},
- {652, "02"},
- {652, "04"},
- {724, "00"},
- {724, "01"},
- {724, "02"},
- {724, "03"},
- {724, "04"},
- {724, "05"},
- {724, "06"},
- {724, "10"},
- {724, "11"},
- {724, "15"},
- {724, "16"},
- {724, "18"},
- {724, "23"},
- {724, "24"},
- {724, "30"},
- {724, "31"},
- {724, "32"},
- {724, "33"},
- {724, "34"},
- {724, "35"},
- {724, "36"},
- {724, "37"},
- {724, "38"},
- {724, "39"},
- {724, "54"},
- {724, "99"},
- {528, "11"},
- {284, "01"},
- {284, "05"},
- {613, "02"},
- {613, "03"},
- {642, "01"},
- {642, "02"},
- {642, "03"},
- {642, "07"},
- {642, "82"},
- {625, "01"},
- {625, "02"},
- {456, "01"},
- {456, "02"},
- {456, "03"},
- {456, "04"},
- {456, "05"},
- {456, "06"},
- {456, "08"},
- {456, "18"},
- {624, "01"},
- {624, "02"},
- {302, "220"},
- {302, "221"},
- {302, "222"},
- {302, "250"},
- {302, "270"},
- {302, "290"},
- {302, "320"},
- {302, "340"},
- {302, "360"},
- {302, "370"},
- {302, "380"},
- {302, "390"},
- {302, "490"},
- {302, "500"},
- {302, "510"},
- {302, "530"},
- {302, "560"},
- {302, "570"},
- {302, "590"},
- {302, "610"},
- {302, "620"},
- {302, "630"},
- {302, "640"},
- {302, "656"},
- {302, "660"},
- {302, "670"},
- {302, "680"},
- {302, "690"},
- {302, "710"},
- {302, "720"},
- {302, "730"},
- {302, "740"},
- {302, "760"},
- {302, "770"},
- {302, "780"},
- {302, "860"},
- {302, "880"},
- {302, "940"},
- {302, "990"},
- {346, "140"},
- {623, "01"},
- {623, "02"},
- {623, "03"},
- {730, "01"},
- {730, "02"},
- {730, "03"},
- {730, "04"},
- {730, "05"},
- {730, "06"},
- {730, "07"},
- {730, "08"},
- {730, "09"},
- {730, "10"},
- {730, "11"},
- {730, "12"},
- {730, "13"},
- {730, "14"},
- {730, "15"},
- {460, "00"},
- {460, "01"},
- {460, "03"},
- {460, "04"},
- {280, "01"},
- {280, "10"},
- {280, "20"},
- {280, "22"},
- {732, "001"},
- {732, "002"},
- {732, "020"},
- {732, "099"},
- {732, "101"},
- {732, "102"},
- {732, "103"},
- {732, "111"},
- {732, "123"},
- {732, "130"},
- {654, "01"},
- {629, "01"},
- {629, "10"},
- {548, "01"},
- {450, "02"},
- {450, "03"},
- {450, "06"},
- {712, "01"},
- {712, "02"},
- {712, "03"},
- {712, "04"},
- {712, "20"},
- {612, "02"},
- {612, "03"},
- {612, "04"},
- {612, "05"},
- {612, "06"},
- {612, "07"},
- {219, "01"},
- {219, "02"},
- {219, "10"},
- {368, "01"},
- {362, "51"},
- {362, "69"},
- {362, "91"},
- {238, "01"},
- {238, "02"},
- {238, "03"},
- {238, "04"},
- {238, "06"},
- {238, "08"},
- {238, "10"},
- {238, "12"},
- {238, "13"},
- {238, "20"},
- {238, "28"},
- {238, "30"},
- {238, "43"},
- {238, "66"},
- {238, "77"},
- {638, "01"},
- {370, "01"},
- {370, "02"},
- {370, "03"},
- {370, "04"},
- {366, "110"},
- {602, "01"},
- {602, "02"},
- {602, "03"},
- {706, "01"},
- {706, "02"},
- {706, "03"},
- {424, "02"},
- {740, "00"},
- {740, "01"},
- {740, "02"},
- {214, "01"},
- {214, "03"},
- {214, "04"},
- {214, "05"},
- {214, "06"},
- {214, "07"},
- {214, "08"},
- {214, "09"},
- {214, "10"},
- {214, "11"},
- {214, "12"},
- {214, "13"},
- {214, "14"},
- {214, "15"},
- {214, "16"},
- {214, "17"},
- {214, "18"},
- {214, "19"},
- {214, "20"},
- {214, "21"},
- {214, "22"},
- {214, "24"},
- {214, "25"},
- {214, "26"},
- {214, "27"},
- {214, "28"},
- {214, "29"},
- {214, "30"},
- {214, "31"},
- {214, "32"},
- {248, "01"},
- {248, "02"},
- {248, "03"},
- {248, "04"},
- {248, "05"},
- {248, "06"},
- {248, "07"},
- {248, "08"},
- {248, "09"},
- {248, "71"},
- {310, "010"},
- {310, "012"},
- {310, "013"},
- {310, "016"},
- {310, "017"},
- {310, "020"},
- {310, "028"}, // NON ITU, ADDED BY EURECOM
- {310, "030"},
- {310, "035"},
- {310, "040"},
- {310, "050"},
- {310, "060"},
- {310, "070"},
- {310, "080"},
- {310, "090"},
- {310, "100"},
- {310, "110"},
- {310, "120"},
- {310, "130"},
- {310, "140"},
- {310, "150"},
- {310, "160"},
- {310, "170"},
- {310, "180"},
- {310, "190"},
- {310, "200"},
- {310, "210"},
- {310, "220"},
- {310, "230"},
- {310, "240"},
- {310, "250"},
- {310, "260"},
- {310, "270"},
- {310, "280"},
- {310, "290"},
- {310, "300"},
- {310, "310"},
- {310, "320"},
- {310, "330"},
- {310, "340"},
- {310, "350"},
- {310, "360"},
- {310, "370"},
- {310, "380"},
- {310, "390"},
- {310, "400"},
- {310, "410"},
- {310, "420"},
- {310, "430"},
- {310, "440"},
- {310, "450"},
- {310, "460"},
- {310, "470"},
- {310, "480"},
- {310, "490"},
- {310, "500"},
- {310, "510"},
- {310, "520"},
- {310, "530"},
- {310, "540"},
- {310, "550"},
- {310, "560"},
- {310, "570"},
- {310, "580"},
- {310, "590"},
- {310, "600"},
- {310, "610"},
- {310, "620"},
- {310, "640"},
- {310, "650"},
- {310, "660"},
- {310, "670"},
- {310, "680"},
- {310, "690"},
- {310, "700"},
- {310, "710"},
- {310, "720"},
- {310, "730"},
- {310, "740"},
- {310, "750"},
- {310, "760"},
- {310, "770"},
- {310, "780"},
- {310, "790"},
- {310, "800"},
- {310, "810"},
- {310, "820"},
- {310, "830"},
- {310, "840"},
- {310, "850"},
- {310, "860"},
- {310, "870"},
- {310, "880"},
- {310, "890"},
- {310, "900"},
- {310, "910"},
- {310, "920"},
- {310, "930"},
- {310, "940"},
- {310, "950"},
- {310, "960"},
- {310, "970"},
- {310, "980"},
- {310, "990"},
- {311, "000"},
- {311, "010"},
- {311, "020"},
- {311, "030"},
- {311, "040"},
- {311, "050"},
- {311, "060"},
- {311, "070"},
- {311, "080"},
- {311, "090"},
- {311, "100"},
- {311, "110"},
- {311, "120"},
- {311, "130"},
- {311, "140"},
- {311, "150"},
- {311, "160"},
- {311, "170"},
- {311, "180"},
- {311, "190"},
- {311, "200"},
- {311, "210"},
- {311, "220"},
- {311, "230"},
- {311, "240"},
- {311, "250"},
- {311, "260"},
- {311, "270"},
- {311, "271"},
- {311, "272"},
- {311, "273"},
- {311, "274"},
- {311, "275"},
- {311, "276"},
- {311, "277"},
- {311, "278"},
- {311, "279"},
- {311, "280"},
- {311, "281"},
- {311, "282"},
- {311, "283"},
- {311, "284"},
- {311, "285"},
- {311, "286"},
- {311, "287"},
- {311, "288"},
- {311, "289"},
- {311, "290"},
- {311, "300"},
- {311, "310"},
- {311, "320"},
- {311, "330"},
- {311, "340"},
- {311, "350"},
- {311, "360"},
- {311, "370"},
- {311, "380"},
- {311, "390"},
- {311, "410"},
- {311, "420"},
- {311, "430"},
- {311, "440"},
- {311, "450"},
- {311, "460"},
- {311, "470"},
- {311, "480"},
- {311, "481"},
- {311, "482"},
- {311, "483"},
- {311, "484"},
- {311, "485"},
- {311, "486"},
- {311, "487"},
- {311, "488"},
- {311, "489"},
- {311, "490"},
- {311, "500"},
- {311, "510"},
- {311, "520"},
- {311, "530"},
- {311, "540"},
- {311, "550"},
- {311, "560"},
- {311, "570"},
- {311, "580"},
- {311, "590"},
- {311, "600"},
- {311, "610"},
- {311, "620"},
- {311, "630"},
- {311, "640"},
- {311, "650"},
- {311, "660"},
- {311, "670"},
- {311, "680"},
- {311, "690"},
- {311, "700"},
- {311, "710"},
- {311, "720"},
- {311, "730"},
- {311, "740"},
- {311, "750"},
- {311, "760"},
- {311, "770"},
- {311, "800"},
- {311, "810"},
- {311, "820"},
- {311, "830"},
- {311, "840"},
- {311, "850"},
- {311, "860"},
- {311, "870"},
- {311, "880"},
- {311, "890"},
- {311, "900"},
- {311, "910"},
- {311, "920"},
- {311, "940"},
- {311, "950"},
- {311, "960"},
- {311, "970"},
- {311, "980"},
- {311, "990"},
- {312, "010"},
- {312, "020"},
- {312, "030"},
- {312, "040"},
- {312, "050"},
- {312, "060"},
- {312, "070"},
- {312, "080"},
- {312, "090"},
- {312, "100"},
- {312, "110"},
- {312, "120"},
- {312, "130"},
- {312, "140"},
- {312, "150"},
- {312, "160"},
- {312, "170"},
- {312, "180"},
- {312, "190"},
- {312, "200"},
- {313, "100"},
- {316, "010"},
- {316, "011"},
- {636, "01"},
- {750, "001"},
- {250, "01"},
- {250, "02"},
- {250, "03"},
- {250, "04"},
- {250, "05"},
- {250, "07"},
- {250, "10"},
- {250, "11"},
- {250, "12"},
- {250, "13"},
- {250, "16"},
- {250, "17"},
- {250, "19"},
- {250, "20"},
- {250, "28"},
- {250, "39"},
- {250, "44"},
- {250, "92"},
- {250, "93"},
- {250, "99"},
- {274, "02"},
- {288, "01"},
- {288, "02"},
- {542, "01"},
- {542, "02"},
- {542, "03"},
- {244, "03"},
- {244, "04"},
- {244, "05"},
- {244, "09"},
- {244, "10"},
- {244, "12"},
- {244, "13"},
- {244, "14"},
- {244, "16"},
- {244, "21"},
- {244, "29"},
- {244, "91"},
- {208, "01"},
- {208, "02"},
- {208, "03"},
- {208, "04"},
- {208, "05"},
- {208, "06"},
- {208, "07"},
- {208, "09"},
- {208, "10"},
- {208, "11"},
- {208, "13"},
- {208, "14"},
- {208, "15"},
- {208, "20"},
- {208, "21"},
- {208, "22"},
- {208, "23"},
- {208, "24"},
- {208, "25"},
- {208, "26"},
- {208, "27"},
- {208, "28"},
- {208, "29"},
- {208, "30"},
- {208, "31"},
- {208, "34"}, // NON ITU, ADDED BY EURECOM
- {208, "88"},
- {208, "89"},
- {208, "90"},
- {208, "91"},
- {208, "92"}, // NON ITU, ADDED BY EURECOM
- {208, "93"}, // NON ITU, ADDED BY EURECOM
- {208, "94"}, // NON ITU, ADDED BY EURECOM
- {208, "95"}, // NON ITU, ADDED BY EURECOM
- {208, "96"}, // NON ITU, ADDED BY EURECOM
- {208, "97"}, // NON ITU, ADDED BY EURECOM
- {208, "98"}, // NON ITU, ADDED BY EURECOM
- {208, "99"}, // NON ITU, ADDED BY EURECOM
- {647, "00"},
- {647, "02"},
- {647, "10"},
- {628, "01"},
- {628, "02"},
- {628, "03"},
- {628, "04"},
- {628, "05"},
- {607, "01"},
- {607, "02"},
- {607, "03"},
- {607, "04"},
- {282, "01"},
- {282, "02"},
- {282, "03"},
- {282, "04"},
- {282, "05"},
- {282, "06"},
- {282, "07"},
- {620, "01"},
- {620, "02"},
- {620, "03"},
- {620, "04"},
- {620, "11"},
- {266, "01"},
- {266, "09"},
- {202, "01"},
- {202, "02"},
- {202, "03"},
- {202, "04"},
- {202, "05"},
- {202, "06"},
- {202, "07"},
- {202, "09"},
- {202, "10"},
- {352, "110"},
- {290, "01"},
- {340, "01"},
- {340, "02"},
- {340, "03"},
- {340, "08"},
- {340, "10"},
- {340, "20"},
- {704, "01"},
- {704, "02"},
- {704, "03"},
- {611, "01"},
- {611, "02"},
- {611, "05"},
- {627, "01"},
- {632, "01"},
- {632, "02"},
- {738, "002"},
- {738, "01"},
- {340, "11"},
- {372, "01"},
- {372, "02"},
- {372, "03"},
- {708, "001"},
- {708, "002"},
- {708, "040"},
- {454, "00"},
- {454, "01"},
- {454, "02"},
- {454, "03"},
- {454, "04"},
- {454, "05"},
- {454, "06"},
- {454, "07"},
- {454, "08"},
- {454, "09"},
- {454, "10"},
- {454, "11"},
- {454, "12"},
- {454, "15"},
- {454, "16"},
- {454, "18"},
- {454, "19"},
- {454, "2X"},
- {454, "3X"},
- {216, "01"},
- {216, "30"},
- {216, "70"},
- {216, "71"},
- {404, "00"},
- {404, "01"},
- {404, "02"},
- {404, "03"},
- {404, "04"},
- {404, "05"},
- {404, "06"},
- {404, "07"},
- {404, "09"},
- {404, "10"},
- {404, "11"},
- {404, "12"},
- {404, "13"},
- {404, "14"},
- {404, "15"},
- {404, "16"},
- {404, "17"},
- {404, "18"},
- {404, "19"},
- {404, "20"},
- {404, "21"},
- {404, "22"},
- {404, "23"},
- {404, "24"},
- {404, "25"},
- {404, "27"},
- {404, "29"},
- {404, "30"},
- {404, "31"},
- {404, "33"},
- {404, "34"},
- {404, "35"},
- {404, "36"},
- {404, "37"},
- {404, "38"},
- {404, "40"},
- {404, "41"},
- {404, "42"},
- {404, "43"},
- {404, "44"},
- {404, "46"},
- {404, "48"},
- {404, "49"},
- {404, "50"},
- {404, "51"},
- {404, "52"},
- {404, "53"},
- {404, "54"},
- {404, "55"},
- {404, "56"},
- {404, "57"},
- {404, "58"},
- {404, "59"},
- {404, "60"},
- {404, "61"},
- {404, "62"},
- {404, "63"},
- {404, "64"},
- {404, "65"},
- {404, "66"},
- {404, "67"},
- {404, "68"},
- {404, "69"},
- {404, "70"},
- {404, "71"},
- {404, "72"},
- {404, "73"},
- {404, "74"},
- {404, "75"},
- {404, "76"},
- {404, "77"},
- {404, "78"},
- {404, "79"},
- {404, "80"},
- {404, "81"},
- {404, "82"},
- {404, "83"},
- {404, "84"},
- {404, "85"},
- {404, "86"},
- {404, "87"},
- {404, "88"},
- {404, "89"},
- {404, "90"},
- {404, "91"},
- {404, "92"},
- {404, "93"},
- {404, "94"},
- {404, "95"},
- {404, "96"},
- {404, "97"},
- {404, "98"},
- {404, "99"},
- {405, "000"},
- {405, "005"},
- {405, "006"},
- {405, "007"},
- {405, "009"},
- {405, "010"},
- {405, "011"},
- {405, "012"},
- {405, "013"},
- {405, "014"},
- {405, "018"},
- {405, "020"},
- {405, "021"},
- {405, "022"},
- {405, "025"},
- {405, "027"},
- {405, "029"},
- {405, "030"},
- {405, "031"},
- {405, "032"},
- {405, "033"},
- {405, "034"},
- {405, "035"},
- {405, "036"},
- {405, "037"},
- {405, "038"},
- {405, "039"},
- {405, "040"},
- {405, "041"},
- {405, "042"},
- {405, "043"},
- {405, "044"},
- {405, "045"},
- {405, "046"},
- {405, "047"},
- {405, "08"},
- {405, "12"},
- {405, "15"},
- {405, "17"},
- {405, "23"},
- {405, "28"},
- {405, "52"},
- {405, "53"},
- {405, "54"},
- {405, "55"},
- {405, "56"},
- {405, "66"},
- {405, "67"},
- {405, "68"},
- {405, "70"},
- {405, "71"},
- {405, "72"},
- {405, "73"},
- {405, "74"},
- {405, "750"},
- {405, "751"},
- {405, "752"},
- {405, "753"},
- {405, "754"},
- {405, "755"},
- {405, "76"},
- {405, "77"},
- {405, "799"},
- {405, "800"},
- {405, "801"},
- {405, "802"},
- {405, "803"},
- {405, "804"},
- {405, "805"},
- {405, "806"},
- {405, "807"},
- {405, "808"},
- {405, "809"},
- {405, "81"},
- {405, "82"},
- {405, "83"},
- {405, "84"},
- {405, "85"},
- {405, "86"},
- {510, "00"},
- {510, "01"},
- {510, "08"},
- {510, "10"},
- {510, "11"},
- {510, "21"},
- {510, "28"},
- {432, "11"},
- {432, "14"},
- {432, "19"},
- {418, "05"},
- {418, "20"},
- {418, "30"},
- {418, "40"},
- {418, "47"},
- {418, "48"},
- {418, "49"},
- {418, "62"},
- {418, "70"},
- {418, "80"},
- {418, "81"},
- {418, "83"},
- {418, "84"},
- {418, "85"},
- {418, "86"},
- {418, "87"},
- {418, "88"},
- {418, "89"},
- {418, "91"},
- {418, "92"},
- {418, "93"},
- {418, "94"},
- {272, "01"},
- {272, "02"},
- {272, "03"},
- {272, "07"},
- {272, "09"},
- {274, "01"},
- {274, "02"},
- {274, "03"},
- {274, "04"},
- {274, "07"},
- {425, "01"},
- {425, "02"},
- {425, "03"},
- {425, "04"},
- {425, "06"},
- {425, "07"},
- {425, "08"},
- {425, "11"},
- {425, "12"},
- {425, "13"},
- {425, "14"},
- {425, "15"},
- {425, "16"},
- {425, "17"},
- {425, "18"},
- {425, "19"},
- {425, "20"},
- {425, "21"},
- {222, "01"},
- {222, "02"},
- {222, "10"},
- {222, "77"},
- {222, "88"},
- {222, "98"},
- {222, "99"},
- {338, "020"},
- {338, "050"},
- {338, "110"},
- {440, "01"},
- {440, "02"},
- {440, "03"},
- {440, "04"},
- {440, "06"},
- {440, "07"},
- {440, "08"},
- {440, "09"},
- {440, "10"},
- {440, "11"},
- {440, "12"},
- {440, "13"},
- {440, "14"},
- {440, "15"},
- {440, "16"},
- {440, "17"},
- {440, "18"},
- {440, "19"},
- {440, "20"},
- {440, "21"},
- {440, "22"},
- {440, "23"},
- {440, "24"},
- {440, "25"},
- {440, "26"},
- {440, "27"},
- {440, "28"},
- {440, "29"},
- {440, "30"},
- {440, "31"},
- {440, "32"},
- {440, "33"},
- {440, "34"},
- {440, "35"},
- {440, "36"},
- {440, "37"},
- {440, "38"},
- {440, "39"},
- {440, "40"},
- {440, "41"},
- {440, "42"},
- {440, "43"},
- {440, "44"},
- {440, "45"},
- {440, "46"},
- {440, "47"},
- {440, "48"},
- {440, "49"},
- {440, "50"},
- {440, "51"},
- {440, "52"},
- {440, "53"},
- {440, "54"},
- {440, "55"},
- {440, "56"},
- {440, "58"},
- {440, "60"},
- {440, "61"},
- {440, "62"},
- {440, "63"},
- {440, "64"},
- {440, "65"},
- {440, "66"},
- {440, "67"},
- {440, "68"},
- {440, "69"},
- {440, "70"},
- {440, "71"},
- {440, "72"},
- {440, "73"},
- {440, "74"},
- {440, "75"},
- {440, "76"},
- {440, "77"},
- {440, "78"},
- {440, "79"},
- {440, "80"},
- {440, "81"},
- {440, "82"},
- {440, "83"},
- {440, "84"},
- {440, "85"},
- {440, "86"},
- {440, "87"},
- {440, "88"},
- {440, "89"},
- {440, "90"},
- {440, "92"},
- {440, "93"},
- {440, "94"},
- {440, "95"},
- {440, "96"},
- {440, "97"},
- {440, "98"},
- {440, "99"},
- {441, "40"},
- {441, "41"},
- {441, "42"},
- {441, "43"},
- {441, "44"},
- {441, "45"},
- {441, "50"},
- {441, "51"},
- {441, "61"},
- {441, "62"},
- {441, "63"},
- {441, "64"},
- {441, "65"},
- {441, "70"},
- {441, "90"},
- {441, "91"},
- {441, "92"},
- {441, "93"},
- {441, "94"},
- {441, "98"},
- {441, "99"},
- {416, "01"},
- {416, "02"},
- {416, "03"},
- {416, "77"},
- {401, "01"},
- {401, "02"},
- {639, "02"},
- {639, "03"},
- {437, "01"},
- {419, "02"},
- {419, "03"},
- {419, "04"},
- {457, "01"},
- {457, "02"},
- {457, "08"},
- {651, "01"},
- {651, "02"},
- {247, "01"},
- {247, "02"},
- {247, "03"},
- {247, "04"},
- {247, "05"},
- {247, "06"},
- {247, "07"},
- {247, "08"},
- {247, "09"},
- {294, "01"},
- {294, "02"},
- {294, "03"},
- {294, "10"},
- {294, "11"},
- {415, "05"},
- {415, "32"},
- {415, "33"},
- {415, "34"},
- {415, "35"},
- {415, "36"},
- {415, "37"},
- {415, "38"},
- {415, "39"},
- {618, "04"},
- {228, "01"},
- {295, "01"},
- {295, "02"},
- {295, "05"},
- {295, "06"},
- {246, "01"},
- {246, "02"},
- {246, "03"},
- {270, "01"},
- {270, "02"},
- {270, "10"},
- {270, "77"},
- {270, "78"},
- {270, "99"},
- {455, "00"},
- {455, "01"},
- {455, "02"},
- {455, "03"},
- {455, "04"},
- {455, "05"},
- {455, "06"},
- {646, "01"},
- {646, "02"},
- {646, "04"},
- {502, "10"},
- {502, "12"},
- {502, "13"},
- {502, "14"},
- {502, "16"},
- {502, "17"},
- {502, "18"},
- {502, "19"},
- {502, "20"},
- {650, "01"},
- {650, "10"},
- {472, "01"},
- {610, "01"},
- {278, "01"},
- {278, "21"},
- {278, "77"},
- {604, "00"},
- {604, "01"},
- {340, "12"},
- {617, "01"},
- {617, "02"},
- {617, "03"},
- {617, "10"},
- {609, "01"},
- {609, "02"},
- {609, "10"},
- {334, "001"},
- {334, "010"},
- {334, "020"},
- {334, "030"},
- {334, "040"},
- {334, "050"},
- {334, "060"},
- {334, "066"},
- {334, "070"},
- {334, "080"},
- {334, "090"},
- {550, "01"},
- {259, "01"},
- {259, "02"},
- {259, "04"},
- {259, "05"},
- {259, "99"},
- {428, "99"},
- {297, "01"},
- {297, "02"},
- {297, "03"},
- {354, "860"},
- {643, "01"},
- {643, "03"},
- {643, "04"},
- {414, "01"},
- {649, "01"},
- {649, "02"},
- {649, "03"},
- {542, "02"},
- {429, "01"},
- {710, "21"},
- {710, "73"},
- {614, "01"},
- {614, "02"},
- {614, "03"},
- {621, "20"},
- {621, "30"},
- {621, "40"},
- {621, "50"},
- {621, "60"},
- {555, "01"},
- {242, "01"},
- {242, "02"},
- {242, "03"},
- {242, "04"},
- {242, "05"},
- {242, "07"},
- {242, "08"},
- {242, "09"},
- {242, "10"},
- {242, "11"},
- {242, "12"},
- {242, "20"},
- {242, "21"},
- {242, "22"},
- {242, "23"},
- {242, "24"},
- {546, "01"},
- {530, "00"},
- {530, "01"},
- {530, "02"},
- {530, "03"},
- {530, "04"},
- {530, "05"},
- {530, "06"},
- {530, "07"},
- {530, "24"},
- {422, "02"},
- {422, "03"},
- {422, "04"},
- {641, "01"},
- {641, "10"},
- {641, "11"},
- {641, "14"},
- {641, "18"},
- {641, "22"},
- {641, "30"},
- {641, "33"},
- {641, "40"},
- {641, "44"},
- {641, "66"},
- {434, "01"},
- {434, "02"},
- {434, "04"},
- {434, "05"},
- {434, "07"},
- {410, "01"},
- {410, "03"},
- {410, "04"},
- {410, "06"},
- {410, "07"},
- {552, "01"},
- {714, "01"},
- {714, "02"},
- {714, "020"},
- {714, "03"},
- {714, "04"},
- {537, "01"},
- {537, "02"},
- {537, "03"},
- {744, "01"},
- {744, "02"},
- {744, "03"},
- {204, "01"},
- {204, "02"},
- {204, "03"},
- {204, "04"},
- {204, "05"},
- {204, "06"},
- {204, "07"},
- {204, "08"},
- {204, "09"},
- {204, "10"},
- {204, "12"},
- {204, "13"},
- {204, "15"},
- {204, "16"},
- {204, "17"},
- {204, "18"},
- {204, "19"},
- {204, "20"},
- {204, "21"},
- {204, "22"},
- {204, "23"},
- {204, "24"},
- {204, "25"},
- {204, "26"},
- {204, "28"},
- {204, "29"},
- {204, "60"},
- {204, "61"},
- {204, "64"},
- {204, "65"},
- {204, "66"},
- {204, "67"},
- {204, "68"},
- {204, "69"},
- {716, "10"},
- {515, "01"},
- {515, "02"},
- {515, "03"},
- {515, "05"},
- {260, "01"},
- {260, "02"},
- {260, "03"},
- {260, "04"},
- {260, "05"},
- {260, "06"},
- {260, "07"},
- {260, "08"},
- {260, "09"},
- {260, "10"},
- {260, "11"},
- {260, "12"},
- {260, "13"},
- {260, "14"},
- {260, "15"},
- {260, "16"},
- {260, "17"},
- {260, "18"},
- {260, "19"},
- {260, "20"},
- {260, "21"},
- {260, "22"},
- {260, "23"},
- {260, "24"},
- {260, "25"},
- {260, "26"},
- {260, "27"},
- {260, "28"},
- {260, "29"},
- {260, "30"},
- {260, "31"},
- {260, "32"},
- {260, "33"},
- {260, "34"},
- {260, "98"},
- {547, "10"},
- {547, "15"},
- {547, "20"},
- {268, "01"},
- {268, "03"},
- {268, "05"},
- {268, "06"},
- {427, "01"},
- {427, "06"},
- {630, "01"},
- {630, "02"},
- {630, "05"},
- {630, "86"},
- {630, "88"},
- {630, "89"},
- {630, "90"},
- {230, "01"},
- {230, "02"},
- {230, "03"},
- {230, "04"},
- {230, "05"},
- {230, "07"},
- {230, "08"},
- {230, "98"},
- {417, "01"},
- {417, "02"},
- {417, "09"},
- {226, "01"},
- {226, "02"},
- {226, "03"},
- {226, "04"},
- {226, "05"},
- {226, "06"},
- {226, "10"},
- {226, "11"},
- {234, "00"},
- {234, "01"},
- {234, "02"},
- {234, "03"},
- {234, "04"},
- {234, "05"},
- {234, "06"},
- {234, "07"},
- {234, "08"},
- {234, "09"},
- {234, "10"},
- {234, "11"},
- {234, "12"},
- {234, "13"},
- {234, "14"},
- {234, "15"},
- {234, "16"},
- {234, "17"},
- {234, "18"},
- {234, "19"},
- {234, "20"},
- {234, "21"},
- {234, "22"},
- {234, "23"},
- {234, "24"},
- {234, "25"},
- {234, "26"},
- {234, "27"},
- {234, "28"},
- {234, "29"},
- {234, "30"},
- {234, "31"},
- {234, "32"},
- {234, "33"},
- {234, "34"},
- {234, "35"},
- {234, "36"},
- {234, "37"},
- {234, "38"},
- {234, "39"},
- {234, "50"},
- {234, "51"},
- {234, "52"},
- {234, "53"},
- {234, "55"},
- {234, "58"},
- {234, "76"},
- {234, "78"},
- {234, "86"},
- {235, "00"},
- {235, "01"},
- {235, "02"},
- {235, "77"},
- {235, "91"},
- {235, "92"},
- {235, "94"},
- {235, "95"},
- {635, "10"},
- {635, "13"},
- {635, "14"},
- {635, "17"},
- {358, "110"},
- {356, "110"},
- {292, "01"},
- {308, "01"},
- {360, "110"},
- {540, "02"},
- {549, "01"},
- {549, "27"},
- {626, "01"},
- {608, "01"},
- {608, "02"},
- {608, "03"},
- {608, "04"},
- {220, "01"},
- {220, "03"},
- {220, "05"},
- {633, "01"},
- {633, "02"},
- {633, "10"},
- {619, "01"},
- {619, "02"},
- {619, "03"},
- {619, "04"},
- {619, "05"},
- {619, "25"},
- {619, "40"},
- {619, "50"},
- {525, "01"},
- {525, "02"},
- {525, "03"},
- {525, "05"},
- {525, "12"},
- {231, "01"},
- {231, "02"},
- {231, "04"},
- {231, "05"},
- {293, "40"},
- {293, "41"},
- {293, "64"},
- {293, "70"},
- {634, "01"},
- {634, "02"},
- {634, "05"},
- {634, "06"},
- {634, "99"},
- {413, "02"},
- {413, "03"},
- {659, "12"},
- {659, "91"},
- {659, "92"},
- {659, "95"},
- {659, "97"},
- {655, "01"},
- {655, "02"},
- {655, "04"},
- {655, "06"},
- {655, "07"},
- {655, "10"},
- {655, "11"},
- {655, "12"},
- {655, "13"},
- {655, "14"},
- {655, "19"},
- {655, "21"},
- {655, "25"},
- {655, "27"},
- {655, "30"},
- {655, "31"},
- {655, "32"},
- {655, "33"},
- {655, "34"},
- {655, "35"},
- {655, "36"},
- {655, "41"},
- {655, "50"},
- {655, "51"},
- {240, "01"},
- {240, "02"},
- {240, "03"},
- {240, "04"},
- {240, "05"},
- {240, "06"},
- {240, "08"},
- {240, "10"},
- {240, "12"},
- {240, "13"},
- {240, "14"},
- {240, "15"},
- {240, "16"},
- {240, "17"},
- {240, "18"},
- {240, "19"},
- {240, "20"},
- {240, "21"},
- {240, "22"},
- {240, "23"},
- {240, "24"},
- {240, "26"},
- {240, "27"},
- {240, "28"},
- {240, "29"},
- {240, "30"},
- {240, "32"},
- {240, "33"},
- {240, "34"},
- {240, "35"},
- {240, "36"},
- {240, "37"},
- {240, "38"},
- {240, "40"},
- {240, "41"},
- {240, "42"},
- {240, "43"},
- {240, "44"},
- {240, "45"},
- {240, "65"},
- {240, "66"},
- {240, "67"},
- {240, "68"},
- {240, "69"},
- {228, "01"},
- {228, "02"},
- {228, "03"},
- {228, "05"},
- {228, "06"},
- {228, "08"},
- {228, "12"},
- {228, "51"},
- {746, "02"},
- {746, "03"},
- {746, "04"},
- {746, "05"},
- {653, "01"},
- {653, "10"},
- {436, "01"},
- {436, "02"},
- {436, "03"},
- {436, "04"},
- {436, "05"},
- {640, "02"},
- {640, "03"},
- {640, "04"},
- {640, "05"},
- {622, "01"},
- {622, "02"},
- {520, "00"},
- {520, "01"},
- {520, "02"},
- {520, "03"},
- {520, "04"},
- {520, "05"},
- {520, "15"},
- {520, "18"},
- {520, "20"},
- {520, "23"},
- {520, "47"},
- {520, "99"},
- {514, "01"},
- {514, "02"},
- {514, "03"},
- {615, "01"},
- {539, "01"},
- {539, "43"},
- {539, "88"},
- {374, "12"},
- {374, "130"},
- {374, "140"},
- {605, "02"},
- {605, "03"},
- {438, "01"},
- {438, "02"},
- {376, "350"},
- {376, "352"},
- {376, "360"},
- {286, "01"},
- {286, "02"},
- {286, "03"},
- {286, "04"},
- {553, "01"},
- {255, "01"},
- {255, "02"},
- {255, "03"},
- {255, "04"},
- {255, "05"},
- {255, "06"},
- {255, "07"},
- {255, "21"},
- {748, "00"},
- {748, "01"},
- {748, "03"},
- {748, "07"},
- {748, "10"},
- {541, "01"},
- {541, "05"},
- {541, "07"},
- {734, "02"},
- {734, "04"},
- {734, "06"},
- {348, "170"},
- {348, "370"},
- {348, "570"},
- {348, "770"},
- {452, "01"},
- {452, "02"},
- {452, "03"},
- {452, "04"},
- {452, "06"},
- {452, "07"},
- {452, "08"},
- {421, "01"},
- {421, "02"},
- {421, "04"},
- {645, "01"},
- {645, "02"},
- {645, "03"},
- {648, "01"},
- {648, "03"},
- {648, "04"},
- {0, "end"} // end of list
-};
-
-
-int find_mnc_length(const char mcc_digit1P,
- const char mcc_digit2P,
- const char mcc_digit3P,
- const char mnc_digit1P,
- const char mnc_digit2P,
- const char mnc_digit3P)
-{
-
- int mcc = 100*(mcc_digit1P-48) + 10*(mcc_digit2P-48) + (mcc_digit3P-48);
- char mnc3[4];
- char mnc2[3];
- int index_l = 0;
-
- AssertFatal((mcc_digit1P >= '0') && (mcc_digit1P <='9')
- && (mcc_digit2P >= '0') && (mcc_digit2P <= '9')
- && (mcc_digit3P >= '0') && (mcc_digit3P <= '9') ,
- "BAD MCC PARAMETER (%d%d%d)!\n",
- mcc_digit1P, mcc_digit2P, mcc_digit3P);
-
- AssertFatal((mnc_digit1P >= '0') && (mnc_digit1P <= '9')
- && (mnc_digit2P >= '0') && (mnc_digit2P <= '9') ,
- "BAD MNC PARAMETER ((%d)%d%d)!\n",
- mnc_digit1P, mnc_digit2P, mnc_digit3P);
-
- mnc2[0] = mnc_digit1P;
- mnc2[1] = mnc_digit2P;
- mnc2[2] = '\0';
-
- mnc3[0] = mnc_digit1P;
- mnc3[1] = mnc_digit2P;
- mnc3[2] = mnc_digit3P;
- mnc3[3] = '\0';
-
- do {
- if (mcc_mnc_list[index_l].mcc == mcc) {
- //fprintf(stdout, "Found MCC %d!\n", mcc);
- do {
- //fprintf(stdout, "Comparing MNCs %s, %s with %s\n", mnc2, mnc3, mcc_mnc_list[index_l].mnc);
- if (strcmp(mnc2, mcc_mnc_list[index_l].mnc) == 0) {
- return 2;
- } else if (strcmp(mnc3, mcc_mnc_list[index_l].mnc) == 0) {
- return 3;
- }
-
- index_l += 1;
- } while (mcc_mnc_list[index_l].mcc == mcc);
-
- return 0;
- }
-
- index_l += 1;
- } while (mcc_mnc_list[index_l].mcc != 0);
-
- return 0;
-}
-
diff --git a/openair3/UTILS/mcc_mnc_itu.h b/openair3/UTILS/mcc_mnc_itu.h
deleted file mode 100644
index a6b7343b99..0000000000
--- a/openair3/UTILS/mcc_mnc_itu.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The OpenAirInterface Software Alliance licenses this file to You under
- * the OAI Public License, Version 1.1 (the "License"); you may not use this file
- * except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.openairinterface.org/?page_id=698
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *-------------------------------------------------------------------------------
- * For more information about the OpenAirInterface (OAI) Software Alliance:
- * contact@openairinterface.org
- */
-
-/*****************************************************************************
-
-Source mcc_mnc.h
-
-Version 0.1
-
-Date {2014/10/02
-
-Product
-
-Subsystem
-
-Author Lionel GAUTHIER
-
-Description Defines the MCC/MNC list delivered by the ITU
-
-*****************************************************************************/
-#ifndef __MCC_MNC_H__
-#define __MCC_MNC_H__
-
-
-typedef struct mcc_mnc_list_s {
- uint16_t mcc;
- char mnc[4];
-} mcc_mnc_list_t;
-
-int find_mnc_length(const char mcc_digit1P,
- const char mcc_digit2P,
- const char mcc_digit3P,
- const char mnc_digit1P,
- const char mnc_digit2P,
- const char mnc_digit3P);
-#endif
diff --git a/sdr/AW2SORI/oaiori.c b/radio/AW2SORI/oaiori.c
similarity index 99%
rename from sdr/AW2SORI/oaiori.c
rename to radio/AW2SORI/oaiori.c
index 07a90a2129..43d24b40c5 100644
--- a/sdr/AW2SORI/oaiori.c
+++ b/radio/AW2SORI/oaiori.c
@@ -30,7 +30,7 @@
#include "common/utils/system.h"
#include "ori.h"
-#include "sdr/COMMON/common_lib.h"
+#include "radio/COMMON/common_lib.h"
typedef struct eutra_bandentry_s {
int16_t band;
diff --git a/sdr/AW2SORI/ori.h b/radio/AW2SORI/ori.h
similarity index 100%
rename from sdr/AW2SORI/ori.h
rename to radio/AW2SORI/ori.h
diff --git a/sdr/BLADERF/README b/radio/BLADERF/README
similarity index 100%
rename from sdr/BLADERF/README
rename to radio/BLADERF/README
diff --git a/sdr/BLADERF/USERSPACE/LIB/bladerf_lib.c b/radio/BLADERF/USERSPACE/LIB/bladerf_lib.c
similarity index 100%
rename from sdr/BLADERF/USERSPACE/LIB/bladerf_lib.c
rename to radio/BLADERF/USERSPACE/LIB/bladerf_lib.c
diff --git a/sdr/BLADERF/USERSPACE/LIB/bladerf_lib.h b/radio/BLADERF/USERSPACE/LIB/bladerf_lib.h
similarity index 100%
rename from sdr/BLADERF/USERSPACE/LIB/bladerf_lib.h
rename to radio/BLADERF/USERSPACE/LIB/bladerf_lib.h
diff --git a/sdr/COMMON/common_lib.c b/radio/COMMON/common_lib.c
similarity index 100%
rename from sdr/COMMON/common_lib.c
rename to radio/COMMON/common_lib.c
diff --git a/sdr/COMMON/common_lib.h b/radio/COMMON/common_lib.h
similarity index 100%
rename from sdr/COMMON/common_lib.h
rename to radio/COMMON/common_lib.h
diff --git a/sdr/COMMON/record_player.c b/radio/COMMON/record_player.c
similarity index 100%
rename from sdr/COMMON/record_player.c
rename to radio/COMMON/record_player.c
diff --git a/sdr/COMMON/record_player.h b/radio/COMMON/record_player.h
similarity index 99%
rename from sdr/COMMON/record_player.h
rename to radio/COMMON/record_player.h
index 3418d16a22..2f5a6fa57b 100644
--- a/sdr/COMMON/record_player.h
+++ b/radio/COMMON/record_player.h
@@ -21,7 +21,7 @@
* contact@openairinterface.org
*/
-/** sdr/COMMON/record-player.h
+/** radio/COMMON/record-player.h
*
* \author: bruno.mongazon-cazavet@nokia-bell-labs.com
*/
diff --git a/sdr/ETHERNET/USERSPACE/LIB/eth_raw.c b/radio/ETHERNET/USERSPACE/LIB/eth_raw.c
similarity index 100%
rename from sdr/ETHERNET/USERSPACE/LIB/eth_raw.c
rename to radio/ETHERNET/USERSPACE/LIB/eth_raw.c
diff --git a/sdr/ETHERNET/USERSPACE/LIB/eth_udp.c b/radio/ETHERNET/USERSPACE/LIB/eth_udp.c
similarity index 97%
rename from sdr/ETHERNET/USERSPACE/LIB/eth_udp.c
rename to radio/ETHERNET/USERSPACE/LIB/eth_udp.c
index d3b7771007..ca62ceab6c 100644
--- a/sdr/ETHERNET/USERSPACE/LIB/eth_udp.c
+++ b/radio/ETHERNET/USERSPACE/LIB/eth_udp.c
@@ -359,14 +359,14 @@ void *trx_eth_write_udp_cmd(udpTXelem_t *udpTXelem) {
#if defined(__x86_64__) || defined(__i386__)
__m256i *buff256 = (__m256i *)&(((int32_t*)buff[aid])[offset]);
for (int j=0; j<32; j+=8) {
- buff_tx[1+j] = _mm256_slli_epi16(buff256[j],4);
- buff_tx[2+j] = _mm256_slli_epi16(buff256[j+1],4);
- buff_tx[3+j] = _mm256_slli_epi16(buff256[j+2],4);
- buff_tx[4+j] = _mm256_slli_epi16(buff256[j+3],4);
- buff_tx[5+j] = _mm256_slli_epi16(buff256[j+4],4);
- buff_tx[6+j] = _mm256_slli_epi16(buff256[j+5],4);
- buff_tx[7+j] = _mm256_slli_epi16(buff256[j+6],4);
- buff_tx[8+j] = _mm256_slli_epi16(buff256[j+7],4);
+ buff_tx[1+j] = simde_mm256_slli_epi16(buff256[j],4);
+ buff_tx[2+j] = simde_mm256_slli_epi16(buff256[j+1],4);
+ buff_tx[3+j] = simde_mm256_slli_epi16(buff256[j+2],4);
+ buff_tx[4+j] = simde_mm256_slli_epi16(buff256[j+3],4);
+ buff_tx[5+j] = simde_mm256_slli_epi16(buff256[j+4],4);
+ buff_tx[6+j] = simde_mm256_slli_epi16(buff256[j+5],4);
+ buff_tx[7+j] = simde_mm256_slli_epi16(buff256[j+6],4);
+ buff_tx[8+j] = simde_mm256_slli_epi16(buff256[j+7],4);
}
#elif defined(__arm__)
int16x8_t *buff128 = (__int16x8_t*)&buff[aid][offset];
diff --git a/sdr/ETHERNET/USERSPACE/LIB/ethernet.md b/radio/ETHERNET/USERSPACE/LIB/ethernet.md
similarity index 100%
rename from sdr/ETHERNET/USERSPACE/LIB/ethernet.md
rename to radio/ETHERNET/USERSPACE/LIB/ethernet.md
diff --git a/sdr/ETHERNET/USERSPACE/LIB/ethernet_lib.c b/radio/ETHERNET/USERSPACE/LIB/ethernet_lib.c
similarity index 100%
rename from sdr/ETHERNET/USERSPACE/LIB/ethernet_lib.c
rename to radio/ETHERNET/USERSPACE/LIB/ethernet_lib.c
diff --git a/sdr/ETHERNET/USERSPACE/LIB/ethernet_lib.h b/radio/ETHERNET/USERSPACE/LIB/ethernet_lib.h
similarity index 100%
rename from sdr/ETHERNET/USERSPACE/LIB/ethernet_lib.h
rename to radio/ETHERNET/USERSPACE/LIB/ethernet_lib.h
diff --git a/sdr/ETHERNET/USERSPACE/LIB/if_defs.h b/radio/ETHERNET/USERSPACE/LIB/if_defs.h
similarity index 98%
rename from sdr/ETHERNET/USERSPACE/LIB/if_defs.h
rename to radio/ETHERNET/USERSPACE/LIB/if_defs.h
index 0df47e2205..4df5014bc0 100644
--- a/sdr/ETHERNET/USERSPACE/LIB/if_defs.h
+++ b/radio/ETHERNET/USERSPACE/LIB/if_defs.h
@@ -19,7 +19,7 @@
* contact@openairinterface.org
*/
-/*! \file sdr/ETHERNET/USERSPACE/LIB/if_defs.h
+/*! \file radio/ETHERNET/USERSPACE/LIB/if_defs.h
* \brief
* \author S. Sandeep Kumar, Raymond Knopp
* \date 2016
diff --git a/sdr/ETHERNET/benetel/4g/benetel.c b/radio/ETHERNET/benetel/4g/benetel.c
similarity index 100%
rename from sdr/ETHERNET/benetel/4g/benetel.c
rename to radio/ETHERNET/benetel/4g/benetel.c
diff --git a/sdr/ETHERNET/benetel/4g/dpdk_driver.c b/radio/ETHERNET/benetel/4g/dpdk_driver.c
similarity index 100%
rename from sdr/ETHERNET/benetel/4g/dpdk_driver.c
rename to radio/ETHERNET/benetel/4g/dpdk_driver.c
diff --git a/sdr/ETHERNET/benetel/4g/low.c b/radio/ETHERNET/benetel/4g/low.c
similarity index 100%
rename from sdr/ETHERNET/benetel/4g/low.c
rename to radio/ETHERNET/benetel/4g/low.c
diff --git a/sdr/ETHERNET/benetel/4g/low.h b/radio/ETHERNET/benetel/4g/low.h
similarity index 100%
rename from sdr/ETHERNET/benetel/4g/low.h
rename to radio/ETHERNET/benetel/4g/low.h
diff --git a/sdr/ETHERNET/benetel/4g/low_dpdk.c b/radio/ETHERNET/benetel/4g/low_dpdk.c
similarity index 100%
rename from sdr/ETHERNET/benetel/4g/low_dpdk.c
rename to radio/ETHERNET/benetel/4g/low_dpdk.c
diff --git a/sdr/ETHERNET/benetel/4g/shared_buffers.c b/radio/ETHERNET/benetel/4g/shared_buffers.c
similarity index 100%
rename from sdr/ETHERNET/benetel/4g/shared_buffers.c
rename to radio/ETHERNET/benetel/4g/shared_buffers.c
diff --git a/sdr/ETHERNET/benetel/4g/shared_buffers.h b/radio/ETHERNET/benetel/4g/shared_buffers.h
similarity index 100%
rename from sdr/ETHERNET/benetel/4g/shared_buffers.h
rename to radio/ETHERNET/benetel/4g/shared_buffers.h
diff --git a/sdr/ETHERNET/benetel/5g/benetel.c b/radio/ETHERNET/benetel/5g/benetel.c
similarity index 100%
rename from sdr/ETHERNET/benetel/5g/benetel.c
rename to radio/ETHERNET/benetel/5g/benetel.c
diff --git a/sdr/ETHERNET/benetel/5g/dpdk_driver.c b/radio/ETHERNET/benetel/5g/dpdk_driver.c
similarity index 100%
rename from sdr/ETHERNET/benetel/5g/dpdk_driver.c
rename to radio/ETHERNET/benetel/5g/dpdk_driver.c
diff --git a/sdr/ETHERNET/benetel/5g/low.c b/radio/ETHERNET/benetel/5g/low.c
similarity index 100%
rename from sdr/ETHERNET/benetel/5g/low.c
rename to radio/ETHERNET/benetel/5g/low.c
diff --git a/sdr/ETHERNET/benetel/5g/low.h b/radio/ETHERNET/benetel/5g/low.h
similarity index 100%
rename from sdr/ETHERNET/benetel/5g/low.h
rename to radio/ETHERNET/benetel/5g/low.h
diff --git a/sdr/ETHERNET/benetel/5g/low_dpdk.c b/radio/ETHERNET/benetel/5g/low_dpdk.c
similarity index 100%
rename from sdr/ETHERNET/benetel/5g/low_dpdk.c
rename to radio/ETHERNET/benetel/5g/low_dpdk.c
diff --git a/sdr/ETHERNET/benetel/5g/shared_buffers.c b/radio/ETHERNET/benetel/5g/shared_buffers.c
similarity index 100%
rename from sdr/ETHERNET/benetel/5g/shared_buffers.c
rename to radio/ETHERNET/benetel/5g/shared_buffers.c
diff --git a/sdr/ETHERNET/benetel/5g/shared_buffers.h b/radio/ETHERNET/benetel/5g/shared_buffers.h
similarity index 100%
rename from sdr/ETHERNET/benetel/5g/shared_buffers.h
rename to radio/ETHERNET/benetel/5g/shared_buffers.h
diff --git a/sdr/IRIS/USERSPACE/LIB/iris_lib.cpp b/radio/IRIS/USERSPACE/LIB/iris_lib.cpp
similarity index 100%
rename from sdr/IRIS/USERSPACE/LIB/iris_lib.cpp
rename to radio/IRIS/USERSPACE/LIB/iris_lib.cpp
diff --git a/sdr/LMSSDR/LimeSDR.ini b/radio/LMSSDR/LimeSDR.ini
similarity index 100%
rename from sdr/LMSSDR/LimeSDR.ini
rename to radio/LMSSDR/LimeSDR.ini
diff --git a/sdr/LMSSDR/LimeSDR_above_1p8GHz.ini b/radio/LMSSDR/LimeSDR_above_1p8GHz.ini
similarity index 100%
rename from sdr/LMSSDR/LimeSDR_above_1p8GHz.ini
rename to radio/LMSSDR/LimeSDR_above_1p8GHz.ini
diff --git a/sdr/LMSSDR/LimeSDR_above_1p8GHz_1v4.ini b/radio/LMSSDR/LimeSDR_above_1p8GHz_1v4.ini
similarity index 100%
rename from sdr/LMSSDR/LimeSDR_above_1p8GHz_1v4.ini
rename to radio/LMSSDR/LimeSDR_above_1p8GHz_1v4.ini
diff --git a/sdr/LMSSDR/LimeSDR_below_1p8GHz.ini b/radio/LMSSDR/LimeSDR_below_1p8GHz.ini
similarity index 100%
rename from sdr/LMSSDR/LimeSDR_below_1p8GHz.ini
rename to radio/LMSSDR/LimeSDR_below_1p8GHz.ini
diff --git a/sdr/LMSSDR/LimeSDR_below_1p8GHz_1v4.ini b/radio/LMSSDR/LimeSDR_below_1p8GHz_1v4.ini
similarity index 100%
rename from sdr/LMSSDR/LimeSDR_below_1p8GHz_1v4.ini
rename to radio/LMSSDR/LimeSDR_below_1p8GHz_1v4.ini
diff --git a/sdr/LMSSDR/USERSPACE/LIB/lms_lib.cpp b/radio/LMSSDR/USERSPACE/LIB/lms_lib.cpp
similarity index 100%
rename from sdr/LMSSDR/USERSPACE/LIB/lms_lib.cpp
rename to radio/LMSSDR/USERSPACE/LIB/lms_lib.cpp
diff --git a/sdr/LMSSDR/USERSPACE/LIB/sodera_lib.cpp b/radio/LMSSDR/USERSPACE/LIB/sodera_lib.cpp
similarity index 100%
rename from sdr/LMSSDR/USERSPACE/LIB/sodera_lib.cpp
rename to radio/LMSSDR/USERSPACE/LIB/sodera_lib.cpp
diff --git a/sdr/USRP/USERSPACE/LIB/usrp_lib.cpp b/radio/USRP/USERSPACE/LIB/usrp_lib.cpp
similarity index 100%
rename from sdr/USRP/USERSPACE/LIB/usrp_lib.cpp
rename to radio/USRP/USERSPACE/LIB/usrp_lib.cpp
diff --git a/sdr/iqplayer/DOC/iqrecordplayer_usage.md b/radio/iqplayer/DOC/iqrecordplayer_usage.md
similarity index 98%
rename from sdr/iqplayer/DOC/iqrecordplayer_usage.md
rename to radio/iqplayer/DOC/iqrecordplayer_usage.md
index d2507c3291..f66c91bc26 100644
--- a/sdr/iqplayer/DOC/iqrecordplayer_usage.md
+++ b/radio/iqplayer/DOC/iqrecordplayer_usage.md
@@ -134,7 +134,7 @@ options for replay mode are:
[PHY]I lte-softmodem prach_I0 = 0.0 dB
[PHY]I ru thread max_I0 18, min_I0 12
[HW]W ru thread iqplayer device terminating subframes replay after 5 iteration
-/usr/local/oai/develop/openairinterface5g/sdr/iqplayer/iqplayer_lib.c:222 trx_iqplayer_read() Exiting OAI softmodem: replay ended, triggering process termination
+/usr/local/oai/develop/openairinterface5g/radio/iqplayer/iqplayer_lib.c:222 trx_iqplayer_read() Exiting OAI softmodem: replay ended, triggering process termination
```
## iq recorder and iq player implementation overview
diff --git a/sdr/iqplayer/iqplayer_lib.c b/radio/iqplayer/iqplayer_lib.c
similarity index 100%
rename from sdr/iqplayer/iqplayer_lib.c
rename to radio/iqplayer/iqplayer_lib.c
diff --git a/sdr/rfsimulator/README.md b/radio/rfsimulator/README.md
similarity index 100%
rename from sdr/rfsimulator/README.md
rename to radio/rfsimulator/README.md
diff --git a/sdr/rfsimulator/apply_channelmod.c b/radio/rfsimulator/apply_channelmod.c
similarity index 99%
rename from sdr/rfsimulator/apply_channelmod.c
rename to radio/rfsimulator/apply_channelmod.c
index 42ae11e6b1..18ab7e29e9 100644
--- a/sdr/rfsimulator/apply_channelmod.c
+++ b/radio/rfsimulator/apply_channelmod.c
@@ -36,7 +36,7 @@
#include
#include
#include
-#include
+#include "rfsimulator.h"
/*
Legacy study:
diff --git a/sdr/rfsimulator/new_channel_sim.c b/radio/rfsimulator/new_channel_sim.c
similarity index 98%
rename from sdr/rfsimulator/new_channel_sim.c
rename to radio/rfsimulator/new_channel_sim.c
index b5a10bc61c..fcfa85265b 100644
--- a/sdr/rfsimulator/new_channel_sim.c
+++ b/radio/rfsimulator/new_channel_sim.c
@@ -34,7 +34,7 @@
#include
#include
#include
-#include
+#include "rfsimulator.h"
// Ziggurat
static double wn[128],fn[128];
diff --git a/sdr/rfsimulator/rfsimulator.h b/radio/rfsimulator/rfsimulator.h
similarity index 100%
rename from sdr/rfsimulator/rfsimulator.h
rename to radio/rfsimulator/rfsimulator.h
diff --git a/sdr/rfsimulator/simulator.c b/radio/rfsimulator/simulator.c
similarity index 99%
rename from sdr/rfsimulator/simulator.c
rename to radio/rfsimulator/simulator.c
index d095a0c7d5..332d588b6f 100644
--- a/sdr/rfsimulator/simulator.c
+++ b/radio/rfsimulator/simulator.c
@@ -51,7 +51,7 @@
#include "openair1/PHY/defs_UE.h"
#define CHANNELMOD_DYNAMICLOAD
#include
-#include
+#include "rfsimulator.h"
#define PORT 4043 //default TCP port for this simulator
#define CirSize 6144000 // 100ms is enough
diff --git a/sdr/rfsimulator/stored_node.c b/radio/rfsimulator/stored_node.c
similarity index 100%
rename from sdr/rfsimulator/stored_node.c
rename to radio/rfsimulator/stored_node.c
diff --git a/targets/COMMON/Makefile.inc b/targets/COMMON/Makefile.inc
deleted file mode 100644
index 9902574fce..0000000000
--- a/targets/COMMON/Makefile.inc
+++ /dev/null
@@ -1,6 +0,0 @@
-TARGETS_COMMON_DIR = $(OPENAIR_TARGETS)/COMMON
-
-TARGETS_COMMON_OBJS = $(TARGETS_COMMON_DIR)/create_tasks.o
-
-TARGETS_COMMON_incl = \
- -I$(TARGETS_COMMON_DIR)
diff --git a/targets/DOCS/Doxyfile b/targets/DOCS/Doxyfile
index 249afce0ff..84980f3bdc 100644
--- a/targets/DOCS/Doxyfile
+++ b/targets/DOCS/Doxyfile
@@ -792,11 +792,11 @@ INPUT = $(OPENAIR1_DIR)/PHY/defs.h \
$(OPENAIR2_DIR)/LAYER2/RLC/UM_v9.3.0/rlc_um.h \
$(OPENAIR2_DIR)/LAYER2/RLC/UM_v9.3.0/rlc_um_entity.h \
$(OPENAIR2_DIR)/NETWORK_DRIVER/MESH/proto_extern.h \
- $(OPENAIR_DIR)/sdr/COMMON/common_lib.h \
- $(OPENAIR_DIR)/sdr/USRP/USERSPACE/LIB/usrp_lib.cpp \
- $(OPENAIR_DIR)/sdr/BLADERF/USERSPACE/LIB/bladerf_lib.c \
- $(OPENAIR_DIR)/sdr/BLADERF/USERSPACE/LIB/bladerf_lib.h \
- $(OPENAIR_DIR)/sdr/LMSSDR/USERSPACE/LIB/lms_lib.cpp
+ $(OPENAIR_DIR)/radio/COMMON/common_lib.h \
+ $(OPENAIR_DIR)/radio/USRP/USERSPACE/LIB/usrp_lib.cpp \
+ $(OPENAIR_DIR)/radio/BLADERF/USERSPACE/LIB/bladerf_lib.c \
+ $(OPENAIR_DIR)/radio/BLADERF/USERSPACE/LIB/bladerf_lib.h \
+ $(OPENAIR_DIR)/radio/LMSSDR/USERSPACE/LIB/lms_lib.cpp
# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
diff --git a/targets/PROJECTS/GENERIC-NR-5GC/CONF/gNB_SA_40_2x2.conf b/targets/PROJECTS/GENERIC-NR-5GC/CONF/gNB_SA_40_2x2.conf
index 490b2c4b88..81e5334206 100755
--- a/targets/PROJECTS/GENERIC-NR-5GC/CONF/gNB_SA_40_2x2.conf
+++ b/targets/PROJECTS/GENERIC-NR-5GC/CONF/gNB_SA_40_2x2.conf
@@ -37,7 +37,6 @@ gNBs =
////////// Physical parameters:
- ssb_SubcarrierOffset = 0;
pdsch_AntennaPorts = 1;
pusch_AntennaPorts = 2;
min_rxtxtime_pdsch = 2;
diff --git a/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.band78.sa.fr1.106PRB.2x2.usrpn310.conf b/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.band78.sa.fr1.106PRB.2x2.usrpn310.conf
index e92f337dbe..f5918cfb83 100644
--- a/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.band78.sa.fr1.106PRB.2x2.usrpn310.conf
+++ b/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.band78.sa.fr1.106PRB.2x2.usrpn310.conf
@@ -37,7 +37,6 @@ gNBs =
////////// Physical parameters:
- ssb_SubcarrierOffset = 0;
pdsch_AntennaPorts = 1;
pusch_AntennaPorts = 2;
min_rxtxtime_pdsch = 5;
diff --git a/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.band78.sa.fr1.162PRB.2x2.usrpn310.conf b/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.band78.sa.fr1.162PRB.2x2.usrpn310.conf
index a69ec4ac31..e893e88d1a 100644
--- a/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.band78.sa.fr1.162PRB.2x2.usrpn310.conf
+++ b/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.band78.sa.fr1.162PRB.2x2.usrpn310.conf
@@ -37,7 +37,6 @@ gNBs =
////////// Physical parameters:
- ssb_SubcarrierOffset = 0;
pdsch_AntennaPorts = 1;
pusch_AntennaPorts = 2;
#pusch_TargetSNRx10 = 200;
diff --git a/targets/RT/USER/lte-enb.c b/targets/RT/USER/lte-enb.c
index de169417fc..25a1abcc18 100644
--- a/targets/RT/USER/lte-enb.c
+++ b/targets/RT/USER/lte-enb.c
@@ -62,7 +62,7 @@
#undef MALLOC //there are two conflicting definitions, so we better make sure we don't use it at all
//#undef FRAME_LENGTH_COMPLEX_SAMPLES //there are two conflicting definitions, so we better make sure we don't use it at all
-#include "sdr/COMMON/common_lib.h"
+#include "radio/COMMON/common_lib.h"
//#undef FRAME_LENGTH_COMPLEX_SAMPLES //there are two conflicting definitions, so we better make sure we don't use it at all
diff --git a/targets/RT/USER/lte-ru.c b/targets/RT/USER/lte-ru.c
index 1595ce737f..8d54d13ded 100644
--- a/targets/RT/USER/lte-ru.c
+++ b/targets/RT/USER/lte-ru.c
@@ -58,8 +58,8 @@
#include "SCHED/sched_common.h"
#include "common/utils/LOG/log.h"
#include "common/utils/LOG/vcd_signal_dumper.h"
-#include "sdr/COMMON/common_lib.h"
-#include "sdr/ETHERNET/USERSPACE/LIB/ethernet_lib.h"
+#include "radio/COMMON/common_lib.h"
+#include "radio/ETHERNET/USERSPACE/LIB/ethernet_lib.h"
/* these variables have to be defined before including ENB_APP/enb_paramdef.h */
static int DEFBANDS[] = {7};
diff --git a/targets/RT/USER/lte-softmodem.c b/targets/RT/USER/lte-softmodem.c
index 82acba4f84..8f9145010a 100644
--- a/targets/RT/USER/lte-softmodem.c
+++ b/targets/RT/USER/lte-softmodem.c
@@ -47,8 +47,8 @@
#undef MALLOC //there are two conflicting definitions, so we better make sure we don't use it at all
//#undef FRAME_LENGTH_COMPLEX_SAMPLES //there are two conflicting definitions, so we better make sure we don't use it at all
-#include "sdr/COMMON/common_lib.h"
-#include "sdr/ETHERNET/USERSPACE/LIB/if_defs.h"
+#include "radio/COMMON/common_lib.h"
+#include "radio/ETHERNET/USERSPACE/LIB/if_defs.h"
//#undef FRAME_LENGTH_COMPLEX_SAMPLES //there are two conflicting definitions, so we better make sure we don't use it at all
diff --git a/targets/RT/USER/lte-softmodem.h b/targets/RT/USER/lte-softmodem.h
index ac7f3234ba..f1cf538a25 100644
--- a/targets/RT/USER/lte-softmodem.h
+++ b/targets/RT/USER/lte-softmodem.h
@@ -19,7 +19,7 @@
#include
#include
#include
-#include "sdr/COMMON/common_lib.h"
+#include "radio/COMMON/common_lib.h"
//#undef MALLOC
#include "assertions.h"
#include "PHY/types.h"
diff --git a/targets/RT/USER/lte-uesoftmodem.c b/targets/RT/USER/lte-uesoftmodem.c
index ee59741179..ac84aeed2d 100644
--- a/targets/RT/USER/lte-uesoftmodem.c
+++ b/targets/RT/USER/lte-uesoftmodem.c
@@ -47,8 +47,8 @@
#undef MALLOC //there are two conflicting definitions, so we better make sure we don't use it at all
//#undef FRAME_LENGTH_COMPLEX_SAMPLES //there are two conflicting definitions, so we better make sure we don't use it at all
-#include "sdr/COMMON/common_lib.h"
-#include "sdr/ETHERNET/USERSPACE/LIB/if_defs.h"
+#include "radio/COMMON/common_lib.h"
+#include "radio/ETHERNET/USERSPACE/LIB/if_defs.h"
//#undef FRAME_LENGTH_COMPLEX_SAMPLES //there are two conflicting definitions, so we better make sure we don't use it at all
diff --git a/targets/RT/USER/ru_control.c b/targets/RT/USER/ru_control.c
index 077ccdc771..db8c24be3f 100644
--- a/targets/RT/USER/ru_control.c
+++ b/targets/RT/USER/ru_control.c
@@ -53,8 +53,8 @@
#undef MALLOC //there are two conflicting definitions, so we better make sure we don't use it at all
-#include "sdr/COMMON/common_lib.h"
-#include "sdr/ETHERNET/USERSPACE/LIB/ethernet_lib.h"
+#include "radio/COMMON/common_lib.h"
+#include "radio/ETHERNET/USERSPACE/LIB/ethernet_lib.h"
#include "PHY/LTE_TRANSPORT/if4_tools.h"