From a0c5a3604a6b7f9b57622302b06bd1b91401f0d5 Mon Sep 17 00:00:00 2001 From: francescomani Date: Tue, 2 Apr 2024 16:58:25 +0200 Subject: [PATCH 01/40] fix incorrect bw index evaluation for UE capabilities --- common/utils/nr/nr_common.c | 8 +-- common/utils/nr/nr_common.h | 2 +- openair1/PHY/INIT/nr_init.c | 3 +- openair1/SIMULATION/NR_PHY/pbchsim.c | 3 +- openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c | 53 +++++++++++++++++++ openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h | 3 ++ openair2/LAYER2/NR_MAC_UE/config_ue.c | 52 +++++------------- openair2/LAYER2/NR_MAC_UE/config_ue_sl.c | 5 +- openair2/LAYER2/NR_MAC_gNB/config.c | 16 +++--- openair2/RRC/NR/nr_rrc_config.c | 40 +++++++------- openair2/RRC/NR/rrc_gNB.c | 3 +- 11 files changed, 104 insertions(+), 84 deletions(-) diff --git a/common/utils/nr/nr_common.c b/common/utils/nr/nr_common.c index 4ca616537f..e3ea7bc3e5 100644 --- a/common/utils/nr/nr_common.c +++ b/common/utils/nr/nr_common.c @@ -105,7 +105,6 @@ int get_supported_band_index(int scs, frequency_range_t freq_range, int n_rbs) return (-1); // not found } - // Table 5.2-1 NR operating bands in FR1 & FR2 (3GPP TS 38.101) // Table 5.4.2.3-1 Applicable NR-ARFCN per operating band in FR1 & FR2 (3GPP TS 38.101) // Notes: @@ -179,8 +178,9 @@ const nr_bandentry_t nr_bandtable[] = { {261,27500040,28350000,27500040,28350000, 2,2070833, 120} }; -int get_supported_bw_mhz(frequency_range_t frequency_range, int bw_index) +int get_supported_bw_mhz(frequency_range_t frequency_range, int scs, int nb_rb) { + int bw_index = get_supported_band_index(scs, frequency_range, nb_rb); if (frequency_range == FR1) { switch (bw_index) { case 0 : @@ -232,8 +232,8 @@ bool compare_relative_ul_channel_bw(int nr_band, int scs, int nb_ul, frame_type_ // 38.101-1 section 6.2.2 // Relative channel bandwidth <= 4% for TDD bands and <= 3% for FDD bands int index = get_nr_table_idx(nr_band, scs); - int bw_index = get_supported_band_index(scs, nr_band > 256 ? FR2 : FR1, nb_ul); - int band_size_khz = get_supported_bw_mhz(nr_band > 256 ? FR2 : FR1, bw_index) * 1000; + + int band_size_khz = get_supported_bw_mhz(nr_band > 256 ? FR2 : FR1, scs, nb_ul) * 1000; float limit = frame_type == TDD ? 0.04 : 0.03; float rel_bw = (float) (2 * band_size_khz) / (float) (nr_bandtable[index].ul_max + nr_bandtable[index].ul_min); return rel_bw <= limit; diff --git a/common/utils/nr/nr_common.h b/common/utils/nr/nr_common.h index 7b790978a3..2a31a675e8 100644 --- a/common/utils/nr/nr_common.h +++ b/common/utils/nr/nr_common.h @@ -200,7 +200,7 @@ uint16_t SL_to_bitmap(int startSymbolIndex, int nrOfSymbols); int get_nb_periods_per_frame(uint8_t tdd_period); long rrc_get_max_nr_csrs(const int max_rbs, long b_SRS); bool compare_relative_ul_channel_bw(int nr_band, int scs, int nb_ul, frame_type_t frame_type); -int get_supported_bw_mhz(frequency_range_t frequency_range, int bw_index); +int get_supported_bw_mhz(frequency_range_t frequency_range, int scs, int nb_rb); int get_supported_band_index(int scs, frequency_range_t freq_range, int n_rbs); void get_samplerate_and_bw(int mu, int n_rb, diff --git a/openair1/PHY/INIT/nr_init.c b/openair1/PHY/INIT/nr_init.c index 725e3a9919..6e60b745e7 100644 --- a/openair1/PHY/INIT/nr_init.c +++ b/openair1/PHY/INIT/nr_init.c @@ -514,8 +514,7 @@ void nr_phy_config_request_sim(PHY_VARS_gNB *gNB, } fp->threequarter_fs = 0; - int bw_index = get_supported_band_index(mu, fp->nr_band > 256 ? FR2 : FR1, N_RB_DL); - gNB_config->carrier_config.dl_bandwidth.value = get_supported_bw_mhz(fp->nr_band > 256 ? FR2 : FR1, bw_index); + gNB_config->carrier_config.dl_bandwidth.value = get_supported_bw_mhz(fp->nr_band > 256 ? FR2 : FR1, mu, N_RB_DL); nr_init_frame_parms(gNB_config, fp); diff --git a/openair1/SIMULATION/NR_PHY/pbchsim.c b/openair1/SIMULATION/NR_PHY/pbchsim.c index 489931adcc..0e949b0c1c 100644 --- a/openair1/SIMULATION/NR_PHY/pbchsim.c +++ b/openair1/SIMULATION/NR_PHY/pbchsim.c @@ -162,8 +162,7 @@ void nr_phy_config_request_sim_pbchsim(PHY_VARS_gNB *gNB, else fp->nr_band = 78; fp->threequarter_fs= 0; - int bw_index = get_supported_band_index(mu, fp->nr_band > 256 ? FR2 : FR1, N_RB_DL); - gNB_config->carrier_config.dl_bandwidth.value = get_supported_bw_mhz(fp->nr_band > 256 ? FR2 : FR1, bw_index); + gNB_config->carrier_config.dl_bandwidth.value = get_supported_bw_mhz(fp->nr_band > 256 ? FR2 : FR1, mu, N_RB_DL); fp->ofdm_offset_divisor = UINT_MAX; nr_init_frame_parms(gNB_config, fp); diff --git a/openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c b/openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c index 176b5b8e7b..efce87e8a2 100644 --- a/openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c +++ b/openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c @@ -5170,6 +5170,59 @@ uint16_t nr_get_csi_bitlen(nr_csi_report_t *csi_report_template, uint8_t csi_rep return csi_bitlen; } +bool supported_bw_comparison(int bw_mhz, NR_SupportedBandwidth_t *supported_BW, long *support_90mhz) +{ + if (bw_mhz == 90) + return support_90mhz ? true : false; + switch (supported_BW->present) { + case NR_SupportedBandwidth_PR_fr1 : + switch (supported_BW->choice.fr1) { + case NR_SupportedBandwidth__fr1_mhz5 : + return bw_mhz == 5; + case NR_SupportedBandwidth__fr1_mhz10 : + return bw_mhz == 10; + case NR_SupportedBandwidth__fr1_mhz15 : + return bw_mhz == 15; + case NR_SupportedBandwidth__fr1_mhz20 : + return bw_mhz == 20; + case NR_SupportedBandwidth__fr1_mhz25 : + return bw_mhz == 25; + case NR_SupportedBandwidth__fr1_mhz30 : + return bw_mhz == 30; + case NR_SupportedBandwidth__fr1_mhz40 : + return bw_mhz == 40; + case NR_SupportedBandwidth__fr1_mhz50 : + return bw_mhz == 50; + case NR_SupportedBandwidth__fr1_mhz60 : + return bw_mhz == 60; + case NR_SupportedBandwidth__fr1_mhz80 : + return bw_mhz == 80; + case NR_SupportedBandwidth__fr1_mhz100 : + return bw_mhz == 100; + default : + AssertFatal(false, "Invalid FR1 supported band\n"); + } + break; + case NR_SupportedBandwidth_PR_fr2 : + switch (supported_BW->choice.fr2) { + case NR_SupportedBandwidth__fr2_mhz50 : + return bw_mhz == 50; + case NR_SupportedBandwidth__fr2_mhz100 : + return bw_mhz == 100; + case NR_SupportedBandwidth__fr2_mhz200 : + return bw_mhz == 200; + case NR_SupportedBandwidth__fr2_mhz400 : + return bw_mhz == 400; + default : + AssertFatal(false, "Invalid FR2 supported band\n"); + } + break; + default : + AssertFatal(false, "Invalid BW type\n"); + } + return false; +} + uint16_t compute_PDU_length(uint32_t num_TLV, uint16_t total_length) { uint8_t pdu_length = 8; // 2 bytes PDU_Length + 2 bytes PDU_Index + 4 bytes num_TLV diff --git a/openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h b/openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h index 60af5706ae..8fce9ee559 100644 --- a/openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h +++ b/openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h @@ -33,6 +33,7 @@ #include "NR_MIB.h" #include "NR_CellGroupConfig.h" +#include "NR_UE-NR-Capability.h" #include "nr_mac.h" #include "common/utils/nr/nr_common.h" @@ -316,4 +317,6 @@ uint16_t compute_PDU_length(uint32_t num_TLV, uint16_t total_length); rnti_t nr_get_ra_rnti(uint8_t s_id, uint8_t t_id, uint8_t f_id, uint8_t ul_carrier_id); +bool supported_bw_comparison(int bw_mhz, NR_SupportedBandwidth_t *supported_BW, long *support_90mhz); + #endif diff --git a/openair2/LAYER2/NR_MAC_UE/config_ue.c b/openair2/LAYER2/NR_MAC_UE/config_ue.c index 07d8ed4513..604cf9a35f 100644 --- a/openair2/LAYER2/NR_MAC_UE/config_ue.c +++ b/openair2/LAYER2/NR_MAC_UE/config_ue.c @@ -118,10 +118,9 @@ static void config_common_ue_sa(NR_UE_MAC_INST_t *mac, NR_FrequencyInfoDL_SIB_t *frequencyInfoDL = &scc->downlinkConfigCommon.frequencyInfoDL; AssertFatal(frequencyInfoDL->frequencyBandList.list.array[0]->freqBandIndicatorNR, "Field mandatory present for DL in SIB1\n"); mac->nr_band = *frequencyInfoDL->frequencyBandList.list.array[0]->freqBandIndicatorNR; - int bw_index = get_supported_band_index(frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->subcarrierSpacing, - mac->nr_band > 256 ? FR2 : FR1, - frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->carrierBandwidth); - cfg->carrier_config.dl_bandwidth = get_supported_bw_mhz(mac->frequency_range, bw_index); + cfg->carrier_config.dl_bandwidth = get_supported_bw_mhz(mac->frequency_range, + frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->subcarrierSpacing, + frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->carrierBandwidth); uint64_t dl_bw_khz = (12 * frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->carrierBandwidth) * (15 << frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->subcarrierSpacing); @@ -140,10 +139,9 @@ static void config_common_ue_sa(NR_UE_MAC_INST_t *mac, NR_FrequencyInfoUL_SIB_t *frequencyInfoUL = &scc->uplinkConfigCommon->frequencyInfoUL; mac->p_Max = frequencyInfoUL->p_Max ? *frequencyInfoUL->p_Max : INT_MIN; - bw_index = get_supported_band_index(frequencyInfoUL->scs_SpecificCarrierList.list.array[0]->subcarrierSpacing, - mac->nr_band > 256 ? FR2 : FR1, - frequencyInfoUL->scs_SpecificCarrierList.list.array[0]->carrierBandwidth); - cfg->carrier_config.uplink_bandwidth = get_supported_bw_mhz(mac->frequency_range, bw_index); + cfg->carrier_config.uplink_bandwidth = get_supported_bw_mhz(mac->frequency_range, + frequencyInfoUL->scs_SpecificCarrierList.list.array[0]->subcarrierSpacing, + frequencyInfoUL->scs_SpecificCarrierList.list.array[0]->carrierBandwidth); if (frequencyInfoUL->absoluteFrequencyPointA == NULL) cfg->carrier_config.uplink_frequency = cfg->carrier_config.dl_frequency; @@ -262,10 +260,9 @@ static void config_common_ue(NR_UE_MAC_INST_t *mac, mac->frame_type = get_frame_type(mac->nr_band, get_softmodem_params()->numerology); mac->frequency_range = mac->nr_band < 256 ? FR1 : FR2; - int bw_index = get_supported_band_index(frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->subcarrierSpacing, - mac->nr_band > 256 ? FR2 : FR1, - frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->carrierBandwidth); - cfg->carrier_config.dl_bandwidth = get_supported_bw_mhz(mac->frequency_range, bw_index); + cfg->carrier_config.dl_bandwidth = get_supported_bw_mhz(mac->frequency_range, + frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->subcarrierSpacing, + frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->carrierBandwidth); cfg->carrier_config.dl_frequency = from_nrarfcn(mac->nr_band, *scc->ssbSubcarrierSpacing, @@ -287,10 +284,9 @@ static void config_common_ue(NR_UE_MAC_INST_t *mac, NR_FrequencyInfoUL_t *frequencyInfoUL = scc->uplinkConfigCommon->frequencyInfoUL; mac->p_Max = frequencyInfoUL->p_Max ? *frequencyInfoUL->p_Max : INT_MIN; - int bw_index = get_supported_band_index(frequencyInfoUL->scs_SpecificCarrierList.list.array[0]->subcarrierSpacing, - *frequencyInfoUL->frequencyBandList->list.array[0] > 256 ? FR2 : FR1, - frequencyInfoUL->scs_SpecificCarrierList.list.array[0]->carrierBandwidth); - cfg->carrier_config.uplink_bandwidth = get_supported_bw_mhz(mac->frequency_range, bw_index); + cfg->carrier_config.uplink_bandwidth = get_supported_bw_mhz(mac->frequency_range, + frequencyInfoUL->scs_SpecificCarrierList.list.array[0]->subcarrierSpacing, + frequencyInfoUL->scs_SpecificCarrierList.list.array[0]->carrierBandwidth); long *UL_pointA = NULL; if (frequencyInfoUL->absoluteFrequencyPointA) @@ -2138,18 +2134,8 @@ static void handle_mac_uecap_info(NR_UE_MAC_INST_t *mac, NR_UE_NR_Capability_t * NR_FeatureSetDownlinkPerCC_t *fs_dl_cc = fs_dlcc_list->list.array[i]; if (mac->current_DL_BWP->scs != fs_dl_cc->supportedSubcarrierSpacingDL) continue; - int uecap_bw_index; - if (fs_dl_cc->supportedBandwidthDL.present == NR_SupportedBandwidth_PR_fr1) { - uecap_bw_index = fs_dl_cc->supportedBandwidthDL.choice.fr1; - // 90 MHz option is indicated by a separate pointer in case indicated supported BW is 100MHz - // so we need to increase the index by 1 unit to point to 100 MHz if not 90MHz - if (uecap_bw_index == NR_SupportedBandwidth__fr1_mhz100 && !fs_dl_cc->channelBW_90mhz) - uecap_bw_index++; - } - else - uecap_bw_index = fs_dl_cc->supportedBandwidthDL.choice.fr2; int dl_bw_mhz = mac->phy_config.config_req.carrier_config.dl_bandwidth; - if (dl_bw_mhz != get_supported_bw_mhz(mac->frequency_range, uecap_bw_index)) + if (!supported_bw_comparison(dl_bw_mhz, &fs_dl_cc->supportedBandwidthDL, fs_dl_cc->channelBW_90mhz)) continue; if (fs_dl_cc->maxNumberMIMO_LayersPDSCH) mac->uecap_maxMIMO_PDSCH_layers = 2 << *fs_dl_cc->maxNumberMIMO_LayersPDSCH; @@ -2161,18 +2147,8 @@ static void handle_mac_uecap_info(NR_UE_MAC_INST_t *mac, NR_UE_NR_Capability_t * NR_FeatureSetUplinkPerCC_t *fs_ul_cc = fs_ulcc_list->list.array[i]; if (mac->current_UL_BWP->scs != fs_ul_cc->supportedSubcarrierSpacingUL) continue; - int uecap_bw_index; - if (fs_ul_cc->supportedBandwidthUL.present == NR_SupportedBandwidth_PR_fr1) { - uecap_bw_index = fs_ul_cc->supportedBandwidthUL.choice.fr1; - // 90 MHz option is indicated by a separate pointer in case indicated supported BW is 100MHz - // so we need to increase the index by 1 unit to point to 100 MHz if not 90MHz - if (uecap_bw_index == NR_SupportedBandwidth__fr1_mhz100 && !fs_ul_cc->channelBW_90mhz) - uecap_bw_index++; - } - else - uecap_bw_index = fs_ul_cc->supportedBandwidthUL.choice.fr2; int ul_bw_mhz = mac->phy_config.config_req.carrier_config.uplink_bandwidth; - if (ul_bw_mhz != get_supported_bw_mhz(mac->frequency_range, uecap_bw_index)) + if (!supported_bw_comparison(ul_bw_mhz, &fs_ul_cc->supportedBandwidthUL, fs_ul_cc->channelBW_90mhz)) continue; if (fs_ul_cc->maxNumberMIMO_LayersNonCB_PUSCH) mac->uecap_maxMIMO_PUSCH_layers_nocb = 1 << *fs_ul_cc->maxNumberMIMO_LayersNonCB_PUSCH; diff --git a/openair2/LAYER2/NR_MAC_UE/config_ue_sl.c b/openair2/LAYER2/NR_MAC_UE/config_ue_sl.c index 0a8a20dd74..caf53859e2 100644 --- a/openair2/LAYER2/NR_MAC_UE/config_ue_sl.c +++ b/openair2/LAYER2/NR_MAC_UE/config_ue_sl.c @@ -140,10 +140,7 @@ static void sl_prepare_phy_config(int module_id, AssertFatal(carriercfg, "SCS_SpecificCarrier cannot be NULL"); - int bw_index = get_supported_band_index(carriercfg->subcarrierSpacing, - sl_band > 256 ? FR2 : FR1, - carriercfg->carrierBandwidth); - phycfg->sl_carrier_config.sl_bandwidth = get_supported_bw_mhz(FR1, bw_index); + phycfg->sl_carrier_config.sl_bandwidth = get_supported_bw_mhz(FR1, carriercfg->subcarrierSpacing, carriercfg->carrierBandwidth); phycfg->sl_carrier_config.sl_frequency = from_nrarfcn(sl_band,carriercfg->subcarrierSpacing,pointA_ARFCN); // freq in kHz diff --git a/openair2/LAYER2/NR_MAC_gNB/config.c b/openair2/LAYER2/NR_MAC_gNB/config.c index 17fb37edba..5d3985b2d3 100644 --- a/openair2/LAYER2/NR_MAC_gNB/config.c +++ b/openair2/LAYER2/NR_MAC_gNB/config.c @@ -340,11 +340,9 @@ static void config_common(gNB_MAC_INST *nrmac, nr_pdsch_AntennaPorts_t pdsch_Ant // Carrier configuration struct NR_FrequencyInfoDL *frequencyInfoDL = scc->downlinkConfigCommon->frequencyInfoDL; - int bw_index = get_supported_band_index(frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->subcarrierSpacing, - *frequencyInfoDL->frequencyBandList.list.array[0] > 256 ? FR2 : FR1, - frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->carrierBandwidth); - cfg->carrier_config.dl_bandwidth.value = - get_supported_bw_mhz(*frequencyInfoDL->frequencyBandList.list.array[0] > 256 ? FR2 : FR1, bw_index); + cfg->carrier_config.dl_bandwidth.value = get_supported_bw_mhz(*frequencyInfoDL->frequencyBandList.list.array[0] > 256 ? FR2 : FR1, + frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->subcarrierSpacing, + frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->carrierBandwidth); cfg->carrier_config.dl_bandwidth.tl.tag = NFAPI_NR_CONFIG_DL_BANDWIDTH_TAG; // temporary cfg->num_tlv++; LOG_I(NR_MAC, "DL_Bandwidth:%d\n", cfg->carrier_config.dl_bandwidth.value); @@ -370,11 +368,9 @@ static void config_common(gNB_MAC_INST *nrmac, nr_pdsch_AntennaPorts_t pdsch_Ant } } struct NR_FrequencyInfoUL *frequencyInfoUL = scc->uplinkConfigCommon->frequencyInfoUL; - bw_index = get_supported_band_index(frequencyInfoUL->scs_SpecificCarrierList.list.array[0]->subcarrierSpacing, - *frequencyInfoUL->frequencyBandList->list.array[0] > 256 ? FR2 : FR1, - frequencyInfoUL->scs_SpecificCarrierList.list.array[0]->carrierBandwidth); - cfg->carrier_config.uplink_bandwidth.value = - get_supported_bw_mhz(*frequencyInfoUL->frequencyBandList->list.array[0] > 256 ? FR2 : FR1, bw_index); + cfg->carrier_config.uplink_bandwidth.value = get_supported_bw_mhz(*frequencyInfoUL->frequencyBandList->list.array[0] > 256 ? FR2 : FR1, + frequencyInfoUL->scs_SpecificCarrierList.list.array[0]->subcarrierSpacing, + frequencyInfoUL->scs_SpecificCarrierList.list.array[0]->carrierBandwidth); cfg->carrier_config.uplink_bandwidth.tl.tag = NFAPI_NR_CONFIG_UPLINK_BANDWIDTH_TAG; // temporary cfg->num_tlv++; LOG_I(NR_MAC, "DL_Bandwidth:%d\n", cfg->carrier_config.uplink_bandwidth.value); diff --git a/openair2/RRC/NR/nr_rrc_config.c b/openair2/RRC/NR/nr_rrc_config.c index 387c03d4d7..476c41c110 100644 --- a/openair2/RRC/NR/nr_rrc_config.c +++ b/openair2/RRC/NR/nr_rrc_config.c @@ -526,18 +526,12 @@ void set_dl_maxmimolayers(NR_PDSCH_ServingCellConfig_t *pdsch_servingcellconfig, NR_FeatureSets_t *fs = uecap ? uecap->featureSets : NULL; if (fs) { - const int bw_index = get_supported_band_index(scs, freq_range, bw_size); - AssertFatal(bw_index >= 0, "BW corresponding to %d PRBs not found\n", bw_size); + const int bw_mhz = get_supported_bw_mhz(freq_range, scs, bw_size); // go through UL feature sets and look for one with current SCS for (int i = 0; i < fs->featureSetsDownlinkPerCC->list.count; i++) { NR_FeatureSetDownlinkPerCC_t *dl_fs = fs->featureSetsDownlinkPerCC->list.array[i]; - long supported_bw; - if (freq_range == FR1) - supported_bw = dl_fs->supportedBandwidthDL.choice.fr1; - else - supported_bw = dl_fs->supportedBandwidthDL.choice.fr2; if (scs == dl_fs->supportedSubcarrierSpacingDL && - bw_index == supported_bw && + supported_bw_comparison(bw_mhz, &dl_fs->supportedBandwidthDL, dl_fs->channelBW_90mhz) && dl_fs->maxNumberMIMO_LayersPDSCH) { long ue_supported_layers = (2 << *dl_fs->maxNumberMIMO_LayersPDSCH); *pdsch_servingcellconfig->ext1->maxMIMO_Layers = NR_MAX_SUPPORTED_DL_LAYERS < ue_supported_layers ? NR_MAX_SUPPORTED_DL_LAYERS : ue_supported_layers; @@ -776,38 +770,42 @@ void prepare_sim_uecap(NR_UE_NR_Capability_t *cap, int numerology, int rbsize, int mcs_table_dl, - int mcs_table_ul) { - + int mcs_table_ul) +{ NR_Phy_Parameters_t *phy_Parameters = &cap->phy_Parameters; int band = *scc->downlinkConfigCommon->frequencyInfoDL->frequencyBandList.list.array[0]; - NR_BandNR_t *nr_bandnr = CALLOC(1,sizeof(NR_BandNR_t)); + NR_BandNR_t *nr_bandnr = calloc(1, sizeof(NR_BandNR_t)); nr_bandnr->bandNR = band; asn1cSeqAdd(&cap->rf_Parameters.supportedBandListNR.list, nr_bandnr); NR_BandNR_t *bandNRinfo = cap->rf_Parameters.supportedBandListNR.list.array[0]; if (mcs_table_ul == 1) { - bandNRinfo->pusch_256QAM = CALLOC(1,sizeof(*bandNRinfo->pusch_256QAM)); + bandNRinfo->pusch_256QAM = calloc(1,sizeof(*bandNRinfo->pusch_256QAM)); *bandNRinfo->pusch_256QAM = NR_BandNR__pusch_256QAM_supported; } if (mcs_table_dl == 1) { const frequency_range_t freq_range = band < 257 ? FR1 : FR2; - int bw = get_supported_band_index(numerology, freq_range, rbsize); if (freq_range == FR2) { - bandNRinfo->pdsch_256QAM_FR2 = CALLOC(1,sizeof(*bandNRinfo->pdsch_256QAM_FR2)); + bandNRinfo->pdsch_256QAM_FR2 = calloc(1, sizeof(*bandNRinfo->pdsch_256QAM_FR2)); *bandNRinfo->pdsch_256QAM_FR2 = NR_BandNR__pdsch_256QAM_FR2_supported; } else{ - phy_Parameters->phy_ParametersFR1 = CALLOC(1,sizeof(*phy_Parameters->phy_ParametersFR1)); + phy_Parameters->phy_ParametersFR1 = calloc(1, sizeof(*phy_Parameters->phy_ParametersFR1)); NR_Phy_ParametersFR1_t *phy_fr1 = phy_Parameters->phy_ParametersFR1; - phy_fr1->pdsch_256QAM_FR1 = CALLOC(1,sizeof(*phy_fr1->pdsch_256QAM_FR1)); + phy_fr1->pdsch_256QAM_FR1 = calloc(1, sizeof(*phy_fr1->pdsch_256QAM_FR1)); *phy_fr1->pdsch_256QAM_FR1 = NR_Phy_ParametersFR1__pdsch_256QAM_FR1_supported; } - cap->featureSets = CALLOC(1,sizeof(*cap->featureSets)); + cap->featureSets = calloc(1, sizeof(*cap->featureSets)); NR_FeatureSets_t *fs=cap->featureSets; - fs->featureSetsDownlinkPerCC = CALLOC(1,sizeof(*fs->featureSetsDownlinkPerCC)); - NR_FeatureSetDownlinkPerCC_t *fs_cc = CALLOC(1,sizeof(NR_FeatureSetDownlinkPerCC_t)); + fs->featureSetsDownlinkPerCC = calloc(1, sizeof(*fs->featureSetsDownlinkPerCC)); + NR_FeatureSetDownlinkPerCC_t *fs_cc = calloc(1, sizeof(*fs_cc)); fs_cc->supportedSubcarrierSpacingDL = numerology; + int bw = get_supported_band_index(numerology, freq_range, rbsize); + if (bw == 10) // 90MHz + fs_cc->channelBW_90mhz = calloc(1, sizeof(*fs_cc->channelBW_90mhz)); + if (bw == 11) // 100MHz + bw--; if(freq_range == FR2) { fs_cc->supportedBandwidthDL.present = NR_SupportedBandwidth_PR_fr2; fs_cc->supportedBandwidthDL.choice.fr2 = bw; @@ -816,12 +814,12 @@ void prepare_sim_uecap(NR_UE_NR_Capability_t *cap, fs_cc->supportedBandwidthDL.present = NR_SupportedBandwidth_PR_fr1; fs_cc->supportedBandwidthDL.choice.fr1 = bw; } - fs_cc->supportedModulationOrderDL = CALLOC(1,sizeof(*fs_cc->supportedModulationOrderDL)); + fs_cc->supportedModulationOrderDL = calloc(1, sizeof(*fs_cc->supportedModulationOrderDL)); *fs_cc->supportedModulationOrderDL = NR_ModulationOrder_qam256; asn1cSeqAdd(&fs->featureSetsDownlinkPerCC->list, fs_cc); } - phy_Parameters->phy_ParametersFRX_Diff = CALLOC(1,sizeof(*phy_Parameters->phy_ParametersFRX_Diff)); + phy_Parameters->phy_ParametersFRX_Diff = calloc(1, sizeof(*phy_Parameters->phy_ParametersFRX_Diff)); phy_Parameters->phy_ParametersFRX_Diff->pucch_F0_2WithoutFH = NULL; } diff --git a/openair2/RRC/NR/rrc_gNB.c b/openair2/RRC/NR/rrc_gNB.c index edd3f1d7cb..21b21d16e7 100644 --- a/openair2/RRC/NR/rrc_gNB.c +++ b/openair2/RRC/NR/rrc_gNB.c @@ -227,8 +227,7 @@ static int get_ssb_arfcn(const f1ap_served_cell_info_t *cell_info, const NR_MIB_ else AssertFatal(false, "Invalid absoluteFrequencyPointA: %d\n", dl_arfcn); - int bw_index = get_supported_band_index(scs, band > 256 ? FR2 : FR1, get_dl_bw(cell_info)); - int band_size_hz = get_supported_bw_mhz(band > 256 ? FR2 : FR1, bw_index) * 1000 * 1000; + int band_size_hz = get_supported_bw_mhz(band > 256 ? FR2 : FR1, scs, get_dl_bw(cell_info)) * 1000 * 1000; uint32_t ssb_arfcn = to_nrarfcn(band, freqssb, scs, band_size_hz); LOG_D(NR_RRC, From 5610ce073820aa703ff038a102f7bdfab5f00ac3 Mon Sep 17 00:00:00 2001 From: Guido Casati Date: Fri, 12 Apr 2024 16:37:49 +0200 Subject: [PATCH 02/40] Fix PDCP re-establishment of SRB1 and SRB2 - SRB1 shall be re-established at the time of RRCReestablishmentRequest according to 5.3.7.4 of 3GPP TS 38.331 - SRB2 shall be re-established when creating srb-ToAddModList according to 5.3.5.6.3 of 3GPP TS 38.331 --- openair2/RRC/NR/rrc_gNB.c | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/openair2/RRC/NR/rrc_gNB.c b/openair2/RRC/NR/rrc_gNB.c index edd3f1d7cb..6628be1073 100644 --- a/openair2/RRC/NR/rrc_gNB.c +++ b/openair2/RRC/NR/rrc_gNB.c @@ -370,6 +370,9 @@ unsigned int rrc_gNB_get_next_transaction_identifier(module_id_t gnb_mod_idP) return tmp; } +/** + * @brief Create srb-ToAddModList for RRCSetup and RRCReconfiguration messages +*/ static NR_SRB_ToAddModList_t *createSRBlist(gNB_RRC_UE_t *ue, bool reestablish) { if (!ue->Srb[1].Active) { @@ -381,6 +384,7 @@ static NR_SRB_ToAddModList_t *createSRBlist(gNB_RRC_UE_t *ue, bool reestablish) if (ue->Srb[i].Active) { asn1cSequenceAdd(list->list, NR_SRB_ToAddMod_t, srb); srb->srb_Identity = i; + /* Set reestablishPDCP only for SRB2 */ if (reestablish && i == 2) { asn1cCallocOne(srb->reestablishPDCP, NR_SRB_ToAddMod__reestablishPDCP_true); } @@ -1021,11 +1025,11 @@ static void rrc_gNB_generate_RRCReestablishment(rrc_gNB_ue_context_t *ue_context /* SRBs */ for (int srb_id = 1; srb_id < NR_NUM_SRB; srb_id++) { - if (ue_p->Srb[srb_id].Active) { + if (ue_p->Srb[srb_id].Active) nr_pdcp_config_set_security(ue_p->rrc_ue_id, srb_id, security_mode, kRRCenc, kRRCint, kUPenc); - nr_pdcp_reestablishment(ue_p->rrc_ue_id, srb_id, true); - } } + /* Re-establish PDCP for SRB1, according to 5.3.7.4 of 3GPP TS 38.331 */ + nr_pdcp_reestablishment(ue_p->rrc_ue_id, 1, true); /* PDCP Reestablishment over E1 */ cuup_notify_reestablishment(rrc, ue_p); /* F1AP DL RRC Message Transfer */ @@ -1083,7 +1087,17 @@ static void rrc_gNB_process_RRCReestablishmentComplete(const protocol_ctxt_t *co NR_RLC_BearerConfig__reestablishRLC_true); } + /* Re-establish SRB2 according to clause 5.3.5.6.3 of 3GPP TS 38.331 + * (SRB1 is re-established with RRCReestablishment message) + */ + int srb_id = 2; + if (ue_p->Srb[srb_id].Active) { + nr_pdcp_reestablishment(ue_p->rrc_ue_id, srb_id, true); + } + + /* Create srb-ToAddModList */ NR_SRB_ToAddModList_t *SRBs = createSRBlist(ue_p, true); + /* Create drb-ToAddModList */ NR_DRB_ToAddModList_t *DRBs = createDRBlist(ue_p, true); uint8_t new_xid = rrc_gNB_get_next_transaction_identifier(ctxt_pP->module_id); From ab65bc3b08812cdebc9503323889c7206641b149 Mon Sep 17 00:00:00 2001 From: Guido Casati Date: Fri, 12 Apr 2024 16:40:30 +0200 Subject: [PATCH 03/40] Refactor PDCP Reestablishment of DRBs according to 5.3.5.6.5 of 3GPP TS 38.331 - remove PDCP reestablishment for DRBs from RRCReestablishment message generation - do PDCP reestablishment and CUUP notification calls after reception or RRCReestablishmentComplete - this is necessary to make it consistent with the RRCReconfiguration message that contains RadioBearerConfig with the list of bearers to add/release which is followed by PDCP re-establishment at UE --- openair2/RRC/NR/rrc_gNB.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openair2/RRC/NR/rrc_gNB.c b/openair2/RRC/NR/rrc_gNB.c index 6628be1073..2df6228c6a 100644 --- a/openair2/RRC/NR/rrc_gNB.c +++ b/openair2/RRC/NR/rrc_gNB.c @@ -1030,8 +1030,6 @@ static void rrc_gNB_generate_RRCReestablishment(rrc_gNB_ue_context_t *ue_context } /* Re-establish PDCP for SRB1, according to 5.3.7.4 of 3GPP TS 38.331 */ nr_pdcp_reestablishment(ue_p->rrc_ue_id, 1, true); - /* PDCP Reestablishment over E1 */ - cuup_notify_reestablishment(rrc, ue_p); /* F1AP DL RRC Message Transfer */ f1_ue_data_t ue_data = cu_get_f1_ue_data(ue_p->rrc_ue_id); RETURN_IF_INVALID_ASSOC_ID(ue_data); @@ -1094,6 +1092,8 @@ static void rrc_gNB_process_RRCReestablishmentComplete(const protocol_ctxt_t *co if (ue_p->Srb[srb_id].Active) { nr_pdcp_reestablishment(ue_p->rrc_ue_id, srb_id, true); } + /* PDCP Reestablishment of DRBs according to 5.3.5.6.5 of 3GPP TS 38.331 (over E1) */ + cuup_notify_reestablishment(rrc, ue_p); /* Create srb-ToAddModList */ NR_SRB_ToAddModList_t *SRBs = createSRBlist(ue_p, true); From 1d10a73b95f2503bd987bd05f67a1d17a097e850 Mon Sep 17 00:00:00 2001 From: Guido Casati Date: Wed, 17 Apr 2024 15:20:37 +0200 Subject: [PATCH 04/40] Apply default configuration for SRB1 when receiving RRCReestablishmentRequest - according to 5.3.7.4 of TS 38.331 --- openair2/LAYER2/NR_MAC_gNB/mac_rrc_dl_handler.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/openair2/LAYER2/NR_MAC_gNB/mac_rrc_dl_handler.c b/openair2/LAYER2/NR_MAC_gNB/mac_rrc_dl_handler.c index f0d5b7ce18..cb26703566 100644 --- a/openair2/LAYER2/NR_MAC_gNB/mac_rrc_dl_handler.c +++ b/openair2/LAYER2/NR_MAC_gNB/mac_rrc_dl_handler.c @@ -716,6 +716,8 @@ void dl_rrc_message_transfer(const f1ap_dl_rrc_message_t *dl_rrc) pthread_mutex_unlock(&mac->sched_lock); nr_rlc_remove_ue(dl_rrc->gNB_DU_ue_id); nr_rlc_update_id(*dl_rrc->old_gNB_DU_ue_id, dl_rrc->gNB_DU_ue_id); + /* 38.331 clause 5.3.7.4: apply the specified configuration defined in 9.2.1 for SRB1 */ + nr_rlc_reconfigure_entity(dl_rrc->gNB_DU_ue_id, 1, NULL); instance_t f1inst = get_f1_gtp_instance(); if (f1inst >= 0) // we actually use F1-U gtpv1u_update_ue_id(f1inst, *dl_rrc->old_gNB_DU_ue_id, dl_rrc->gNB_DU_ue_id); From 6bbcc1d275d08dad60812eab8ecf76d26e4f500b Mon Sep 17 00:00:00 2001 From: Jaroslava Fiedlerova Date: Mon, 1 Apr 2024 18:24:53 +0200 Subject: [PATCH 05/40] Improve LTE-2x2 radio behavior and log collection - change testcase IDs to get all logs --- .../enb.band38.lte_2x2.100prb.usrpn310.conf | 8 +++---- ...nb.band38.lte_2x2_tm2.100prb.usrpn310.conf | 8 +++---- .../container_lte_n3xx_tdd_2x2_tm2.xml | 24 +++++++++---------- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/ci-scripts/conf_files/enb.band38.lte_2x2.100prb.usrpn310.conf b/ci-scripts/conf_files/enb.band38.lte_2x2.100prb.usrpn310.conf index 183b91407c..cd3842ed5b 100644 --- a/ci-scripts/conf_files/enb.band38.lte_2x2.100prb.usrpn310.conf +++ b/ci-scripts/conf_files/enb.band38.lte_2x2.100prb.usrpn310.conf @@ -204,8 +204,8 @@ MACRLCs = ( bler_target_upper = 20.0; bler_target_lower = 10.0; max_ul_rb_index = 27; - puSch10xSnr = 190; - puCch10xSnr = 160; + puSch10xSnr = 250; + puCch10xSnr = 230; } ); @@ -224,8 +224,8 @@ RUs = ( local_rf = "yes" nb_tx = 2 nb_rx = 2 - att_tx = 10 - att_rx = 5; + att_tx = 12 + att_rx = 0; bands = [38]; max_pdschReferenceSignalPower = -27; max_rxgain = 75; diff --git a/ci-scripts/conf_files/enb.band38.lte_2x2_tm2.100prb.usrpn310.conf b/ci-scripts/conf_files/enb.band38.lte_2x2_tm2.100prb.usrpn310.conf index 21fc241994..a2dfde11c3 100644 --- a/ci-scripts/conf_files/enb.band38.lte_2x2_tm2.100prb.usrpn310.conf +++ b/ci-scripts/conf_files/enb.band38.lte_2x2_tm2.100prb.usrpn310.conf @@ -204,8 +204,8 @@ MACRLCs = ( bler_target_upper = 20.0; bler_target_lower = 10.0; max_ul_rb_index = 27; - puSch10xSnr = 190; - puCch10xSnr = 160; + puSch10xSnr = 280; + puCch10xSnr = 250; } ); @@ -224,8 +224,8 @@ RUs = ( local_rf = "yes" nb_tx = 2 nb_rx = 2 - att_tx = 10 - att_rx = 5; + att_tx = 18 + att_rx = 0; bands = [38]; max_pdschReferenceSignalPower = -27; max_rxgain = 75; diff --git a/ci-scripts/xml_files/container_lte_n3xx_tdd_2x2_tm2.xml b/ci-scripts/xml_files/container_lte_n3xx_tdd_2x2_tm2.xml index bee8c9eba5..b518f98bdb 100644 --- a/ci-scripts/xml_files/container_lte_n3xx_tdd_2x2_tm2.xml +++ b/ci-scripts/xml_files/container_lte_n3xx_tdd_2x2_tm2.xml @@ -31,15 +31,15 @@ 111111 100000 010010 -030101 +031101 010001 000001 -050000 -050001 -070000 -070001 +051000 +051001 +071000 +071001 010010 -030201 +031201 @@ -65,7 +65,7 @@ sudo cpupower idle-set -E - + Deploy_Object Deploy eNB (TDD/Band38/2.6Ghz/N3XX) in a container ci-scripts/yaml_files/lte_n3xx_tdd_2x2_tm2 @@ -85,7 +85,7 @@ up2 - + Ping Ping: 20 pings up2 @@ -94,7 +94,7 @@ 60 - + Ping Ping: 100 pings, size 1024 up2 @@ -103,7 +103,7 @@ 60 - + Iperf iperf (DL/26Mbps/UDP)(60 sec)(single-ue profile) -u -b 1M -t 60 -R @@ -113,7 +113,7 @@ 95 - + Iperf iperf (UL/7Mbps/UDP)(60 sec)(single-ue profile) -u -b 7M -t 60 @@ -129,7 +129,7 @@ up2 - + Undeploy_Object Undeploy gNB ci-scripts/yaml_files/lte_n3xx_tdd_2x2_tm2 From d9b87d1cb7ba3b8bc1941a097d02fed9f431ef1f Mon Sep 17 00:00:00 2001 From: Jaroslava Fiedlerova Date: Fri, 12 Apr 2024 09:42:11 +0200 Subject: [PATCH 06/40] Fix of iperf3 BIDIR reporting --- ci-scripts/cls_oaicitest.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ci-scripts/cls_oaicitest.py b/ci-scripts/cls_oaicitest.py index 0facb2f51a..928e6bbfbd 100644 --- a/ci-scripts/cls_oaicitest.py +++ b/ci-scripts/cls_oaicitest.py @@ -129,10 +129,10 @@ def Iperf_analyzeV3BIDIRJson(filename): with open(filename) as file: filename = json.load(file) try: - sender_bitrate_dl = round(filename['end']['streams'][0]['sender']['bits_per_second']/1000000,2) - receiver_bitrate_dl = round(filename['end']['streams'][0]['receiver']['bits_per_second']/1000000,2) - sender_bitrate_ul = round(filename['end']['streams'][1]['sender']['bits_per_second']/1000000,2) - receiver_bitrate_ul = round(filename['end']['streams'][1]['receiver']['bits_per_second']/1000000,2) + sender_bitrate_ul = round(filename['end']['streams'][0]['sender']['bits_per_second']/1000000,2) + receiver_bitrate_ul = round(filename['end']['streams'][0]['receiver']['bits_per_second']/1000000,2) + sender_bitrate_dl = round(filename['end']['streams'][1]['sender']['bits_per_second']/1000000,2) + receiver_bitrate_dl = round(filename['end']['streams'][1]['receiver']['bits_per_second']/1000000,2) except Exception as e: return (False, 'Could not compute BIDIR bitrate!') From 2c2b7416c1fc63711d1d0c54aef5035080f4b7b1 Mon Sep 17 00:00:00 2001 From: Guido Casati Date: Thu, 18 Apr 2024 14:52:09 +0200 Subject: [PATCH 07/40] Check numDlUpParam size when processing DlUpParamList --- openair2/LAYER2/nr_pdcp/cucp_cuup_handler.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/openair2/LAYER2/nr_pdcp/cucp_cuup_handler.c b/openair2/LAYER2/nr_pdcp/cucp_cuup_handler.c index e18c8eddfb..a34d8649d7 100644 --- a/openair2/LAYER2/nr_pdcp/cucp_cuup_handler.c +++ b/openair2/LAYER2/nr_pdcp/cucp_cuup_handler.c @@ -261,10 +261,12 @@ void e1_bearer_context_modif(const e1ap_bearer_mod_req_t *req) if (f1inst < 0) // no F1-U? continue; // nothing to do - in_addr_t addr = {0}; - memcpy(&addr, &to_modif->DlUpParamList[0].tlAddress, sizeof(in_addr_t)); - - GtpuUpdateTunnelOutgoingAddressAndTeid(f1inst, req->gNB_cu_cp_ue_id, to_modif->id, addr, to_modif->DlUpParamList[0].teId); + /* Loop through DL UP Transport Layer params list + * and update GTP tunnel outgoing addr and TEID */ + for (int k = 0; k < to_modif->numDlUpParam; k++) { + in_addr_t addr = to_modif->DlUpParamList[k].tlAddress; + GtpuUpdateTunnelOutgoingAddressAndTeid(f1inst, req->gNB_cu_cp_ue_id, to_modif->id, addr, to_modif->DlUpParamList[k].teId); + } } } From da26eacfd49ba39cedd902e1a5d1832097831ae9 Mon Sep 17 00:00:00 2001 From: francescomani Date: Sat, 6 Apr 2024 09:39:58 +0200 Subject: [PATCH 08/40] improvements in handling RRC Release --- openair2/RRC/NR_UE/rrc_UE.c | 51 ++++++++++++++++--- openair2/RRC/NR_UE/rrc_defs.h | 9 ++-- openair2/RRC/NR_UE/rrc_proto.h | 2 +- openair2/RRC/NR_UE/rrc_timers_and_constants.c | 4 ++ 4 files changed, 55 insertions(+), 11 deletions(-) diff --git a/openair2/RRC/NR_UE/rrc_UE.c b/openair2/RRC/NR_UE/rrc_UE.c index 6442594eef..71cd78ea31 100644 --- a/openair2/RRC/NR_UE/rrc_UE.c +++ b/openair2/RRC/NR_UE/rrc_UE.c @@ -1623,15 +1623,14 @@ static int nr_rrc_ue_decode_dcch(NR_UE_RRC_INST_t *rrc, } break; case NR_DL_DCCH_MessageType__c1_PR_rrcResume: - LOG_I(NR_RRC, "Received rrcResume on DL-DCCH-Message\n"); + LOG_E(NR_RRC, "Received rrcResume on DL-DCCH-Message -> Not handled\n"); break; case NR_DL_DCCH_MessageType__c1_PR_rrcRelease: LOG_I(NR_RRC, "[UE %ld] Received RRC Release (gNB %d)\n", rrc->ue_id, gNB_indexP); - // TODO properly implement procedures in 5.3.8.3 of 38.331 - NR_Release_Cause_t cause = OTHER; - if (rrc->detach_after_release) - rrc->nrRrcState = RRC_STATE_DETACH_NR; - nr_rrc_going_to_IDLE(rrc, cause, dl_dcch_msg->message.choice.c1->choice.rrcRelease); + // delay the actions 60 ms from the moment the RRCRelease message was received + UPDATE_IE(rrc->RRCRelease, dl_dcch_msg->message.choice.c1->choice.rrcRelease, NR_RRCRelease_t); + nr_timer_setup(&rrc->release_timer, 60, 10); // 10ms step + nr_timer_start(&rrc->release_timer); break; case NR_DL_DCCH_MessageType__c1_PR_ueCapabilityEnquiry: @@ -2136,6 +2135,46 @@ static void process_lte_nsa_msg(NR_UE_RRC_INST_t *rrc, nsa_msg_t *msg, int msg_l } } +void handle_RRCRelease(NR_UE_RRC_INST_t *rrc) +{ + NR_UE_Timers_Constants_t *tac = &rrc->timers_and_constants; + // stop timer T380, if running + nr_timer_stop(&tac->T380); + // stop timer T320, if running + nr_timer_stop(&tac->T320); + if (rrc->detach_after_release) + rrc->nrRrcState = RRC_STATE_DETACH_NR; + const struct NR_RRCRelease_IEs *rrcReleaseIEs = rrc->RRCRelease ? rrc->RRCRelease->criticalExtensions.choice.rrcRelease : NULL; + if (!rrc->as_security_activated) { + // ignore any field included in RRCRelease message except waitTime + // perform the actions upon going to RRC_IDLE as specified in 5.3.11 with the release cause 'other' + // upon which the procedure ends + NR_Release_Cause_t cause = OTHER; + nr_rrc_going_to_IDLE(rrc, cause, rrc->RRCRelease); + asn1cFreeStruc(asn_DEF_NR_RRCRelease, rrc->RRCRelease); + return; + } + bool suspend = false; + if (rrcReleaseIEs) { + if (rrcReleaseIEs->redirectedCarrierInfo) + LOG_E(NR_RRC, "redirectedCarrierInfo in RRCRelease not handled\n"); + if (rrcReleaseIEs->cellReselectionPriorities) + LOG_E(NR_RRC, "cellReselectionPriorities in RRCRelease not handled\n"); + if (rrcReleaseIEs->deprioritisationReq) + LOG_E(NR_RRC, "deprioritisationReq in RRCRelease not handled\n"); + if (rrcReleaseIEs->suspendConfig) { + suspend = true; + // procedures to go in INACTIVE state + AssertFatal(false, "Inactive State not supported\n"); + } + } + if (!suspend) { + NR_Release_Cause_t cause = OTHER; + nr_rrc_going_to_IDLE(rrc, cause, rrc->RRCRelease); + } + asn1cFreeStruc(asn_DEF_NR_RRCRelease, rrc->RRCRelease); +} + void nr_rrc_going_to_IDLE(NR_UE_RRC_INST_t *rrc, NR_Release_Cause_t release_cause, NR_RRCRelease_t *RRCRelease) diff --git a/openair2/RRC/NR_UE/rrc_defs.h b/openair2/RRC/NR_UE/rrc_defs.h index 533b3870f5..c22132767e 100644 --- a/openair2/RRC/NR_UE/rrc_defs.h +++ b/openair2/RRC/NR_UE/rrc_defs.h @@ -159,6 +159,7 @@ typedef struct NR_UE_Timers_Constants_s { NR_timer_t T320; NR_timer_t T321; NR_timer_t T325; + NR_timer_t T380; NR_timer_t T390; // counters uint32_t N310_cnt; @@ -217,10 +218,10 @@ typedef struct NR_UE_RRC_INST_s { long keyToUse; bool as_security_activated; bool detach_after_release; - - long selected_plmn_identity; - Rrc_State_NR_t nrRrcState; - as_nas_info_t initialNasMsg; + NR_timer_t release_timer; + NR_RRCRelease_t *RRCRelease; + long selected_plmn_identity; + Rrc_State_NR_t nrRrcState; //Sidelink params NR_SL_PreconfigurationNR_r16_t *sl_preconfig; diff --git a/openair2/RRC/NR_UE/rrc_proto.h b/openair2/RRC/NR_UE/rrc_proto.h index 556898c304..1de5c19122 100644 --- a/openair2/RRC/NR_UE/rrc_proto.h +++ b/openair2/RRC/NR_UE/rrc_proto.h @@ -86,7 +86,7 @@ void nr_mac_rrc_sync_ind(const module_id_t module_id, void nr_rrc_going_to_IDLE(NR_UE_RRC_INST_t *rrc, NR_Release_Cause_t release_cause, NR_RRCRelease_t *RRCRelease); - +void handle_RRCRelease(NR_UE_RRC_INST_t *rrc); void nr_mac_rrc_ra_ind(const module_id_t mod_id, int frame, bool success); void nr_mac_rrc_msg3_ind(const module_id_t mod_id, const int rnti, int gnb_id); void set_rlf_sib1_timers_and_constants(NR_UE_Timers_Constants_t *tac, NR_SIB1_t *sib1); diff --git a/openair2/RRC/NR_UE/rrc_timers_and_constants.c b/openair2/RRC/NR_UE/rrc_timers_and_constants.c index 10f50dbf9b..70a467691b 100644 --- a/openair2/RRC/NR_UE/rrc_timers_and_constants.c +++ b/openair2/RRC/NR_UE/rrc_timers_and_constants.c @@ -119,6 +119,10 @@ void nr_rrc_handle_timers(NR_UE_RRC_INST_t *rrc) { NR_UE_Timers_Constants_t *timers = &rrc->timers_and_constants; + bool release_timer_expired = nr_timer_tick(&rrc->release_timer); + if (release_timer_expired) + handle_RRCRelease(rrc); + bool t300_expired = nr_timer_tick(&timers->T300); if(t300_expired) { LOG_W(NR_RRC, "Timer T300 expired! No timely response to RRCSetupRequest\n"); From 105e9b5f58392326f9ae06ef9784fb7760e2c7d8 Mon Sep 17 00:00:00 2001 From: Guido Casati Date: Sun, 21 Apr 2024 10:20:18 +0200 Subject: [PATCH 09/40] Handling Bearer Context Status Change IE in Bearer Context Modification Request - E1 encoding /decoding - new enum for E1 Bearer Status Change see 9.2.2.4 BEARER CONTEXT MODIFICATION REQUEST of 3GPP TS 38.463 --- openair2/COMMON/e1ap_messages_types.h | 7 +++++++ openair2/E1AP/e1ap.c | 18 +++++++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/openair2/COMMON/e1ap_messages_types.h b/openair2/COMMON/e1ap_messages_types.h index 5b727a3818..cc48a6f9e9 100644 --- a/openair2/COMMON/e1ap_messages_types.h +++ b/openair2/COMMON/e1ap_messages_types.h @@ -55,6 +55,12 @@ typedef net_ip_address_t e1ap_net_ip_address_t; +typedef enum BEARER_CONTEXT_STATUS_e { + BEARER_ACTIVE = 0, + BEARER_SUSPEND, + BEARER_RESUME, +} BEARER_CONTEXT_STATUS_t; + typedef struct PLMN_ID_s { int mcc; int mnc; @@ -240,6 +246,7 @@ typedef struct e1ap_bearer_setup_req_s { char integrityProtectionKey[128]; long ueDlAggMaxBitRate; PLMN_ID_t servingPLMNid; + BEARER_CONTEXT_STATUS_t bearerContextStatus; long activityNotificationLevel; int numPDUSessions; pdu_session_to_setup_t pduSession[E1AP_MAX_NUM_PDU_SESSIONS]; diff --git a/openair2/E1AP/e1ap.c b/openair2/E1AP/e1ap.c index 1c9ff19bff..c47e618e8e 100644 --- a/openair2/E1AP/e1ap.c +++ b/openair2/E1AP/e1ap.c @@ -1192,7 +1192,7 @@ static int fill_BEARER_CONTEXT_MODIFICATION_REQUEST(e1ap_bearer_setup_req_t *con ieC2->value.present = E1AP_BearerContextModificationRequestIEs__value_PR_GNB_CU_UP_UE_E1AP_ID; ieC2->value.choice.GNB_CU_UP_UE_E1AP_ID = bearerCxt->gNB_cu_up_ue_id; /* optional */ - /* */ + /* c3. E1AP_ProtocolIE_ID_id_System_BearerContextModificationRequest */ asn1cSequenceAdd(out->protocolIEs.list, E1AP_BearerContextModificationRequestIEs_t, ieC3); ieC3->id = E1AP_ProtocolIE_ID_id_System_BearerContextModificationRequest; ieC3->criticality = E1AP_Criticality_reject; @@ -1230,6 +1230,15 @@ static int fill_BEARER_CONTEXT_MODIFICATION_REQUEST(e1ap_bearer_setup_req_t *con } } } + /* c4. E1AP_ProtocolIE_ID_id_BearerContextStatusChange */ + if (bearerCxt->bearerContextStatus == BEARER_SUSPEND) { + asn1cSequenceAdd(out->protocolIEs.list, E1AP_BearerContextModificationRequestIEs_t, ieC4); + ieC4->id = E1AP_ProtocolIE_ID_id_BearerContextStatusChange; + ieC4->criticality = E1AP_Criticality_reject; + ieC4->value.present = E1AP_BearerContextModificationRequestIEs__value_PR_BearerContextStatusChange; + /* Bearer Context Status Change */ + ieC4->value.choice.BearerContextStatusChange = E1AP_BearerContextStatusChange_suspend; + } return 0; } @@ -1390,6 +1399,13 @@ static void extract_BEARER_CONTEXT_MODIFICATION_REQUEST(const E1AP_E1AP_PDU_t *p } break; + case E1AP_ProtocolIE_ID_id_BearerContextStatusChange: + /* Bearer Context Status Change */ + DevAssert(ie->criticality == E1AP_Criticality_reject); + DevAssert(ie->value.present == E1AP_BearerContextModificationRequestIEs__value_PR_BearerContextStatusChange); + bearerCxt->bearerContextStatus = (ie->value.choice.BearerContextStatusChange == E1AP_BearerContextStatusChange_suspend) ? BEARER_SUSPEND : BEARER_ACTIVE; + break; + default: LOG_E(E1AP, "Handle for this IE is not implemented (or) invalid IE detected\n"); break; From 1924b3c79392eb6f61fbe654025b1e5c6972bc3a Mon Sep 17 00:00:00 2001 From: vijay chadachan Date: Tue, 23 Apr 2024 10:44:00 +0200 Subject: [PATCH 10/40] Fix for the overflow issue while processing GPS based timestamp from RU The absslot_tx overflow issue observed during integration testing of AW2S RU with GPS as the source for the clock synchronization. Causes the gNB not to start the TX thread and stops the processing. --- executables/nr-gnb.c | 10 +++++----- executables/nr-ru.c | 6 +++--- executables/rt_profiling.h | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/executables/nr-gnb.c b/executables/nr-gnb.c index 1fa3478d75..9df218fe1b 100644 --- a/executables/nr-gnb.c +++ b/executables/nr-gnb.c @@ -115,10 +115,10 @@ static void tx_func(void *param) int slot_tx = info->slot; int frame_rx = info->frame_rx; int slot_rx = info->slot_rx; - int absslot_tx = info->timestamp_tx / info->gNB->frame_parms.get_samples_per_slot(slot_tx, &info->gNB->frame_parms); - int absslot_rx = absslot_tx - info->gNB->RU_list[0]->sl_ahead; + int64_t absslot_tx = info->timestamp_tx / info->gNB->frame_parms.get_samples_per_slot(slot_tx, &info->gNB->frame_parms); + int64_t absslot_rx = absslot_tx - info->gNB->RU_list[0]->sl_ahead; if (absslot_rx < 0) { - LOG_W(NR_PHY, "Slot ahead %d is larger than absslot_tx %d. Cannot start TX yet.\n", info->gNB->RU_list[0]->sl_ahead, absslot_tx); + LOG_W(NR_PHY, "Slot ahead %d is larger than absslot_tx %ld. Cannot start TX yet.\n", info->gNB->RU_list[0]->sl_ahead, absslot_tx); return; } LOG_D(NR_PHY, "%d.%d running tx_func\n", frame_tx, slot_tx); @@ -218,8 +218,8 @@ void rx_func(void *param) for (; i < gNB->frame_parms.slots_per_subframe / 2; i++) cumul_samples += gNB->frame_parms.get_samples_per_slot(i, &gNB->frame_parms); int samples = cumul_samples / i; - int absslot_tx = info->timestamp_tx / samples; - int absslot_rx = absslot_tx - gNB->RU_list[0]->sl_ahead; + int64_t absslot_tx = info->timestamp_tx / samples; + int64_t absslot_rx = absslot_tx - gNB->RU_list[0]->sl_ahead; int rt_prof_idx = absslot_rx % RT_PROF_DEPTH; clock_gettime(CLOCK_MONOTONIC,&info->gNB->rt_L1_profiling.start_L1_RX[rt_prof_idx]); start_meas(&softmodem_stats_rxtx_sf); diff --git a/executables/nr-ru.c b/executables/nr-ru.c index 96c9e55e75..aa6e658bac 100644 --- a/executables/nr-ru.c +++ b/executables/nr-ru.c @@ -1108,8 +1108,8 @@ void ru_tx_func(void *param) { for (; i < fp->slots_per_subframe / 2; i++) cumul_samples += fp->get_samples_per_slot(i, fp); int samples = cumul_samples / i; - int absslot_tx = info->timestamp_tx / samples; - int absslot_rx = absslot_tx - ru->sl_ahead; + int64_t absslot_tx = info->timestamp_tx / samples; + int64_t absslot_rx = absslot_tx - ru->sl_ahead; int rt_prof_idx = absslot_rx % RT_PROF_DEPTH; clock_gettime(CLOCK_MONOTONIC,&ru->rt_ru_profiling.start_RU_TX[rt_prof_idx]); // do TX front-end processing if needed (precoding and/or IDFTs) @@ -1335,7 +1335,7 @@ void *ru_thread( void *param ) { proc->timestamp_tx += fp->get_samples_per_slot(i % fp->slots_per_frame, fp); proc->tti_tx = (proc->tti_rx + ru->sl_ahead) % fp->slots_per_frame; proc->frame_tx = proc->tti_rx > proc->tti_tx ? (proc->frame_rx + 1) & 1023 : proc->frame_rx; - int absslot_rx = proc->timestamp_rx/fp->get_samples_per_slot(proc->tti_rx,fp); + int64_t absslot_rx = proc->timestamp_rx/fp->get_samples_per_slot(proc->tti_rx,fp); int rt_prof_idx = absslot_rx % RT_PROF_DEPTH; clock_gettime(CLOCK_MONOTONIC,&ru->rt_ru_profiling.return_RU_south_in[rt_prof_idx]); LOG_D(PHY,"AFTER fh_south_in - SFN/SL:%d%d RU->proc[RX:%d.%d TX:%d.%d] RC.gNB[0]:[RX:%d%d TX(SFN):%d]\n", diff --git a/executables/rt_profiling.h b/executables/rt_profiling.h index 03dcf94517..9b72a7091f 100644 --- a/executables/rt_profiling.h +++ b/executables/rt_profiling.h @@ -40,7 +40,7 @@ extern "C" // depth of trace in slots #define RT_PROF_DEPTH 100 typedef struct { - int absslot_rx[RT_PROF_DEPTH]; + int64_t absslot_rx[RT_PROF_DEPTH]; struct timespec return_RU_south_in[RT_PROF_DEPTH]; struct timespec return_RU_feprx[RT_PROF_DEPTH]; struct timespec return_RU_prachrx[RT_PROF_DEPTH]; @@ -50,7 +50,7 @@ typedef struct { } rt_ru_profiling_t; typedef struct { - int absslot_ux[RT_PROF_DEPTH]; + int64_t absslot_ux[RT_PROF_DEPTH]; struct timespec start_L1_RX[RT_PROF_DEPTH]; struct timespec return_L1_RX[RT_PROF_DEPTH]; struct timespec start_L1_TX[RT_PROF_DEPTH]; From c0934b26dab6c3677aaa7b7c01cd8386c4e9287b Mon Sep 17 00:00:00 2001 From: Cedric Roux Date: Tue, 23 Apr 2024 12:05:53 +0200 Subject: [PATCH 11/40] bugfix: use correct security algorithm --- openair3/NAS/COMMON/API/NETWORK/nas_message.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openair3/NAS/COMMON/API/NETWORK/nas_message.c b/openair3/NAS/COMMON/API/NETWORK/nas_message.c index c5a304b84b..9a7dd8bd89 100644 --- a/openair3/NAS/COMMON/API/NETWORK/nas_message.c +++ b/openair3/NAS/COMMON/API/NETWORK/nas_message.c @@ -1053,7 +1053,7 @@ static int _nas_message_decrypt( stream_cipher.message = (unsigned char *)src; /* length in bits */ stream_cipher.blength = length << 3; - stream_compute_encrypt(EEA1_128_ALG_ID, &stream_cipher, (unsigned char *)dest); + stream_compute_encrypt(EEA2_128_ALG_ID, &stream_cipher, (unsigned char *)dest); /* Decode the first octet (security header type or EPS bearer identity, * and protocol discriminator) */ From efeb5384904ad2febb7ca5fce8e8a03d032a2fb1 Mon Sep 17 00:00:00 2001 From: francescomani Date: Tue, 23 Apr 2024 12:20:42 +0200 Subject: [PATCH 12/40] harmonize usage of frequency range structures --- common/utils/nr/nr_common.h | 5 ----- executables/nr-ru.c | 2 +- openair1/PHY/INIT/nr_parms.c | 12 ++++++------ openair1/PHY/NR_UE_ESTIMATION/nr_adjust_synch_ue.c | 2 +- openair1/PHY/defs_nr_common.h | 2 +- openair1/SCHED_NR/phy_procedures_nr_gNB.c | 8 ++++---- openair1/SIMULATION/NR_PHY/pbchsim.c | 6 +++--- openair1/SIMULATION/NR_PHY/prachsim.c | 4 ++-- 8 files changed, 18 insertions(+), 23 deletions(-) diff --git a/common/utils/nr/nr_common.h b/common/utils/nr/nr_common.h index fb3abd1247..f5eccfc7ec 100644 --- a/common/utils/nr/nr_common.h +++ b/common/utils/nr/nr_common.h @@ -79,11 +79,6 @@ static inline const char *rnti_types(nr_rnti_type_t rr) #define NR_MAX_NB_LAYERS 4 // 8 -typedef enum { - nr_FR1 = 0, - nr_FR2 -} nr_frequency_range_e; - typedef struct nr_bandentry_s { int16_t band; uint64_t ul_min; diff --git a/executables/nr-ru.c b/executables/nr-ru.c index 96c9e55e75..87c4683738 100644 --- a/executables/nr-ru.c +++ b/executables/nr-ru.c @@ -841,7 +841,7 @@ void tx_rf(RU_t *ru,int frame,int slot, uint64_t timestamp) { flags_burst = proc->first_tx == 1 ? TX_BURST_START : TX_BURST_MIDDLE; } - if (fp->freq_range == nr_FR2) + if (fp->freq_range == FR2) flags_gpio = get_gpio_flags(ru, slot); const int flags = flags_burst | (flags_gpio << 4); diff --git a/openair1/PHY/INIT/nr_parms.c b/openair1/PHY/INIT/nr_parms.c index dc516d7f24..c96754fe74 100644 --- a/openair1/PHY/INIT/nr_parms.c +++ b/openair1/PHY/INIT/nr_parms.c @@ -252,7 +252,7 @@ void nr_init_frame_parms(nfapi_nr_config_request_scf_t* cfg, NR_DL_FRAME_PARMS * fp->get_samples_slot_timestamp = &get_samples_slot_timestamp; fp->get_slot_from_timestamp = &get_slot_from_timestamp; fp->samples_per_frame = 10 * fp->samples_per_subframe; - fp->freq_range = (fp->dl_CarrierFreq < 6e9)? nr_FR1 : nr_FR2; + fp->freq_range = (fp->dl_CarrierFreq < 6e9)? FR1 : FR2; fp->Ncp = Ncp; @@ -341,12 +341,12 @@ int nr_init_frame_parms_ue(NR_DL_FRAME_PARMS *fp, fp->get_samples_per_slot = &get_samples_per_slot; fp->get_samples_slot_timestamp = &get_samples_slot_timestamp; fp->samples_per_frame = 10 * fp->samples_per_subframe; - fp->freq_range = (fp->dl_CarrierFreq < 6e9)? nr_FR1 : nr_FR2; + fp->freq_range = (fp->dl_CarrierFreq < 6e9)? FR1 : FR2; uint8_t sco = 0; - if (((fp->freq_range == nr_FR1) && (config->ssb_table.ssb_subcarrier_offset < 24)) || - ((fp->freq_range == nr_FR2) && (config->ssb_table.ssb_subcarrier_offset < 12))) { - if (fp->freq_range == nr_FR1) + if (((fp->freq_range == FR1) && (config->ssb_table.ssb_subcarrier_offset < 24)) || + ((fp->freq_range == FR2) && (config->ssb_table.ssb_subcarrier_offset < 12))) { + if (fp->freq_range == FR1) sco = config->ssb_table.ssb_subcarrier_offset>>config->ssb_config.scs_common; else sco = config->ssb_table.ssb_subcarrier_offset; @@ -379,7 +379,7 @@ void nr_init_frame_parms_ue_sa(NR_DL_FRAME_PARMS *frame_parms, uint64_t downlink frame_parms->numerology_index = mu; frame_parms->dl_CarrierFreq = downlink_frequency; frame_parms->ul_CarrierFreq = downlink_frequency + delta_duplex; - frame_parms->freq_range = (frame_parms->dl_CarrierFreq < 6e9)? nr_FR1 : nr_FR2; + frame_parms->freq_range = (frame_parms->dl_CarrierFreq < 6e9)? FR1 : FR2; frame_parms->N_RB_UL = frame_parms->N_RB_DL; frame_parms->nr_band = nr_band; diff --git a/openair1/PHY/NR_UE_ESTIMATION/nr_adjust_synch_ue.c b/openair1/PHY/NR_UE_ESTIMATION/nr_adjust_synch_ue.c index bcac18a60b..61c12d145a 100644 --- a/openair1/PHY/NR_UE_ESTIMATION/nr_adjust_synch_ue.c +++ b/openair1/PHY/NR_UE_ESTIMATION/nr_adjust_synch_ue.c @@ -71,7 +71,7 @@ int nr_adjust_synch_ue(NR_DL_FRAME_PARMS *frame_parms, int diff = ue->max_pos_avg >> 15; - if (frame_parms->freq_range==nr_FR2) + if (frame_parms->freq_range == FR2) sync_offset = 2; else sync_offset = 0; diff --git a/openair1/PHY/defs_nr_common.h b/openair1/PHY/defs_nr_common.h index 121ef0d3c1..3d0f2efa88 100644 --- a/openair1/PHY/defs_nr_common.h +++ b/openair1/PHY/defs_nr_common.h @@ -139,7 +139,7 @@ typedef uint32_t (*get_samples_slot_timestamp_t)(int slot, const NR_DL_FRAME_PAR struct NR_DL_FRAME_PARMS { /// frequency range - nr_frequency_range_e freq_range; + frequency_range_t freq_range; // /// Placeholder to replace overlapping fields below // nfapi_nr_rf_config_t rf_config; /// Placeholder to replace SSB overlapping fields below diff --git a/openair1/SCHED_NR/phy_procedures_nr_gNB.c b/openair1/SCHED_NR/phy_procedures_nr_gNB.c index 291e063aa4..886482bc5d 100644 --- a/openair1/SCHED_NR/phy_procedures_nr_gNB.c +++ b/openair1/SCHED_NR/phy_procedures_nr_gNB.c @@ -71,10 +71,10 @@ void nr_common_signal_procedures(PHY_VARS_gNB *gNB,int frame,int slot, nfapi_nr_ // for FR2 offsetToPointA is expressed in terms of 60 kHz SCS and k_SSB expressed in terms of the subcarrier spacing provided // by the higher-layer parameter subCarrierSpacingCommon const int scs = cfg->ssb_config.scs_common.value; - const int prb_offset = (fp->freq_range == nr_FR1) ? ssb_pdu.ssb_pdu_rel15.ssbOffsetPointA >> scs - : ssb_pdu.ssb_pdu_rel15.ssbOffsetPointA >> (scs - 2); + const int prb_offset = (fp->freq_range == FR1) ? ssb_pdu.ssb_pdu_rel15.ssbOffsetPointA >> scs + : ssb_pdu.ssb_pdu_rel15.ssbOffsetPointA >> (scs - 2); const int sc_offset = - (fp->freq_range == nr_FR1) ? ssb_pdu.ssb_pdu_rel15.SsbSubcarrierOffset >> scs : ssb_pdu.ssb_pdu_rel15.SsbSubcarrierOffset; + (fp->freq_range == FR1) ? ssb_pdu.ssb_pdu_rel15.SsbSubcarrierOffset >> scs : ssb_pdu.ssb_pdu_rel15.SsbSubcarrierOffset; fp->ssb_start_subcarrier = (12 * prb_offset + sc_offset); if (fp->print_ue_help_cmdline_log && get_softmodem_params()->sa) { @@ -134,7 +134,7 @@ void nr_common_signal_procedures(PHY_VARS_gNB *gNB,int frame,int slot, nfapi_nr_ #endif // Beam_id is currently used only for FR2 - if (fp->freq_range==nr_FR2){ + if (fp->freq_range == FR2){ LOG_D(PHY,"slot %d, ssb_index %d, beam %d\n",slot,ssb_index,cfg->ssb_table.ssb_beam_id_list[ssb_index].beam_id.value); for (int j=0;jsymbols_per_slot;j++) gNB->common_vars.beam_id[0][slot*fp->symbols_per_slot+j] = cfg->ssb_table.ssb_beam_id_list[ssb_index].beam_id.value; diff --git a/openair1/SIMULATION/NR_PHY/pbchsim.c b/openair1/SIMULATION/NR_PHY/pbchsim.c index acfa696b24..9ab5456613 100644 --- a/openair1/SIMULATION/NR_PHY/pbchsim.c +++ b/openair1/SIMULATION/NR_PHY/pbchsim.c @@ -487,7 +487,7 @@ int main(int argc, char **argv) frame_parms->N_RB_DL = N_RB_DL; frame_parms->Nid_cell = Nid_cell; frame_parms->ssb_type = nr_ssb_type_C; - frame_parms->freq_range = mu<2 ? nr_FR1 : nr_FR2; + frame_parms->freq_range = mu<2 ? FR1 : FR2; nr_phy_config_request_sim_pbchsim(gNB,N_RB_DL,N_RB_DL,mu,Nid_cell,SSB_positions); gNB->gNB_config.tdd_table.tdd_period.value = 6; @@ -620,8 +620,8 @@ int main(int argc, char **argv) for (i=0; iLmax; i++) { if((SSB_positions >> i) & 0x01) { - const int sc_offset = frame_parms->freq_range == nr_FR1 ? ssb_subcarrier_offset<freq_range == nr_FR1 ? gNB->gNB_config.ssb_table.ssb_offset_point_a.value<gNB_config.ssb_table.ssb_offset_point_a.value << (mu - 2); + const int sc_offset = frame_parms->freq_range == FR1 ? ssb_subcarrier_offset<freq_range == FR1 ? gNB->gNB_config.ssb_table.ssb_offset_point_a.value<gNB_config.ssb_table.ssb_offset_point_a.value << (mu - 2); msgDataTx.ssb[i].ssb_pdu.ssb_pdu_rel15.bchPayload = 0x55dd33; msgDataTx.ssb[i].ssb_pdu.ssb_pdu_rel15.SsbBlockIndex = i; msgDataTx.ssb[i].ssb_pdu.ssb_pdu_rel15.SsbSubcarrierOffset = sc_offset; diff --git a/openair1/SIMULATION/NR_PHY/prachsim.c b/openair1/SIMULATION/NR_PHY/prachsim.c index 71f92aebd3..9586cf2d64 100644 --- a/openair1/SIMULATION/NR_PHY/prachsim.c +++ b/openair1/SIMULATION/NR_PHY/prachsim.c @@ -422,7 +422,7 @@ int main(int argc, char **argv){ frame_parms->N_RB_UL = N_RB_UL; frame_parms->threequarter_fs = threequarter_fs; frame_parms->frame_type = TDD; - frame_parms->freq_range = (mu != 3 ? nr_FR1 : nr_FR2); + frame_parms->freq_range = (mu != 3 ? FR1 : FR2); frame_parms->numerology_index = mu; nr_phy_config_request_sim(gNB, N_RB_UL, N_RB_UL, mu, Nid_cell, SSB_positions); @@ -447,7 +447,7 @@ int main(int argc, char **argv){ frame_parms->Ncp, frame_parms->samples_per_subframe, frame_parms->frame_type == FDD ? "FDD" : "TDD", - frame_parms->freq_range == nr_FR1 ? "FR1" : "FR2"); + frame_parms->freq_range == FR1 ? "FR1" : "FR2"); ru->nr_frame_parms = frame_parms; ru->if_south = LOCAL_RF; From bff1f063503358f4bf0fd550dfa90eb7e7dc9de7 Mon Sep 17 00:00:00 2001 From: francescomani Date: Sat, 20 Apr 2024 16:59:51 +0200 Subject: [PATCH 13/40] removing MAC reset cause from reset_ra --- openair2/LAYER2/NR_MAC_UE/config_ue.c | 6 +++--- openair2/LAYER2/NR_MAC_UE/mac_proto.h | 2 +- openair2/LAYER2/NR_MAC_UE/main_ue_nr.c | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/openair2/LAYER2/NR_MAC_UE/config_ue.c b/openair2/LAYER2/NR_MAC_UE/config_ue.c index 0511573be9..ed26a71843 100644 --- a/openair2/LAYER2/NR_MAC_UE/config_ue.c +++ b/openair2/LAYER2/NR_MAC_UE/config_ue.c @@ -1426,7 +1426,7 @@ void nr_rrc_mac_config_req_reset(module_id_t module_id, NR_UE_MAC_INST_t *mac = get_mac_inst(module_id); switch (cause) { case GO_TO_IDLE: - reset_ra(mac, cause); + reset_ra(mac, true); release_mac_configuration(mac, cause); nr_ue_init_mac(mac); nr_ue_mac_default_configs(mac); @@ -1435,14 +1435,14 @@ void nr_rrc_mac_config_req_reset(module_id_t module_id, break; case DETACH: LOG_A(NR_MAC, "Received detach indication\n"); - reset_ra(mac, cause); + reset_ra(mac, true); reset_mac_inst(mac); nr_ue_reset_sync_state(mac); release_mac_configuration(mac, cause); mac->state = UE_DETACHING; break; case T300_EXPIRY: - reset_ra(mac, cause); + reset_ra(mac, false); reset_mac_inst(mac); mac->state = UE_SYNC; // still in sync but need to restart RA break; diff --git a/openair2/LAYER2/NR_MAC_UE/mac_proto.h b/openair2/LAYER2/NR_MAC_UE/mac_proto.h index b13c2a9865..bd289a8cfa 100644 --- a/openair2/LAYER2/NR_MAC_UE/mac_proto.h +++ b/openair2/LAYER2/NR_MAC_UE/mac_proto.h @@ -100,7 +100,7 @@ NR_UE_MAC_INST_t * nr_l2_init_ue(int nb_inst); NR_UE_MAC_INST_t *get_mac_inst(module_id_t module_id); void reset_mac_inst(NR_UE_MAC_INST_t *nr_mac); -void reset_ra(NR_UE_MAC_INST_t *nr_mac, NR_UE_MAC_reset_cause_t cause); +void reset_ra(NR_UE_MAC_INST_t *nr_mac, bool free_prach); void release_mac_configuration(NR_UE_MAC_INST_t *mac, NR_UE_MAC_reset_cause_t cause); diff --git a/openair2/LAYER2/NR_MAC_UE/main_ue_nr.c b/openair2/LAYER2/NR_MAC_UE/main_ue_nr.c index 8d13ddfb68..79086da5a9 100644 --- a/openair2/LAYER2/NR_MAC_UE/main_ue_nr.c +++ b/openair2/LAYER2/NR_MAC_UE/main_ue_nr.c @@ -299,14 +299,14 @@ void free_rach_structures(NR_UE_MAC_INST_t *nr_mac, int bwp_id) free(nr_mac->ssb_list[bwp_id].tx_ssb); } -void reset_ra(NR_UE_MAC_INST_t *nr_mac, NR_UE_MAC_reset_cause_t cause) +void reset_ra(NR_UE_MAC_INST_t *nr_mac, bool free_prach) { RA_config_t *ra = &nr_mac->ra; if(ra->rach_ConfigDedicated) asn1cFreeStruc(asn_DEF_NR_RACH_ConfigDedicated, ra->rach_ConfigDedicated); memset(ra, 0, sizeof(RA_config_t)); - if (cause == T300_EXPIRY) + if (!free_prach) return; for (int i = 0; i < MAX_NUM_BWP_UE; i++) From 9992a19a6f1c6712b7cdc85ad8be9dde6a4374cf Mon Sep 17 00:00:00 2001 From: francescomani Date: Thu, 11 Apr 2024 08:37:03 +0200 Subject: [PATCH 14/40] release SRS/PUCCH as described in 331 section 5.3.12 --- openair2/LAYER2/NR_MAC_UE/config_ue.c | 41 +++++++++++++++++++++++++++ openair2/LAYER2/NR_MAC_UE/mac_proto.h | 2 +- 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/openair2/LAYER2/NR_MAC_UE/config_ue.c b/openair2/LAYER2/NR_MAC_UE/config_ue.c index ed26a71843..b6abf0ca51 100644 --- a/openair2/LAYER2/NR_MAC_UE/config_ue.c +++ b/openair2/LAYER2/NR_MAC_UE/config_ue.c @@ -2045,6 +2045,47 @@ static void configure_servingcell_info(NR_UE_ServingCell_Info_t *sc_info, NR_Ser } } +/// This function implements 38.331 Section 5.3.12: UE actions upon PUCCH/SRS release request +void release_PUCCH_SRS(NR_UE_MAC_INST_t *mac) +{ + // release PUCCH-CSI-Resources configured in CSI-ReportConfig + NR_UE_ServingCell_Info_t *sc_info = &mac->sc_info; + NR_CSI_MeasConfig_t *meas_config = sc_info->csi_MeasConfig; + if (meas_config && meas_config->csi_ReportConfigToAddModList) { + for (int i = 0; i < meas_config->csi_ReportConfigToAddModList->list.count; i++) { + struct NR_CSI_ReportConfig__reportConfigType *type = &meas_config->csi_ReportConfigToAddModList->list.array[i]->reportConfigType; + switch (type->present) { + case NR_CSI_ReportConfig__reportConfigType_PR_periodic : + for (int j = type->choice.periodic->pucch_CSI_ResourceList.list.count; j > 0 ; j--) + asn_sequence_del(&type->choice.periodic->pucch_CSI_ResourceList.list, j - 1, 1); + break; + case NR_CSI_ReportConfig__reportConfigType_PR_semiPersistentOnPUCCH : + for (int j = type->choice.semiPersistentOnPUCCH->pucch_CSI_ResourceList.list.count; j > 0 ; j--) + asn_sequence_del(&type->choice.semiPersistentOnPUCCH->pucch_CSI_ResourceList.list, j - 1, 1); + break; + case NR_CSI_ReportConfig__reportConfigType_PR_semiPersistentOnPUSCH : + case NR_CSI_ReportConfig__reportConfigType_PR_aperiodic : + // no PUCCH config to release + break; + default : + AssertFatal(false, "Invalid CSI report type\n"); + } + } + } + + for (int bwp = 0; bwp < mac->ul_BWPs.count; bwp++) { + // release SchedulingRequestResourceConfig instances configured in PUCCH-Config + NR_PUCCH_Config_t *pucch_Config = mac->ul_BWPs.array[bwp]->pucch_Config; + for (int j = pucch_Config->schedulingRequestResourceToAddModList->list.count; j > 0 ; j--) + asn_sequence_del(&pucch_Config->schedulingRequestResourceToAddModList->list, j - 1, 1); + // release SRS-Resource instances configured in SRS-Config + // TODO not clear if only SRS-Resources or also the ResourceSet should be released + NR_SRS_Config_t *srs_Config = mac->ul_BWPs.array[bwp]->srs_Config; + for (int j = srs_Config->srs_ResourceToAddModList->list.count; j > 0 ; j--) + asn_sequence_del(&srs_Config->srs_ResourceToAddModList->list, j - 1, 1); + } +} + void release_dl_BWP(NR_UE_MAC_INST_t *mac, int index) { NR_UE_DL_BWP_t *bwp = mac->dl_BWPs.array[index]; diff --git a/openair2/LAYER2/NR_MAC_UE/mac_proto.h b/openair2/LAYER2/NR_MAC_UE/mac_proto.h index bd289a8cfa..f263670e03 100644 --- a/openair2/LAYER2/NR_MAC_UE/mac_proto.h +++ b/openair2/LAYER2/NR_MAC_UE/mac_proto.h @@ -293,7 +293,7 @@ void nr_get_prach_resources(NR_UE_MAC_INST_t *mac, void prepare_msg4_feedback(NR_UE_MAC_INST_t *mac, int pid, int ack_nack); void configure_initial_pucch(PUCCH_sched_t *pucch, int res_ind); - +void release_PUCCH_SRS(NR_UE_MAC_INST_t *mac); void nr_ue_reset_sync_state(NR_UE_MAC_INST_t *mac); void nr_ue_send_synch_request(NR_UE_MAC_INST_t *mac, module_id_t module_id, int cc_id, int cell_id); From 615284c5c8b8169d9f2cf9e0f26127284db96985 Mon Sep 17 00:00:00 2001 From: luis_pereira87 Date: Thu, 25 Apr 2024 13:06:41 +0100 Subject: [PATCH 15/40] Add support for USRP X410 to run with 200 MHz bandwidth in FR2 at 120 kHz SCS --- openair1/PHY/NR_TRANSPORT/nr_prach.c | 6 ++++++ openair1/PHY/NR_UE_TRANSPORT/nr_prach.c | 6 ++++++ radio/USRP/usrp_lib.cpp | 16 ++++++++++++---- 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/openair1/PHY/NR_TRANSPORT/nr_prach.c b/openair1/PHY/NR_TRANSPORT/nr_prach.c index 95c2c8040b..d103505357 100644 --- a/openair1/PHY/NR_TRANSPORT/nr_prach.c +++ b/openair1/PHY/NR_TRANSPORT/nr_prach.c @@ -350,6 +350,12 @@ void rx_nr_prach_ru(RU_t *ru, dftlen = dftlen*6; break; + case 245760: + // 200 MHz @ 245.76 Ms/s + Ncp <<= 3; + dftlen <<= 3; + break; + default: AssertFatal(1==0,"sample rate %f MHz not supported for numerology %d\n", fp->samples_per_subframe / 1000.0, mu); } diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_prach.c b/openair1/PHY/NR_UE_TRANSPORT/nr_prach.c index 3ba71ed3ea..ea24f0a45c 100644 --- a/openair1/PHY/NR_UE_TRANSPORT/nr_prach.c +++ b/openair1/PHY/NR_UE_TRANSPORT/nr_prach.c @@ -366,6 +366,12 @@ int32_t generate_nr_prach(PHY_VARS_NR_UE *ue, uint8_t gNB_id, int frame, uint8_t dftlen = dftlen*6; break; + case 245760: + // 200 MHz @ 245.76 Ms/s + Ncp <<= 3; + dftlen <<= 3; + break; + default: AssertFatal(1==0,"sample rate %f MHz not supported for numerology %d\n", fp->samples_per_subframe / 1000.0, mu); } diff --git a/radio/USRP/usrp_lib.cpp b/radio/USRP/usrp_lib.cpp index 4218ae7748..ad0404f13d 100644 --- a/radio/USRP/usrp_lib.cpp +++ b/radio/USRP/usrp_lib.cpp @@ -1220,12 +1220,20 @@ extern "C" { LOG_I(HW,"%s() sample_rate:%u\n", __FUNCTION__, (int)openair0_cfg[0].sample_rate); switch ((int)openair0_cfg[0].sample_rate) { + case 245760000: + // from usrp_time_offset + // openair0_cfg[0].samples_per_packet = 2048; + openair0_cfg[0].tx_sample_advance = 15; // to be checked + openair0_cfg[0].tx_bw = 200e6; + openair0_cfg[0].rx_bw = 200e6; + break; + case 184320000: // from usrp_time_offset - //openair0_cfg[0].samples_per_packet = 2048; - openair0_cfg[0].tx_sample_advance = 15; //to be checked - openair0_cfg[0].tx_bw = 100e6; - openair0_cfg[0].rx_bw = 100e6; + // openair0_cfg[0].samples_per_packet = 2048; + openair0_cfg[0].tx_sample_advance = 15; // to be checked + openair0_cfg[0].tx_bw = 100e6; + openair0_cfg[0].rx_bw = 100e6; break; case 122880000: From a07461813d319bf6dd2a6f887eddc59fc32826fc Mon Sep 17 00:00:00 2001 From: Laurent THOMAS Date: Wed, 3 Apr 2024 12:14:49 +0200 Subject: [PATCH 16/40] NR UE: Implement DCI format 11 type0 for contiguous allocations --- common/utils/nr/nr_common.h | 11 ++- openair1/SCHED_NR_UE/phy_procedures_nr_ue.c | 73 ++++++++++--------- openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c | 6 +- openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c | 18 +++++ 4 files changed, 71 insertions(+), 37 deletions(-) diff --git a/common/utils/nr/nr_common.h b/common/utils/nr/nr_common.h index fb3abd1247..234fed1ce3 100644 --- a/common/utils/nr/nr_common.h +++ b/common/utils/nr/nr_common.h @@ -176,7 +176,16 @@ static inline int get_num_dmrs(uint16_t dmrs_mask ) return(num_dmrs); } -static __attribute__((always_inline)) inline int count_bits_set(uint64_t v) +static inline int count_bits(uint8_t *arr, int sz) +{ + AssertFatal(sz % sizeof(int) == 0, "to implement if needed\n"); + int ret = 0; + for (uint *ptr = (uint *)arr; (uint8_t *)ptr < arr + sz; ptr++) + ret += __builtin_popcount(*ptr); + return ret; +} + +static __attribute__((always_inline)) inline int count_bits64(uint64_t v) { return __builtin_popcountll(v); } diff --git a/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c b/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c index da734cc84d..eb84c1e470 100644 --- a/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c +++ b/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c @@ -494,19 +494,25 @@ static int nr_ue_pdsch_procedures(PHY_VARS_NR_UE *ue, // We handle only one CW now if (!(NR_MAX_NB_LAYERS>4)) { NR_UE_DLSCH_t *dlsch0 = &dlsch[0]; - int harq_pid = dlsch0->dlsch_config.harq_process_nbr; + fapi_nr_dl_config_dlsch_pdu_rel15_t *dlschCfg = &dlsch0->dlsch_config; + int harq_pid = dlschCfg->harq_process_nbr; + // dlsch0_harq contains the previous transmissions data for this harq pid NR_DL_UE_HARQ_t *dlsch0_harq = &ue->dl_harq_processes[0][harq_pid]; - uint16_t BWPStart = dlsch0->dlsch_config.BWPStart; - uint16_t pdsch_start_rb = dlsch0->dlsch_config.start_rb; - uint16_t pdsch_nb_rb = dlsch0->dlsch_config.number_rbs; - uint16_t s0 = dlsch0->dlsch_config.start_symbol; - uint16_t s1 = dlsch0->dlsch_config.number_symbols; - AssertFatal(dlsch0->dlsch_config.resource_alloc == 1, - "DLSCH resource allocation type0 not supported at PHY\n"); - - LOG_D(PHY,"[UE %d] nr_slot_rx %d, harq_pid %d (%d), BWP start %d, rb_start %d, nb_rb %d, symbol_start %d, nb_symbols %d, DMRS mask %x, Nl %d\n", - ue->Mod_id,nr_slot_rx,harq_pid,dlsch0_harq->status,BWPStart,pdsch_start_rb,pdsch_nb_rb,s0,s1,dlsch0->dlsch_config.dlDmrsSymbPos, dlsch0->Nl); + LOG_D(PHY, + "[UE %d] nr_slot_rx %d, harq_pid %d (%d), BWP start %d, rb_start %d, nb_rb %d, symbol_start %d, nb_symbols %d, DMRS mask " + "%x, Nl %d\n", + ue->Mod_id, + nr_slot_rx, + harq_pid, + dlsch0_harq->status, + dlschCfg->BWPStart, + dlschCfg->start_rb, + dlschCfg->number_rbs, + dlschCfg->start_symbol, + dlschCfg->number_symbols, + dlschCfg->dlDmrsSymbPos, + dlsch0->Nl); const uint32_t pdsch_est_size = ((ue->frame_parms.symbols_per_slot * ue->frame_parms.ofdm_symbol_size + 15) / 16) * 16; __attribute__((aligned(32))) int32_t pdsch_dl_ch_estimates[ue->frame_parms.nb_antennas_rx * dlsch0->Nl][pdsch_est_size]; @@ -522,25 +528,26 @@ static int nr_ue_pdsch_procedures(PHY_VARS_NR_UE *ue, __attribute__((aligned(32))) int32_t rxdataF_comp[dlsch[0].Nl][ue->frame_parms.nb_antennas_rx][rx_size_symbol * NR_SYMBOLS_PER_SLOT]; memset(rxdataF_comp, 0, sizeof(rxdataF_comp)); - for (int m = s0; m < (s0 +s1); m++) { - if (dlsch0->dlsch_config.dlDmrsSymbPos & (1 << m)) { + for (int m = dlschCfg->start_symbol; m < (dlschCfg->start_symbol + dlschCfg->number_symbols); m++) { + if (dlschCfg->dlDmrsSymbPos & (1 << m)) { for (int nl = 0; nl < dlsch0->Nl; nl++) { //for MIMO Config: it shall loop over no_layers LOG_D(PHY,"PDSCH Channel estimation layer %d, slot %d, symbol %d\n", nl, nr_slot_rx, m); nr_pdsch_channel_estimation(ue, proc, nl, - get_dmrs_port(nl,dlsch0->dlsch_config.dmrs_ports), + get_dmrs_port(nl, dlschCfg->dmrs_ports), m, - dlsch0->dlsch_config.nscid, - dlsch0->dlsch_config.dlDmrsScramblingId, - BWPStart, - dlsch0->dlsch_config.dmrsConfigType, - dlsch0->dlsch_config.rb_offset, - ue->frame_parms.first_carrier_offset+(BWPStart + pdsch_start_rb)*12, - pdsch_nb_rb, + dlschCfg->nscid, + dlschCfg->dlDmrsScramblingId, + dlschCfg->BWPStart, + dlschCfg->dmrsConfigType, + dlschCfg->rb_offset, + ue->frame_parms.first_carrier_offset + (dlschCfg->BWPStart + dlschCfg->start_rb) * 12, + dlschCfg->number_rbs, pdsch_est_size, pdsch_dl_ch_estimates, - ue->frame_parms.samples_per_slot_wCP, rxdataF); + ue->frame_parms.samples_per_slot_wCP, + rxdataF); #if 0 ///LOG_M: the channel estimation int nr_frame_rx = proc->frame_rx; @@ -558,22 +565,22 @@ static int nr_ue_pdsch_procedures(PHY_VARS_NR_UE *ue, if (ue->chest_time == 1) { // averaging time domain channel estimates nr_chest_time_domain_avg(&ue->frame_parms, - (int32_t **) pdsch_dl_ch_estimates, - dlsch0->dlsch_config.number_symbols, - dlsch0->dlsch_config.start_symbol, - dlsch0->dlsch_config.dlDmrsSymbPos, - pdsch_nb_rb); + (int32_t **)pdsch_dl_ch_estimates, + dlschCfg->number_symbols, + dlschCfg->start_symbol, + dlschCfg->dlDmrsSymbPos, + dlschCfg->number_rbs); } - uint16_t first_symbol_with_data = s0; + uint16_t first_symbol_with_data = dlschCfg->start_symbol; uint32_t dmrs_data_re; - if (dlsch0->dlsch_config.dmrsConfigType == NFAPI_NR_DMRS_TYPE1) - dmrs_data_re = 12 - 6 * dlsch0->dlsch_config.n_dmrs_cdm_groups; + if (dlschCfg->dmrsConfigType == NFAPI_NR_DMRS_TYPE1) + dmrs_data_re = 12 - 6 * dlschCfg->n_dmrs_cdm_groups; else - dmrs_data_re = 12 - 4 * dlsch0->dlsch_config.n_dmrs_cdm_groups; + dmrs_data_re = 12 - 4 * dlschCfg->n_dmrs_cdm_groups; - while ((dmrs_data_re == 0) && (dlsch0->dlsch_config.dlDmrsSymbPos & (1 << first_symbol_with_data))) { + while ((dmrs_data_re == 0) && (dlschCfg->dlDmrsSymbPos & (1 << first_symbol_with_data))) { first_symbol_with_data++; } @@ -582,7 +589,7 @@ static int nr_ue_pdsch_procedures(PHY_VARS_NR_UE *ue, int32_t log2_maxh = 0; start_meas(&ue->rx_pdsch_stats); - for (int m = s0; m < (s1 + s0); m++) { + for (int m = dlschCfg->start_symbol; m < (dlschCfg->number_symbols + dlschCfg->start_symbol); m++) { bool first_symbol_flag = false; if (m == first_symbol_with_data) first_symbol_flag = true; diff --git a/openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c b/openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c index c5f3daf88f..fba1a18d72 100644 --- a/openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c +++ b/openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c @@ -1694,7 +1694,7 @@ int get_nr_prach_occasion_info_from_index(uint8_t index, if (pointa > 2016666) { //FR2 x = table_6_3_3_2_4_prachConfig_Index[index][2]; s_map = table_6_3_3_2_4_prachConfig_Index[index][5]; - *N_RA_sfn += count_bits_set(s_map); + *N_RA_sfn += count_bits64(s_map); *N_RA_slot = table_6_3_3_2_4_prachConfig_Index[index][7]; // Number of RACH slots within a subframe *max_association_period = 160/(x * 10); if (start_symbol != NULL && N_t_slot != NULL && N_dur != NULL && format != NULL){ @@ -1721,7 +1721,7 @@ int get_nr_prach_occasion_info_from_index(uint8_t index, if (unpaired) { x = table_6_3_3_2_3_prachConfig_Index[index][2]; s_map = table_6_3_3_2_3_prachConfig_Index[index][4]; - *N_RA_sfn += count_bits_set(s_map); + *N_RA_sfn += count_bits64(s_map); *N_RA_slot = table_6_3_3_2_3_prachConfig_Index[index][6]; // Number of RACH slots within a subframe *max_association_period = 160/(x * 10); if (start_symbol != NULL && N_t_slot != NULL && N_dur != NULL && format != NULL){ @@ -1746,7 +1746,7 @@ int get_nr_prach_occasion_info_from_index(uint8_t index, else { // FDD x = table_6_3_3_2_2_prachConfig_Index[index][2]; s_map = table_6_3_3_2_2_prachConfig_Index[index][4]; - *N_RA_sfn += count_bits_set(s_map); + *N_RA_sfn += count_bits64(s_map); *N_RA_slot = table_6_3_3_2_2_prachConfig_Index[index][6]; if (start_symbol != NULL && N_t_slot != NULL && N_dur != NULL && format != NULL){ *start_symbol = table_6_3_3_2_2_prachConfig_Index[index][5]; diff --git a/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c b/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c index 5f0bc51e9a..b17e0797e2 100644 --- a/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c +++ b/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c @@ -293,6 +293,7 @@ int8_t nr_ue_process_dci_freq_dom_resource_assignment(nfapi_nr_ue_pusch_pdu_t *p pdsch_Config->resourceAllocation == NR_PDSCH_Config__resourceAllocation_resourceAllocationType0) { // TS 38.214 subclause 5.1.2.2.1 Downlink resource allocation type 0 dlsch_config_pdu->resource_alloc = 0; + memset(dlsch_config_pdu->rb_bitmap, 0, sizeof(dlsch_config_pdu->rb_bitmap)); int P = getRBGSize(n_RB_DLBWP, pdsch_Config->rbg_Size); int n_RBG = frequency_domain_assignment.nbits; int index = 0; @@ -312,6 +313,23 @@ int8_t nr_ue_process_dci_freq_dom_resource_assignment(nfapi_nr_ue_pusch_pdu_t *p dlsch_config_pdu->rb_bitmap[j / 8] |= bit_rbg << (j % 8); index += size_RBG; } + dlsch_config_pdu->number_rbs = count_bits(dlsch_config_pdu->rb_bitmap, sizeofArray(dlsch_config_pdu->rb_bitmap)); + // Temporary code to process type0 as type1 when the RB allocation is contiguous + int state = 0; + for (int i = 0; i < sizeof(dlsch_config_pdu->rb_bitmap) * 8; i++) { + int allocated = dlsch_config_pdu->rb_bitmap[i / 8] & (1 << (i % 8)); + if (allocated) { + if (state == 0) { + dlsch_config_pdu->start_rb = i; + state = 1; + } else + AssertFatal(state == 1, "hole, not implemented\n"); + } else { + if (state == 1) { + state = 2; + } + } + } } else if (pdsch_Config && pdsch_Config->resourceAllocation == NR_PDSCH_Config__resourceAllocation_dynamicSwitch) From d67383bd42f712e8ac596b614d04729b7ac16691 Mon Sep 17 00:00:00 2001 From: Laurent THOMAS Date: Fri, 12 Apr 2024 14:15:25 +0200 Subject: [PATCH 17/40] segv on missing if() clause --- openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c b/openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c index 8c9062d8ec..415bd79b45 100644 --- a/openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c +++ b/openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c @@ -689,7 +689,7 @@ int nr_config_pusch_pdu(NR_UE_MAC_INST_t *mac, pusch_config_pdu->dfts_ofdm.low_papr_group_number); } else { - if (pusch_config_pdu->scid == 0 && NR_DMRS_ulconfig && + if (pusch_config_pdu->scid == 0 && NR_DMRS_ulconfig && NR_DMRS_ulconfig->transformPrecodingDisabled && NR_DMRS_ulconfig->transformPrecodingDisabled->scramblingID0) pusch_config_pdu->ul_dmrs_scrambling_id = *NR_DMRS_ulconfig->transformPrecodingDisabled->scramblingID0; if (pusch_config_pdu->scid == 1 && NR_DMRS_ulconfig && From 309d5cacc9f899e2a8ee30c2b890579c40855fa7 Mon Sep 17 00:00:00 2001 From: Laurent THOMAS Date: Wed, 17 Apr 2024 09:32:36 +0200 Subject: [PATCH 18/40] remove sleep() in UE NAS that have no good purpose --- openair3/NAS/NR_UE/nr_nas_msg_sim.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/openair3/NAS/NR_UE/nr_nas_msg_sim.c b/openair3/NAS/NR_UE/nr_nas_msg_sim.c index 57c3e1df58..af46cbf6af 100644 --- a/openair3/NAS/NR_UE/nr_nas_msg_sim.c +++ b/openair3/NAS/NR_UE/nr_nas_msg_sim.c @@ -642,8 +642,6 @@ static void decodeRegistrationAccept(const uint8_t *buf, int len, nr_ue_nas_t *n static void generateRegistrationComplete(nr_ue_nas_t *nas, as_nas_info_t *initialNasMsg, SORTransparentContainer *sortransparentcontainer) { - //wait send RRCReconfigurationComplete and InitialContextSetupResponse - sleep(1); int length = 0; int size = 0; fgs_nas_message_t nas_msg; @@ -781,8 +779,6 @@ static void generateDeregistrationRequest(nr_ue_nas_t *nas, as_nas_info_t *initi static void generatePduSessionEstablishRequest(nr_ue_nas_t *nas, as_nas_info_t *initialNasMsg, nas_pdu_session_req_t *pdu_req) { - //wait send RegistrationComplete - usleep(100*150); int size = 0; fgs_nas_message_t nas_msg={0}; From 18951f04e6883ec999c927d2f61c481a2075b28f Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Fri, 26 Apr 2024 10:59:49 +0200 Subject: [PATCH 19/40] Update assertfatal message --- openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c b/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c index b17e0797e2..fbb0a77d46 100644 --- a/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c +++ b/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c @@ -323,7 +323,7 @@ int8_t nr_ue_process_dci_freq_dom_resource_assignment(nfapi_nr_ue_pusch_pdu_t *p dlsch_config_pdu->start_rb = i; state = 1; } else - AssertFatal(state == 1, "hole, not implemented\n"); + AssertFatal(state == 1, "non-contiguous RB allocation in RB allocation type 0 not implemented"); } else { if (state == 1) { state = 2; From 09bd7b5b399a9578688bfdfc190c1e769fc7f83d Mon Sep 17 00:00:00 2001 From: Jaroslava Fiedlerova Date: Fri, 12 Apr 2024 15:34:19 +0200 Subject: [PATCH 20/40] Change PLMN and frequency in AW2S pipeline - Remove unused AmariUE config file, replace by new one - for PLMN 00102 - Change frequency of AW2S pipeline - Move center frequency by 40 MHz to avoid interferency with other setups in the lab. Set center frequency to ~ 3450 MHz. --- ...20897-2x2.cfg => aw2s-multi-00102-2x2.cfg} | 36 +-- ci-scripts/as_ue/aw2s-multi-20897.cfg | 280 ------------------ ci-scripts/ci_infra.yaml | 2 +- .../gnb.sa.band78.51prb.aw2s.ddsuu.conf | 6 +- 4 files changed, 22 insertions(+), 302 deletions(-) rename ci-scripts/as_ue/{aw2s-multi-20897-2x2.cfg => aw2s-multi-00102-2x2.cfg} (92%) delete mode 100644 ci-scripts/as_ue/aw2s-multi-20897.cfg diff --git a/ci-scripts/as_ue/aw2s-multi-20897-2x2.cfg b/ci-scripts/as_ue/aw2s-multi-00102-2x2.cfg similarity index 92% rename from ci-scripts/as_ue/aw2s-multi-20897-2x2.cfg rename to ci-scripts/as_ue/aw2s-multi-00102-2x2.cfg index b9707b801e..04d2bb9ffd 100644 --- a/ci-scripts/as_ue/aw2s-multi-20897-2x2.cfg +++ b/ci-scripts/as_ue/aw2s-multi-00102-2x2.cfg @@ -25,8 +25,8 @@ allow dynamic UE creation from remote API */ rf_port: 0, bandwidth: 20, band: 78, - dl_nr_arfcn:627360, - ssb_nr_arfcn:627360, + dl_nr_arfcn:630048, + ssb_nr_arfcn:630048, subcarrier_spacing: 30, n_antenna_dl: N_ANTENNA_DL, n_antenna_ul: N_ANTENNA_UL, @@ -39,7 +39,7 @@ allow dynamic UE creation from remote API */ ue_list: [ { "ue_id" : 1, - "imsi": "208970000000111", + "imsi": "001020000000001", "K": "fec86ba6eb707ed08905757b1bb44b8f", "sim_algo":"milenage", "op": "1006020f0a478bf6b699f15c062e42b3", @@ -54,7 +54,7 @@ allow dynamic UE creation from remote API */ }, { "ue_id" : 2, - "imsi": "208970000000112", + "imsi": "001020000000002", "K": "fec86ba6eb707ed08905757b1bb44b8f", "sim_algo":"milenage", "op": "1006020f0a478bf6b699f15c062e42b3", @@ -69,7 +69,7 @@ allow dynamic UE creation from remote API */ }, { "ue_id" : 3, - "imsi": "208970000000113", + "imsi": "001020000000003", "K": "fec86ba6eb707ed08905757b1bb44b8f", "sim_algo":"milenage", "op": "1006020f0a478bf6b699f15c062e42b3", @@ -84,7 +84,7 @@ allow dynamic UE creation from remote API */ }, { "ue_id" : 4, - "imsi": "208970000000114", + "imsi": "001020000000004", "K": "fec86ba6eb707ed08905757b1bb44b8f", "sim_algo":"milenage", "op": "1006020f0a478bf6b699f15c062e42b3", @@ -99,7 +99,7 @@ allow dynamic UE creation from remote API */ }, { "ue_id" : 5, - "imsi": "208970000000115", + "imsi": "001020000000005", "K": "fec86ba6eb707ed08905757b1bb44b8f", "sim_algo":"milenage", "op": "1006020f0a478bf6b699f15c062e42b3", @@ -114,7 +114,7 @@ allow dynamic UE creation from remote API */ }, { "ue_id" : 6, - "imsi": "208970000000116", + "imsi": "001020000000006", "K": "fec86ba6eb707ed08905757b1bb44b8f", "sim_algo":"milenage", "op": "1006020f0a478bf6b699f15c062e42b3", @@ -129,7 +129,7 @@ allow dynamic UE creation from remote API */ }, { "ue_id" : 7, - "imsi": "208970000000100", + "imsi": "001020000000007", "K": "fec86ba6eb707ed08905757b1bb44b8f", "sim_algo":"milenage", "op": "1006020f0a478bf6b699f15c062e42b3", @@ -144,7 +144,7 @@ allow dynamic UE creation from remote API */ }, { "ue_id" : 8, - "imsi": "208970000000102", + "imsi": "001020000000008", "K": "fec86ba6eb707ed08905757b1bb44b8f", "sim_algo":"milenage", "op": "1006020f0a478bf6b699f15c062e42b3", @@ -159,7 +159,7 @@ allow dynamic UE creation from remote API */ }, { "ue_id" : 9, - "imsi": "208970000000103", + "imsi": "001020000000009", "K": "fec86ba6eb707ed08905757b1bb44b8f", "sim_algo":"milenage", "op": "1006020f0a478bf6b699f15c062e42b3", @@ -174,7 +174,7 @@ allow dynamic UE creation from remote API */ }, { "ue_id" : 10, - "imsi": "208970000000104", + "imsi": "001020000000010", "K": "fec86ba6eb707ed08905757b1bb44b8f", "sim_algo":"milenage", "op": "1006020f0a478bf6b699f15c062e42b3", @@ -189,7 +189,7 @@ allow dynamic UE creation from remote API */ }, { "ue_id" : 11, - "imsi": "208970000000110", + "imsi": "001020000000011", "K": "fec86ba6eb707ed08905757b1bb44b8f", "sim_algo":"milenage", "op": "1006020f0a478bf6b699f15c062e42b3", @@ -204,7 +204,7 @@ allow dynamic UE creation from remote API */ }, { "ue_id" : 12, - "imsi": "208970000000105", + "imsi": "001020000000012", "K": "fec86ba6eb707ed08905757b1bb44b8f", "sim_algo":"milenage", "op": "1006020f0a478bf6b699f15c062e42b3", @@ -219,7 +219,7 @@ allow dynamic UE creation from remote API */ }, { "ue_id" : 13, - "imsi": "208970000000106", + "imsi": "001020000000013", "K": "fec86ba6eb707ed08905757b1bb44b8f", "sim_algo":"milenage", "op": "1006020f0a478bf6b699f15c062e42b3", @@ -234,7 +234,7 @@ allow dynamic UE creation from remote API */ }, { "ue_id" : 14, - "imsi": "208970000000107", + "imsi": "001020000000014", "K": "fec86ba6eb707ed08905757b1bb44b8f", "sim_algo":"milenage", "op": "1006020f0a478bf6b699f15c062e42b3", @@ -249,7 +249,7 @@ allow dynamic UE creation from remote API */ }, { "ue_id" : 15, - "imsi": "208970000000108", + "imsi": "001020000000015", "K": "fec86ba6eb707ed08905757b1bb44b8f", "sim_algo":"milenage", "op": "1006020f0a478bf6b699f15c062e42b3", @@ -264,7 +264,7 @@ allow dynamic UE creation from remote API */ }, { "ue_id" : 16, - "imsi": "208970000000109", + "imsi": "001020000000016", "K": "fec86ba6eb707ed08905757b1bb44b8f", "sim_algo":"milenage", "op": "1006020f0a478bf6b699f15c062e42b3", diff --git a/ci-scripts/as_ue/aw2s-multi-20897.cfg b/ci-scripts/as_ue/aw2s-multi-20897.cfg deleted file mode 100644 index f4b2371cb8..0000000000 --- a/ci-scripts/as_ue/aw2s-multi-20897.cfg +++ /dev/null @@ -1,280 +0,0 @@ -/* UE simulator configuration file version 2021-06-17 - * LTE / 5G Non StandAlone - * Copyright (C) 2019-2021 Amarisoft - */ -{ -#define N_ANTENNA_DL 2 -#define TDD 1 - -log_options: "all.level=warn,all.max_size=0,nas.level=debug,nas.max_size=1,rrc.level=debug,rrc.max_size=1", -log_filename: "/tmp/ue.log", - -/* Enable remote API and Web interface */ -com_addr: "0.0.0.0:9002", - -include "rf_driver/1chan.cfg", - -/* If true, allow the simulation of several UEs at the same time and -allow dynamic UE creation from remote API */ - - cell_groups: [{ - group_type: "nr", - multi_ue: true, - cells: [{ - rf_port: 0, - bandwidth: 20, - band: 78, - dl_nr_arfcn:627360, - ssb_nr_arfcn:627360, - subcarrier_spacing: 30, - n_antenna_dl: N_ANTENNA_DL, - n_antenna_ul: 1, - rx_to_tx_latency:2, - }], - }], - - /* UE capabilities */ - /* USIM data */ - ue_list: [ - { - "ue_id" : 1, - "imsi": "208970000000111", - "K": "fec86ba6eb707ed08905757b1bb44b8f", - "sim_algo":"milenage", - "op": "1006020f0a478bf6b699f15c062e42b3", - - as_release: 15, - ue_category: "nr", - apn:"oai", - attach_pdn_type:"ipv4", - default_nssai: [ { sst: 1, }, ], - default_pdu_session_snssai: { sst: 1, }, - tun_setup_script: "ue-ifup", - }, - { - "ue_id" : 2, - "imsi": "208970000000112", - "K": "fec86ba6eb707ed08905757b1bb44b8f", - "sim_algo":"milenage", - "op": "1006020f0a478bf6b699f15c062e42b3", - - as_release: 15, - ue_category: "nr", - apn:"oai", - attach_pdn_type:"ipv4", - default_nssai: [ { sst: 1, }, ], - default_pdu_session_snssai: { sst: 1, }, - tun_setup_script: "ue-ifup", - }, - { - "ue_id" : 3, - "imsi": "208970000000113", - "K": "fec86ba6eb707ed08905757b1bb44b8f", - "sim_algo":"milenage", - "op": "1006020f0a478bf6b699f15c062e42b3", - - as_release: 15, - ue_category: "nr", - apn:"oai", - attach_pdn_type:"ipv4", - default_nssai: [ { sst: 1, }, ], - default_pdu_session_snssai: { sst: 1, }, - tun_setup_script: "ue-ifup", - }, - { - "ue_id" : 4, - "imsi": "208970000000114", - "K": "fec86ba6eb707ed08905757b1bb44b8f", - "sim_algo":"milenage", - "op": "1006020f0a478bf6b699f15c062e42b3", - - as_release: 15, - ue_category: "nr", - apn:"oai", - attach_pdn_type:"ipv4", - default_nssai: [ { sst: 1, }, ], - default_pdu_session_snssai: { sst: 1, }, - tun_setup_script: "ue-ifup", - }, - { - "ue_id" : 5, - "imsi": "208970000000115", - "K": "fec86ba6eb707ed08905757b1bb44b8f", - "sim_algo":"milenage", - "op": "1006020f0a478bf6b699f15c062e42b3", - - as_release: 15, - ue_category: "nr", - apn:"oai", - attach_pdn_type:"ipv4", - default_nssai: [ { sst: 1, }, ], - default_pdu_session_snssai: { sst: 1, }, - tun_setup_script: "ue-ifup", - }, - { - "ue_id" : 6, - "imsi": "208970000000116", - "K": "fec86ba6eb707ed08905757b1bb44b8f", - "sim_algo":"milenage", - "op": "1006020f0a478bf6b699f15c062e42b3", - - as_release: 15, - ue_category: "nr", - apn:"oai", - attach_pdn_type:"ipv4", - default_nssai: [ { sst: 1, }, ], - default_pdu_session_snssai: { sst: 1, }, - tun_setup_script: "ue-ifup", - }, - { - "ue_id" : 7, - "imsi": "208970000000117", - "K": "fec86ba6eb707ed08905757b1bb44b8f", - "sim_algo":"milenage", - "op": "1006020f0a478bf6b699f15c062e42b3", - - as_release: 15, - ue_category: "nr", - apn:"oai", - attach_pdn_type:"ipv4", - default_nssai: [ { sst: 1, }, ], - default_pdu_session_snssai: { sst: 1, }, - tun_setup_script: "ue-ifup", - }, - { - "ue_id" : 8, - "imsi": "208970000000118", - "K": "fec86ba6eb707ed08905757b1bb44b8f", - "sim_algo":"milenage", - "op": "1006020f0a478bf6b699f15c062e42b3", - - as_release: 15, - ue_category: "nr", - apn:"oai", - attach_pdn_type:"ipv4", - default_nssai: [ { sst: 1, }, ], - default_pdu_session_snssai: { sst: 1, }, - tun_setup_script: "ue-ifup", - }, - { - "ue_id" : 9, - "imsi": "208970000000119", - "K": "fec86ba6eb707ed08905757b1bb44b8f", - "sim_algo":"milenage", - "op": "1006020f0a478bf6b699f15c062e42b3", - - as_release: 15, - ue_category: "nr", - apn:"oai", - attach_pdn_type:"ipv4", - default_nssai: [ { sst: 1, }, ], - default_pdu_session_snssai: { sst: 1, }, - tun_setup_script: "ue-ifup", - }, - { - "ue_id" : 10, - "imsi": "208970000000120", - "K": "fec86ba6eb707ed08905757b1bb44b8f", - "sim_algo":"milenage", - "op": "1006020f0a478bf6b699f15c062e42b3", - - as_release: 15, - ue_category: "nr", - apn:"oai", - attach_pdn_type:"ipv4", - default_nssai: [ { sst: 1, }, ], - default_pdu_session_snssai: { sst: 1, }, - tun_setup_script: "ue-ifup", - }, - { - "ue_id" : 11, - "imsi": "208970000000121", - "K": "fec86ba6eb707ed08905757b1bb44b8f", - "sim_algo":"milenage", - "op": "1006020f0a478bf6b699f15c062e42b3", - - as_release: 15, - ue_category: "nr", - apn:"oai", - attach_pdn_type:"ipv4", - default_nssai: [ { sst: 1, }, ], - default_pdu_session_snssai: { sst: 1, }, - tun_setup_script: "ue-ifup", - }, - { - "ue_id" : 12, - "imsi": "208970000000122", - "K": "fec86ba6eb707ed08905757b1bb44b8f", - "sim_algo":"milenage", - "op": "1006020f0a478bf6b699f15c062e42b3", - - as_release: 15, - ue_category: "nr", - apn:"oai", - attach_pdn_type:"ipv4", - default_nssai: [ { sst: 1, }, ], - default_pdu_session_snssai: { sst: 1, }, - tun_setup_script: "ue-ifup", - }, - { - "ue_id" : 13, - "imsi": "208970000000123", - "K": "fec86ba6eb707ed08905757b1bb44b8f", - "sim_algo":"milenage", - "op": "1006020f0a478bf6b699f15c062e42b3", - - as_release: 15, - ue_category: "nr", - apn:"oai", - attach_pdn_type:"ipv4", - default_nssai: [ { sst: 1, }, ], - default_pdu_session_snssai: { sst: 1, }, - tun_setup_script: "ue-ifup", - }, - { - "ue_id" : 14, - "imsi": "208970000000124", - "K": "fec86ba6eb707ed08905757b1bb44b8f", - "sim_algo":"milenage", - "op": "1006020f0a478bf6b699f15c062e42b3", - - as_release: 15, - ue_category: "nr", - apn:"oai", - attach_pdn_type:"ipv4", - default_nssai: [ { sst: 1, }, ], - default_pdu_session_snssai: { sst: 1, }, - tun_setup_script: "ue-ifup", - }, - { - "ue_id" : 15, - "imsi": "208970000000125", - "K": "fec86ba6eb707ed08905757b1bb44b8f", - "sim_algo":"milenage", - "op": "1006020f0a478bf6b699f15c062e42b3", - - as_release: 15, - ue_category: "nr", - apn:"oai", - attach_pdn_type:"ipv4", - default_nssai: [ { sst: 1, }, ], - default_pdu_session_snssai: { sst: 1, }, - tun_setup_script: "ue-ifup", - }, - { - "ue_id" : 16, - "imsi": "208970000000126", - "K": "fec86ba6eb707ed08905757b1bb44b8f", - "sim_algo":"milenage", - "op": "1006020f0a478bf6b699f15c062e42b3", - - as_release: 15, - ue_category: "nr", - apn:"oai", - attach_pdn_type:"ipv4", - default_nssai: [ { sst: 1, }, ], - default_pdu_session_snssai: { sst: 1, }, - tun_setup_script: "ue-ifup", - }, - ], -} diff --git a/ci-scripts/ci_infra.yaml b/ci-scripts/ci_infra.yaml index 400b80e2e0..8cbb5936e2 100644 --- a/ci-scripts/ci_infra.yaml +++ b/ci-scripts/ci_infra.yaml @@ -97,7 +97,7 @@ ltebox-nepes: amarisoft_ue: Host: amariue - InitScript: /root/lteue-linux-2023-10-27/ue/lteue /root/oaicicd/ran_sa_aw2s_asue_2x2/aw2s-multi-20897-2x2.cfg & + InitScript: /root/lteue-linux-2023-10-27/ue/lteue /root/oaicicd/ran_sa_aw2s_asue_2x2/aw2s-multi-00102-2x2.cfg & TermScript: /root/2023-10-27/libs/ws.js -t 10 127.0.0.1:9002 '{"message":"quit"}' || killall -KILL lteue-avx2 amarisoft_ue_1: Host: amariue diff --git a/ci-scripts/conf_files/gnb.sa.band78.51prb.aw2s.ddsuu.conf b/ci-scripts/conf_files/gnb.sa.band78.51prb.aw2s.ddsuu.conf index 34201a96b1..c41faa0841 100644 --- a/ci-scripts/conf_files/gnb.sa.band78.51prb.aw2s.ddsuu.conf +++ b/ci-scripts/conf_files/gnb.sa.band78.51prb.aw2s.ddsuu.conf @@ -16,7 +16,7 @@ gNBs = // Tracking area code, 0x0000 and 0xfffe are reserved values tracking_area_code = 0x1; - plmn_list = ({ mcc = 208; mnc = 97; mnc_length = 2; snssaiList = ({ sst =0x1; }) }); + plmn_list = ({ mcc = 001; mnc = 02; mnc_length = 2; snssaiList = ({ sst =0x1; }) }); nr_cellid = 12345678L @@ -35,10 +35,10 @@ gNBs = # downlinkConfigCommon #frequencyInfoDL # this is 3410.4 MHz => 301 REs from PointA 25 PRBs + 1 RE - absoluteFrequencySSB = 627360; + absoluteFrequencySSB = 630048; dl_frequencyBand = 78; # this is 3410.4 - (51*12*30e-3/2) = 3401.22 MHz - dl_absoluteFrequencyPointA = 626748; + dl_absoluteFrequencyPointA = 629436; #scs-SpecificCarrierList dl_offstToCarrier = 0; # subcarrierSpacing From 82423fba4569184ac06399228421cdf13132578f Mon Sep 17 00:00:00 2001 From: Jaroslava Fiedlerova Date: Fri, 12 Apr 2024 15:34:52 +0200 Subject: [PATCH 21/40] Change PLMN in OAIUE pipeline --- ci-scripts/conf_files/gnb.sa.band78.106prb.n310.7ds2u.conf | 2 +- ci-scripts/yaml_files/5g_sa_n310_nrue/docker-compose.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ci-scripts/conf_files/gnb.sa.band78.106prb.n310.7ds2u.conf b/ci-scripts/conf_files/gnb.sa.band78.106prb.n310.7ds2u.conf index d43d2ed8e9..540774e2d1 100644 --- a/ci-scripts/conf_files/gnb.sa.band78.106prb.n310.7ds2u.conf +++ b/ci-scripts/conf_files/gnb.sa.band78.106prb.n310.7ds2u.conf @@ -13,7 +13,7 @@ gNBs = // Tracking area code, 0x0000 and 0xfffe are reserved values tracking_area_code = 1; - plmn_list = ({ mcc = 208; mnc = 97; mnc_length = 2; snssaiList = ({sst = 1;}); }); + plmn_list = ({ mcc = 001; mnc = 02; mnc_length = 2; snssaiList = ({sst = 1;}); }); nr_cellid = 12345678L diff --git a/ci-scripts/yaml_files/5g_sa_n310_nrue/docker-compose.yml b/ci-scripts/yaml_files/5g_sa_n310_nrue/docker-compose.yml index 20c6f81b1b..a1815eba92 100644 --- a/ci-scripts/yaml_files/5g_sa_n310_nrue/docker-compose.yml +++ b/ci-scripts/yaml_files/5g_sa_n310_nrue/docker-compose.yml @@ -10,7 +10,7 @@ services: #entrypoint: /bin/bash -c "sleep infinity" environment: TZ: Europe/Paris - USE_ADDITIONAL_OPTIONS: --usrp-args type=n3xx,name=ni-n3xx-31641B9,addr=192.168.10.2 -r 106 --numerology 1 --band 78 -C 3511200000 --sa --ue-fo-compensation --ue-rxgain 65 --tune-offset 20000000 -A 45 --log_config.global_log_options level,nocolor,time --uicc0.imsi 208970000000111 --uicc0.nssai_sd 16777215 + USE_ADDITIONAL_OPTIONS: --usrp-args type=n3xx,name=ni-n3xx-31641B9,addr=192.168.10.2 -r 106 --numerology 1 --band 78 -C 3511200000 --sa --ue-fo-compensation --ue-rxgain 65 --tune-offset 20000000 -A 45 --log_config.global_log_options level,nocolor,time --uicc0.imsi 001020000000111 --uicc0.nssai_sd 16777215 volumes: - ../../conf_files/ue.sa.conf:/opt/oai-nr-ue/etc/nr-ue.conf healthcheck: From de5f23c52b874d83b456b8ca8a7a5f7bf07d0225 Mon Sep 17 00:00:00 2001 From: Jaroslava Fiedlerova Date: Mon, 15 Apr 2024 11:29:46 +0200 Subject: [PATCH 22/40] B200-SABOX pipeline - fix testcase descriptions --- ci-scripts/xml_files/container_sa_b200_quectel.xml | 4 ++-- ci-scripts/xml_files/container_sa_e1_b200_quectel.xml | 4 ++-- ci-scripts/xml_files/container_sa_f1_b200_quectel.xml | 4 ++-- ci-scripts/xml_files/container_sa_sc_b200_quectel.xml | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/ci-scripts/xml_files/container_sa_b200_quectel.xml b/ci-scripts/xml_files/container_sa_b200_quectel.xml index 7d139f46fe..3eff9cddfd 100644 --- a/ci-scripts/xml_files/container_sa_b200_quectel.xml +++ b/ci-scripts/xml_files/container_sa_b200_quectel.xml @@ -165,7 +165,7 @@ Iperf - iperf (DL/TCP)(30 sec)(multi-ue profile) + iperf (DL/TCP)(30 sec)(single-ue profile) -t 30 -R idefix sabox-nepes @@ -174,7 +174,7 @@ Iperf - iperf (UL/TCP)(30 sec)(multi-ue profile) + iperf (UL/TCP)(30 sec)(single-ue profile) -t 30 idefix sabox-nepes diff --git a/ci-scripts/xml_files/container_sa_e1_b200_quectel.xml b/ci-scripts/xml_files/container_sa_e1_b200_quectel.xml index af550ad4b6..b888cdb855 100644 --- a/ci-scripts/xml_files/container_sa_e1_b200_quectel.xml +++ b/ci-scripts/xml_files/container_sa_e1_b200_quectel.xml @@ -157,7 +157,7 @@ Iperf - iperf (DL/TCP)(30 sec)(multi-ue profile) + iperf (DL/TCP)(30 sec)(single-ue profile) -t 30 -R idefix sabox-nepes @@ -166,7 +166,7 @@ Iperf - iperf (UL/TCP)(30 sec)(multi-ue profile) + iperf (UL/TCP)(30 sec)(single-ue profile) -t 30 idefix sabox-nepes diff --git a/ci-scripts/xml_files/container_sa_f1_b200_quectel.xml b/ci-scripts/xml_files/container_sa_f1_b200_quectel.xml index 9d9ff62012..df69f4c32c 100644 --- a/ci-scripts/xml_files/container_sa_f1_b200_quectel.xml +++ b/ci-scripts/xml_files/container_sa_f1_b200_quectel.xml @@ -189,7 +189,7 @@ Iperf - iperf (DL/TCP)(30 sec)(multi-ue profile) + iperf (DL/TCP)(30 sec)(single-ue profile) -t 30 -R idefix sabox-nepes @@ -198,7 +198,7 @@ Iperf - iperf (UL/TCP)(30 sec)(multi-ue profile) + iperf (UL/TCP)(30 sec)(single-ue profile) -t 30 idefix sabox-nepes diff --git a/ci-scripts/xml_files/container_sa_sc_b200_quectel.xml b/ci-scripts/xml_files/container_sa_sc_b200_quectel.xml index e1fb0f5318..4c1e2ab506 100644 --- a/ci-scripts/xml_files/container_sa_sc_b200_quectel.xml +++ b/ci-scripts/xml_files/container_sa_sc_b200_quectel.xml @@ -159,7 +159,7 @@ Iperf - iperf (DL/TCP)(30 sec)(multi-ue profile) + iperf (DL/TCP)(30 sec)(single-ue profile) -t 30 -R idefix sabox-nepes @@ -168,7 +168,7 @@ Iperf - iperf (UL/TCP)(30 sec)(multi-ue profile) + iperf (UL/TCP)(30 sec)(single-ue profile) -t 30 idefix sabox-nepes From 65548167219a58e58de884da2f82c4859ef41a7f Mon Sep 17 00:00:00 2001 From: Jaroslava Fiedlerova Date: Wed, 17 Apr 2024 16:13:24 +0200 Subject: [PATCH 23/40] AW2S pipeline: Connect 16th UE after TCP tests with 15 UEs --- ci-scripts/xml_files/container_sa_aw2s_asue.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci-scripts/xml_files/container_sa_aw2s_asue.xml b/ci-scripts/xml_files/container_sa_aw2s_asue.xml index 3885fbdd8e..820e414ffb 100644 --- a/ci-scripts/xml_files/container_sa_aw2s_asue.xml +++ b/ci-scripts/xml_files/container_sa_aw2s_asue.xml @@ -48,9 +48,9 @@ 000100 000010 000020 - 002016 000030 000040 + 002016 000200 003000 004000 From bb078e61e00bb86d50881338c471110d30ecd965 Mon Sep 17 00:00:00 2001 From: Jaroslava Fiedlerova Date: Thu, 18 Apr 2024 13:01:59 +0200 Subject: [PATCH 24/40] Create functions for OC CN deployment/undeployment These functions enables (un)deployment of the OAI CN v2.0.1, increase reliability and speedup overall CN (un)deployment compared to current implementation. Use "--wait" helm option to wait for deployment/undeployment of the CN. Wait for pods to be in a ready state before marking the release as successful. If not deployed/undeployed before timeout, marked as unsuccessful. Hardcode path for OC CN5G deployment/undeployment --- ci-scripts/cls_cluster.py | 48 +++++++++++++++++++++++++++ ci-scripts/epc.py | 70 +++++++-------------------------------- 2 files changed, 60 insertions(+), 58 deletions(-) diff --git a/ci-scripts/cls_cluster.py b/ci-scripts/cls_cluster.py index c8b0ce818b..d35b73890b 100644 --- a/ci-scripts/cls_cluster.py +++ b/ci-scripts/cls_cluster.py @@ -44,6 +44,9 @@ OCUrl = "https://api.oai.cs.eurecom.fr:6443" OCRegistry = "default-route-openshift-image-registry.apps.oai.cs.eurecom.fr/" CI_OC_RAN_NAMESPACE = "oaicicd-ran" CI_OC_CORE_NAMESPACE = "oaicicd-core-for-ci-ran" +CN_IMAGES = ["mysql", "oai-nrf", "oai-amf", "oai-smf", "oai-upf", "oai-ausf", "oai-udm", "oai-udr", "oai-traffic-server"] +CN_CONTAINERS = ["", "-c nrf", "-c amf", "-c smf", "-c upf", "-c ausf", "-c udm", "-c udr", ""] + def OC_login(cmd, ocUserName, ocPassword, ocProjectName): if ocUserName == '' or ocPassword == '' or ocProjectName == '': @@ -65,6 +68,51 @@ def OC_login(cmd, ocUserName, ocPassword, ocProjectName): def OC_logout(cmd): cmd.run(f'oc logout') +def OC_deploy_CN(cmd, ocUserName, ocPassword): + logging.debug('OC OAI CN5G: Deploying OAI CN5G on Openshift Cluster') + path = "/opt/oai-cn5g-fed-develop-2024-april-00102" + succeeded = OC_login(cmd, ocUserName, ocPassword, CI_OC_CORE_NAMESPACE) + if not succeeded: + return False, CONST.OC_LOGIN_FAIL + cmd.run('helm uninstall oai5gcn --wait --timeout 60s') + ret = cmd.run(f'helm install --wait --timeout 60s oai5gcn {path}/ci-scripts/charts/oai-5g-basic/.') + if ret.returncode != 0: + logging.error('OC OAI CN5G: Deployment failed') + OC_logout(cmd) + return False, CONST.OC_PROJECT_FAIL + report = cmd.run('oc get pods') + OC_logout(cmd) + return True, report + +def OC_undeploy_CN(cmd, ocUserName, ocPassword): + logging.debug('OC OAI CN5G: Terminating CN on Openshift Cluster') + path = "/opt/oai-cn5g-fed-develop-2024-april-00102" + succeeded = OC_login(cmd, ocUserName, ocPassword, CI_OC_CORE_NAMESPACE) + if not succeeded: + return False, CONST.OC_LOGIN_FAIL + cmd.run(f'rm -Rf {path}/logs') + cmd.run(f'mkdir -p {path}/logs') + logging.debug('OC OAI CN5G: Collecting log files to workspace') + cmd.run(f'oc describe pod &> {path}/logs/describe-pods-post-test.log') + cmd.run(f'oc get pods.metrics.k8s &> {path}/logs/nf-resource-consumption.log') + for ii, ci in zip(CN_IMAGES, CN_CONTAINERS): + podName = cmd.run(f"oc get pods | grep {ii} | awk \'{{print $1}}\'").stdout.strip() + if not podName: + logging.debug(f'{ii} pod not found!') + else: + cmd.run(f'oc logs -f {podName} {ci} &> {path}/logs/{ii}.log &') + cmd.run(f'cd {path}/logs && zip -r -qq test_logs_CN.zip *.log') + cmd.copyin(f'{path}/logs/test_logs_CN.zip','test_logs_CN.zip') + ret = cmd.run('helm uninstall --wait --timeout 60s oai5gcn') + if ret.returncode != 0: + logging.error('OC OAI CN5G: Undeployment failed') + cmd.run('helm uninstall --wait --timeout 60s oai5gcn') + OC_logout(cmd) + return False, CONST.OC_PROJECT_FAIL + report = cmd.run('oc get pods') + OC_logout(cmd) + return True, report + class Cluster: def __init__(self): self.eNBIPAddress = "" diff --git a/ci-scripts/epc.py b/ci-scripts/epc.py index c5a35c59a3..fb5aa8cde6 100644 --- a/ci-scripts/epc.py +++ b/ci-scripts/epc.py @@ -298,39 +298,18 @@ class EPCManagement(): html_cell += '(' + res4.group('date') + ')' html_cell += '\n' elif re.match('OC-OAI-CN5G', self.Type, re.IGNORECASE): - self.testCase_id = HTML.testCase_id - imageNames = ["oai-nrf", "oai-amf", "oai-smf", "oai-spgwu-tiny", "oai-ausf", "oai-udm", "oai-udr", "mysql","oai-traffic-server"] - logging.debug('Deploying OAI CN5G on Openshift Cluster') - lIpAddr = self.IPAddress - lSourcePath = "/opt/oai-cn5g-fed-develop-2023-04-28-20897" - succeeded = OC.OC_login(mySSH, self.OCUserName, self.OCPassword, OC.CI_OC_CORE_NAMESPACE) + succeeded, report = OC.OC_deploy_CN(mySSH, self.OCUserName, self.OCPassword) if not succeeded: - logging.error('\u001B[1m OC Cluster Login Failed\u001B[0m') - HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_LOGIN_FAIL) - return False - for ii in imageNames: - mySSH.run(f'helm uninstall {ii}', reportNonZero=False) - mySSH.run(f'helm spray {lSourcePath}/ci-scripts/charts/oai-5g-basic/.') - ret = mySSH.run(f'oc get pods', silent=True) - if ret.stdout.count('Running') != 9: - logging.error('\u001B[1m Deploying 5GCN Failed using helm chart on OC Cluster\u001B[0m') - for ii in imageNames: - mySSH.run('helm uninstall '+ ii) - ret = mySSH.run(f'oc get pods') - if re.search('No resources found', ret.stdout): - logging.debug('All pods uninstalled') - OC.OC_logout(mySSH) - mySSH.close() - HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_PROJECT_FAIL) - return False - ret = mySSH.run(f'oc get pods', silent=True) - for line in ret.stdout.split('\n')[1:]: + HTML.CreateHtmlTestRow('N/A', 'KO', report) + HTML.CreateHtmlTabFooter(False) + mySSH.close() + sys.exit("OC OAI CN5G: CN deployment failed!") + for line in report.stdout.split('\n')[1:]: columns = line.strip().split() name = columns[0] status = columns[2] html_cell += status + ' ' + name html_cell += '\n' - OC.OC_logout(mySSH) else: logging.error('This option should not occur!') mySSH.close() @@ -562,8 +541,6 @@ class EPCManagement(): HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK) def Terminate5GCN(self, HTML): - imageNames = ["mysql", "oai-nrf", "oai-amf", "oai-smf", "oai-spgwu-tiny", "oai-ausf", "oai-udm", "oai-udr", "oai-traffic-server"] - containerInPods = ["", "-c nrf", "-c amf", "-c smf", "-c spgwu", "-c ausf", "-c udm", "-c udr", ""] mySSH = cls_cmd.getConnection(self.IPAddress) message = '' if re.match('ltebox', self.Type, re.IGNORECASE): @@ -598,36 +575,13 @@ class EPCManagement(): mySSH.copyin(f'{self.SourceCodePath}/logs/test_logs_CN.zip','test_logs_CN.zip') logging.debug(message) elif re.match('OC-OAI-CN5G', self.Type, re.IGNORECASE): - logging.debug('Terminating OAI CN5G on Openshift Cluster') - lIpAddr = self.IPAddress - lSourcePath = self.SourceCodePath - mySSH.run(f'rm -Rf {lSourcePath}/logs') - mySSH.run(f'mkdir -p {lSourcePath}/logs') - logging.debug('OC OAI CN5G - Collecting Log files to workspace') - succeeded = OC.OC_login(mySSH, self.OCUserName, self.OCPassword, OC.CI_OC_CORE_NAMESPACE) + succeeded, report = OC.OC_undeploy_CN(mySSH, self.OCUserName, self.OCPassword) if not succeeded: - logging.error('\u001B[1m OC Cluster Login Failed\u001B[0m') - HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_LOGIN_FAIL) - return False - mySSH.run(f'oc describe pod &> {lSourcePath}/logs/describe-pods-post-test.log') - mySSH.run(f'oc get pods.metrics.k8s &> {lSourcePath}/logs/nf-resource-consumption.log') - for ii, ci in zip(imageNames, containerInPods): - podName = mySSH.run(f"oc get pods | grep {ii} | awk \'{{print $1}}\'").stdout.strip() - if not podName: - logging.debug(f'{ii} pod not found!') - HTML.CreateHtmlTestRow(self.Type, 'KO', CONST.INVALID_PARAMETER) - HTML.CreateHtmlTabFooter(False) - mySSH.run(f'oc logs -f {podName} {ci} &> {lSourcePath}/logs/{ii}.log &') - mySSH.run(f'helm uninstall {ii}') - podName = '' - mySSH.run(f'cd {lSourcePath}/logs && zip -r -qq test_logs_CN.zip *.log') - mySSH.copyin(f'{lSourcePath}/logs/test_logs_CN.zip','test_logs_CN.zip') - ret = mySSH.run(f'oc get pods', silent=True) - res = re.search(f'No resources found in {OC.CI_OC_CORE_NAMESPACE} namespace.', ret.stdout) - if res is not None: - logging.debug('OC OAI CN5G components uninstalled') - message = 'OC OAI CN5G components uninstalled' - OC.OC_logout(mySSH) + HTML.CreateHtmlTestRow('N/A', 'KO', report) + HTML.CreateHtmlTabFooter(False) + sys.exit("OC OAI CN5G: CN undeployment failed!") + else: + message = report.stdout else: logging.error('This should not happen!') mySSH.close() From da57e23637308ff282e624a1d997573c115d5318 Mon Sep 17 00:00:00 2001 From: Jaroslava Fiedlerova Date: Thu, 25 Apr 2024 22:21:58 +0200 Subject: [PATCH 25/40] Update config files for SA 2x2 pipeline --- .../conf_files/gnb.sa.band77.162prb.usrpn310.2x2.conf | 9 +-------- .../conf_files/gnb.sa.band77.273prb.usrpn310.2x2.conf | 11 +---------- 2 files changed, 2 insertions(+), 18 deletions(-) diff --git a/ci-scripts/conf_files/gnb.sa.band77.162prb.usrpn310.2x2.conf b/ci-scripts/conf_files/gnb.sa.band77.162prb.usrpn310.2x2.conf index fb19d44985..2ad639f727 100644 --- a/ci-scripts/conf_files/gnb.sa.band77.162prb.usrpn310.2x2.conf +++ b/ci-scripts/conf_files/gnb.sa.band77.162prb.usrpn310.2x2.conf @@ -167,19 +167,12 @@ gNBs = ////////// AMF parameters: - amf_ip_address = ( { ipv4 = "192.168.61.132"; - ipv6 = "192:168:30::17"; - active = "yes"; - preference = "ipv4"; - } - ); + amf_ip_address = ({ ipv4 = "192.168.61.132"; }); NETWORK_INTERFACES : { - GNB_INTERFACE_NAME_FOR_NG_AMF = "demo-oai"; GNB_IPV4_ADDRESS_FOR_NG_AMF = "192.168.61.129/26"; - GNB_INTERFACE_NAME_FOR_NGU = "demo-oai"; GNB_IPV4_ADDRESS_FOR_NGU = "192.168.61.129/26"; GNB_PORT_FOR_S1U = 2152; # Spec 2152 }; diff --git a/ci-scripts/conf_files/gnb.sa.band77.273prb.usrpn310.2x2.conf b/ci-scripts/conf_files/gnb.sa.band77.273prb.usrpn310.2x2.conf index efe4bbcec8..c8a578a738 100644 --- a/ci-scripts/conf_files/gnb.sa.band77.273prb.usrpn310.2x2.conf +++ b/ci-scripts/conf_files/gnb.sa.band77.273prb.usrpn310.2x2.conf @@ -164,20 +164,11 @@ gNBs = ( ////////// AMF parameters: - amf_ip_address = ( - { - ipv4 = "192.168.61.132"; - ipv6 = "192:168:30::17"; - active = "yes"; - preference = "ipv4"; - } - ); + amf_ip_address = ({ ipv4 = "192.168.61.132"; }); NETWORK_INTERFACES : { - GNB_INTERFACE_NAME_FOR_NG_AMF = "demo-oai"; GNB_IPV4_ADDRESS_FOR_NG_AMF = "192.168.61.129/24"; - GNB_INTERFACE_NAME_FOR_NGU = "demo-oai"; GNB_IPV4_ADDRESS_FOR_NGU = "192.168.61.129/24"; GNB_PORT_FOR_S1U = 2152; # Spec 2152 } From d7931ea4121d52a13d43fb4b050c5f60288660b4 Mon Sep 17 00:00:00 2001 From: Cedric Roux Date: Sat, 6 Apr 2024 16:12:08 +0200 Subject: [PATCH 26/40] bugfix: speedup integrity computation The main work of this commit is to rewrite cipher_aes_128_cbc_cmac() which was too slow and created issues when running the 4G eNB on some machines (LLL when using a b210). Instead of creating the security context, use it, and delete it, all in cipher_aes_128_cbc_cmac(), we introduce the function init_aes_128_cbc_cmac() to create it, and we change cipher_aes_128_cbc_cmac() to just use it, and we also adapt free_aes_128_cbc_cmac(). The function aes_128_cbc_cmac() is removed, it does not follow the new init/use/free API. Doing so, on the primary test machine used to do this work (a powerful and fast machine where it is possible to set the CPUs' frequencies) it was possible to limit the CPUs' frequencies to 500 MHz (it was not possible to go lower) without any LLL (using a b210, quectel UE in idle, no data traffic, only periodic measurement reports). Before this commit, it was necessary to set a frequency of at least 1.8 GHz otherwise some LLL would appear. Then we need to adapt the rest of the code to take into account those changes. A notion of security container (stream_security_container_t) containing ciphering and integrity contexts is introduced. And the code is harmonized for, hopefully, better readability. The (opaque) type stream_security_context_t is introduced, used by both integrity and ciphering contexts. The idea is to use a init()/use()/free() API for all the security procedures, identical for all the ciphering and integrity procedures. --- openair2/LAYER2/PDCP_v10.1.0/pdcp.c | 11 +- openair2/LAYER2/PDCP_v10.1.0/pdcp.h | 9 +- openair2/LAYER2/PDCP_v10.1.0/pdcp_security.c | 29 +-- openair2/LAYER2/nr_pdcp/nr_pdcp_entity.h | 14 +- .../LAYER2/nr_pdcp/nr_pdcp_integrity_nia1.c | 19 +- .../LAYER2/nr_pdcp/nr_pdcp_integrity_nia1.h | 8 +- .../LAYER2/nr_pdcp/nr_pdcp_integrity_nia2.c | 25 +-- .../LAYER2/nr_pdcp/nr_pdcp_integrity_nia2.h | 8 +- .../LAYER2/nr_pdcp/nr_pdcp_security_nea2.c | 8 +- .../LAYER2/nr_pdcp/nr_pdcp_security_nea2.h | 8 +- openair3/NAS/COMMON/API/NETWORK/nas_message.c | 18 +- openair3/NAS/NR_UE/nr_nas_msg_sim.c | 16 +- openair3/NAS/NR_UE/nr_nas_msg_sim.h | 2 + openair3/NAS/UE/EMM/SecurityModeControl.c | 7 + openair3/NAS/UE/EMM/emmData.h | 2 + openair3/SECU/aes_128_cbc_cmac.c | 169 +++++------------- openair3/SECU/aes_128_cbc_cmac.h | 6 +- openair3/SECU/nas_stream_eea1.c | 34 ++-- openair3/SECU/nas_stream_eea1.h | 3 + openair3/SECU/nas_stream_eea2.c | 17 +- openair3/SECU/nas_stream_eea2.h | 37 +--- openair3/SECU/nas_stream_eia1.c | 24 ++- openair3/SECU/nas_stream_eia1.h | 3 + openair3/SECU/nas_stream_eia2.c | 19 +- openair3/SECU/nas_stream_eia2.h | 3 + openair3/SECU/secu_defs.c | 67 +++++++ openair3/SECU/secu_defs.h | 31 +++- 27 files changed, 323 insertions(+), 274 deletions(-) diff --git a/openair2/LAYER2/PDCP_v10.1.0/pdcp.c b/openair2/LAYER2/PDCP_v10.1.0/pdcp.c index 99081a5ffc..d1beaa5d4b 100644 --- a/openair2/LAYER2/PDCP_v10.1.0/pdcp.c +++ b/openair2/LAYER2/PDCP_v10.1.0/pdcp.c @@ -2124,9 +2124,12 @@ pdcp_config_set_security( pdcp_pP->cipheringAlgorithm, pdcp_pP->integrityProtAlgorithm); - kRRCenc != NULL ? memcpy(pdcp_pP->kRRCenc, kRRCenc, 32) : memset(pdcp_pP->kRRCenc, 0, 32); - kRRCint != NULL ? memcpy(pdcp_pP->kRRCint, kRRCint, 32) : memset(pdcp_pP->kRRCint, 0, 32); - kUPenc != NULL ? memcpy(pdcp_pP->kUPenc, kUPenc, 32) : memset(pdcp_pP->kUPenc, 0, 32); + kRRCenc != NULL ? memcpy(pdcp_pP->kRRCenc, kRRCenc+16, 16) : memset(pdcp_pP->kRRCenc, 0, 16); + kRRCint != NULL ? memcpy(pdcp_pP->kRRCint, kRRCint+16, 16) : memset(pdcp_pP->kRRCint, 0, 16); + kUPenc != NULL ? memcpy(pdcp_pP->kUPenc, kUPenc+16, 16) : memset(pdcp_pP->kUPenc, 0, 16); + + pdcp_pP->security_container_rrc = stream_security_container_create(pdcp_pP->cipheringAlgorithm, pdcp_pP->integrityProtAlgorithm, pdcp_pP->kRRCenc, pdcp_pP->kRRCint); + pdcp_pP->security_container_up = stream_security_container_create(pdcp_pP->cipheringAlgorithm, 0, pdcp_pP->kUPenc, NULL); /* Activate security */ pdcp_pP->security_activated = 1; @@ -2196,6 +2199,8 @@ void rrc_pdcp_config_req ( pdcp_p->last_submitted_pdcp_rx_sn = 4095; pdcp_p->seq_num_size = 0; pdcp_p->first_missing_pdu = -1; + stream_security_container_delete(pdcp_p->security_container_rrc); + stream_security_container_delete(pdcp_p->security_container_up); pdcp_p->security_activated = 0; h_rc = hashtable_remove(pdcp_coll_p, key); break; diff --git a/openair2/LAYER2/PDCP_v10.1.0/pdcp.h b/openair2/LAYER2/PDCP_v10.1.0/pdcp.h index 6b0e2499fe..4a7f71b315 100644 --- a/openair2/LAYER2/PDCP_v10.1.0/pdcp.h +++ b/openair2/LAYER2/PDCP_v10.1.0/pdcp.h @@ -181,9 +181,12 @@ typedef struct pdcp_s { * Control-Plane RRC integrity key * These keys are configured by RRC layer */ - uint8_t kUPenc[32]; - uint8_t kRRCint[32]; - uint8_t kRRCenc[32]; + uint8_t kUPenc[16]; + uint8_t kRRCint[16]; + uint8_t kRRCenc[16]; + + stream_security_container_t *security_container_rrc; + stream_security_container_t *security_container_up; uint8_t security_activated; diff --git a/openair2/LAYER2/PDCP_v10.1.0/pdcp_security.c b/openair2/LAYER2/PDCP_v10.1.0/pdcp_security.c index a88d4028ae..e969467231 100644 --- a/openair2/LAYER2/PDCP_v10.1.0/pdcp_security.c +++ b/openair2/LAYER2/PDCP_v10.1.0/pdcp_security.c @@ -112,6 +112,7 @@ pdcp_apply_security( { uint8_t *buffer_encrypted = NULL; nas_stream_cipher_t encrypt_params = {0}; + stream_security_container_t *container; DevAssert(pdcp_pP != NULL); DevAssert(pdcp_pdu_buffer != NULL); @@ -122,7 +123,11 @@ pdcp_apply_security( encrypt_params.direction = (pdcp_pP->is_ue == 1) ? SECU_DIRECTION_UPLINK : SECU_DIRECTION_DOWNLINK; encrypt_params.bearer = rb_id - 1; encrypt_params.count = pdcp_get_next_count_tx(pdcp_pP, srb_flagP, current_sn); - encrypt_params.key_length = 16; + + if (srb_flagP) + container = pdcp_pP->security_container_rrc; + else + container = pdcp_pP->security_container_up; if (srb_flagP) { /* SRBs */ @@ -133,7 +138,7 @@ pdcp_apply_security( encrypt_params.message = pdcp_pdu_buffer; encrypt_params.blength = (pdcp_header_len + sdu_buffer_size) << 3; - encrypt_params.key = pdcp_pP->kRRCint + 16; // + 128; + encrypt_params.context = container->integrity_context; mac_i = &pdcp_pdu_buffer[pdcp_header_len + sdu_buffer_size]; @@ -142,15 +147,13 @@ pdcp_apply_security( stream_compute_integrity(pdcp_pP->integrityProtAlgorithm, &encrypt_params, mac_i); - - encrypt_params.key = pdcp_pP->kRRCenc; // + 128 // bit key } else { LOG_D(PDCP, "[OSA][RB %ld] %s Applying user-plane security\n", rb_id, (pdcp_pP->is_ue != 0) ? "UE -> eNB" : "eNB -> UE"); - - encrypt_params.key = pdcp_pP->kUPenc;// + 128; } + encrypt_params.context = container->ciphering_context; + encrypt_params.message = &pdcp_pdu_buffer[pdcp_header_len]; encrypt_params.blength = sdu_buffer_size << 3; @@ -180,6 +183,7 @@ pdcp_validate_security( { uint8_t *buffer_decrypted = NULL; nas_stream_cipher_t decrypt_params = {0}; + stream_security_container_t *container; DevAssert(pdcp_pP != NULL); @@ -195,17 +199,17 @@ pdcp_validate_security( decrypt_params.count = pdcp_get_next_count_rx(pdcp_pP, srb_flagP, hfn, sn); decrypt_params.message = &pdcp_pdu_buffer[pdcp_header_len]; decrypt_params.blength = (sdu_buffer_size - pdcp_header_len) << 3; - decrypt_params.key_length = 16; if (srb_flagP) { LOG_D(PDCP, "[OSA][RB %ld] %s Validating control-plane security\n", rb_id, (pdcp_pP->is_ue != 0) ? "eNB -> UE" : "UE -> eNB"); - decrypt_params.key = pdcp_pP->kRRCenc;// + 128; + container = pdcp_pP->security_container_rrc; } else { LOG_D(PDCP, "[OSA][RB %ld] %s Validating user-plane security\n", rb_id, (pdcp_pP->is_ue != 0) ? "eNB -> UE" : "UE -> eNB"); - decrypt_params.key = pdcp_pP->kUPenc;// + 128; + container = pdcp_pP->security_container_up; } /* Uncipher the block */ + decrypt_params.context = container->ciphering_context; stream_compute_encrypt(pdcp_pP->cipheringAlgorithm, &decrypt_params, buffer_decrypted); if (!IS_SOFTMODEM_IQPLAYER) { @@ -213,7 +217,7 @@ pdcp_validate_security( /* Now check the integrity of the complete PDU */ decrypt_params.message = pdcp_pdu_buffer; decrypt_params.blength = sdu_buffer_size << 3; - decrypt_params.key = pdcp_pP->kRRCint + 16;// 128; + decrypt_params.context = container->integrity_context; if (pdcp_pP->integrityProtAlgorithm != EIA0_ALG_ID) { uint8_t result[4] = {0}; @@ -221,10 +225,9 @@ pdcp_validate_security( if (memcmp(result, &pdcp_pdu_buffer[sdu_buffer_size], 4) != 0) { LOG_E(PDCP, - "[OSA][RB %ld] %s failed to validate MAC-I (key %llx) of incoming PDU\n", + "[OSA][RB %ld] %s failed to validate MAC-I of incoming PDU\n", rb_id, - (pdcp_pP->is_ue != 0) ? "UE" : "eNB", - ((long long unsigned int *)decrypt_params.key)[0]); + (pdcp_pP->is_ue != 0) ? "UE" : "eNB"); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PDCP_VALIDATE_SECURITY, VCD_FUNCTION_OUT); return -1; } diff --git a/openair2/LAYER2/nr_pdcp/nr_pdcp_entity.h b/openair2/LAYER2/nr_pdcp/nr_pdcp_entity.h index 5d2fd56f70..d26ce83b82 100644 --- a/openair2/LAYER2/nr_pdcp/nr_pdcp_entity.h +++ b/openair2/LAYER2/nr_pdcp/nr_pdcp_entity.h @@ -28,6 +28,7 @@ #include "nr_pdcp_sdu.h" #include "openair2/RRC/NR/rrc_gNB_radio_bearers.h" +#include "openair3/SECU/secu_defs.h" /* PDCP Formats according to clause 6.2 of 3GPP TS 38.323 */ /* SN Size applicable to SRBs, UM DRBs and AM DRBs */ @@ -151,16 +152,17 @@ typedef struct nr_pdcp_entity_t { int integrity_algorithm; unsigned char ciphering_key[16]; unsigned char integrity_key[16]; - void *security_context; - void (*cipher)(void *security_context, + stream_security_context_t *security_context; + void (*cipher)(stream_security_context_t *security_context, unsigned char *buffer, int length, int bearer, int count, int direction); - void (*free_security)(void *security_context); - void *integrity_context; - void (*integrity)(void *integrity_context, unsigned char *out, + void (*free_security)(stream_security_context_t *security_context); + stream_security_context_t *integrity_context; + void (*integrity)(stream_security_context_t *integrity_context, + unsigned char *out, unsigned char *buffer, int length, int bearer, int count, int direction); - void (*free_integrity)(void *integrity_context); + void (*free_integrity)(stream_security_context_t *integrity_context); /* security/integrity algorithms need to know uplink/downlink information * which is reverse for gnb and ue, so we need to know if this * pdcp entity is for a gnb or an ue diff --git a/openair2/LAYER2/nr_pdcp/nr_pdcp_integrity_nia1.c b/openair2/LAYER2/nr_pdcp/nr_pdcp_integrity_nia1.c index 3dbf15136b..d21c98610e 100644 --- a/openair2/LAYER2/nr_pdcp/nr_pdcp_integrity_nia1.c +++ b/openair2/LAYER2/nr_pdcp/nr_pdcp_integrity_nia1.c @@ -28,24 +28,23 @@ #include "openair3/SECU/secu_defs.h" #include "openair3/SECU/key_nas_deriver.h" -void *nr_pdcp_integrity_nia1_init(unsigned char *integrity_key) +stream_security_context_t *nr_pdcp_integrity_nia1_init(unsigned char *integrity_key) { nas_stream_cipher_t *ret; ret = calloc(1, sizeof(*ret)); if (ret == NULL) abort(); - ret->key = malloc(16); if (ret->key == NULL) abort(); - memcpy(ret->key, integrity_key, 16); - ret->key_length = 16; /* unused */ + ret->context = malloc(16); if (ret->context == NULL) abort(); + memcpy(ret->context, integrity_key, 16); - return ret; + return (stream_security_context_t *)ret; } -void nr_pdcp_integrity_nia1_integrity(void *integrity_context, +void nr_pdcp_integrity_nia1_integrity(stream_security_context_t *integrity_context, unsigned char *out, unsigned char *buffer, int length, int bearer, int count, int direction) { - nas_stream_cipher_t *ctx = integrity_context; + nas_stream_cipher_t *ctx = (nas_stream_cipher_t *)integrity_context; ctx->message = buffer; ctx->count = count; @@ -56,9 +55,9 @@ void nr_pdcp_integrity_nia1_integrity(void *integrity_context, stream_compute_integrity(EIA1_128_ALG_ID, ctx, out); } -void nr_pdcp_integrity_nia1_free_integrity(void *integrity_context) +void nr_pdcp_integrity_nia1_free_integrity(stream_security_context_t *integrity_context) { - nas_stream_cipher_t *ctx = integrity_context; - free(ctx->key); + nas_stream_cipher_t *ctx = (nas_stream_cipher_t *)integrity_context; + free(ctx->context); free(ctx); } diff --git a/openair2/LAYER2/nr_pdcp/nr_pdcp_integrity_nia1.h b/openair2/LAYER2/nr_pdcp/nr_pdcp_integrity_nia1.h index 5c44bad4a7..89f6d9156a 100644 --- a/openair2/LAYER2/nr_pdcp/nr_pdcp_integrity_nia1.h +++ b/openair2/LAYER2/nr_pdcp/nr_pdcp_integrity_nia1.h @@ -22,13 +22,15 @@ #ifndef _NR_PDCP_INTEGRITY_NIA1_H_ #define _NR_PDCP_INTEGRITY_NIA1_H_ -void *nr_pdcp_integrity_nia1_init(unsigned char *integrity_key); +#include "openair3/SECU/secu_defs.h" -void nr_pdcp_integrity_nia1_integrity(void *integrity_context, +stream_security_context_t *nr_pdcp_integrity_nia1_init(unsigned char *integrity_key); + +void nr_pdcp_integrity_nia1_integrity(stream_security_context_t *integrity_context, unsigned char *out, unsigned char *buffer, int length, int bearer, int count, int direction); -void nr_pdcp_integrity_nia1_free_integrity(void *integrity_context); +void nr_pdcp_integrity_nia1_free_integrity(stream_security_context_t *integrity_context); #endif /* _NR_PDCP_INTEGRITY_NIA1_H_ */ diff --git a/openair2/LAYER2/nr_pdcp/nr_pdcp_integrity_nia2.c b/openair2/LAYER2/nr_pdcp/nr_pdcp_integrity_nia2.c index 497ed154d5..f6db1b10a6 100644 --- a/openair2/LAYER2/nr_pdcp/nr_pdcp_integrity_nia2.c +++ b/openair2/LAYER2/nr_pdcp/nr_pdcp_integrity_nia2.c @@ -30,29 +30,25 @@ #include "openair3/SECU/aes_128.h" #include "openair3/SECU/aes_128_cbc_cmac.h" -void *nr_pdcp_integrity_nia2_init(uint8_t integrity_key[16]) +stream_security_context_t *nr_pdcp_integrity_nia2_init(uint8_t integrity_key[16]) { - // This is a hack. Reduce the 3 functions to just cipher? - // No. The overhead is x8 times more. Don't change before measuring - // return integrity_key; cbc_cmac_ctx_t* ctx = calloc(1, sizeof(cbc_cmac_ctx_t)); AssertFatal(ctx, "Memory exhausted"); *ctx = init_aes_128_cbc_cmac(integrity_key); - return ctx; + return (stream_security_context_t *)ctx; } -void nr_pdcp_integrity_nia2_integrity(void *integrity_context, unsigned char *out, unsigned char *buffer, int length, int bearer, int count, int direction) +void nr_pdcp_integrity_nia2_integrity(stream_security_context_t *integrity_context, unsigned char *out, unsigned char *buffer, int length, int bearer, int count, int direction) { DevAssert(integrity_context != NULL); DevAssert(out != NULL); DevAssert(buffer != NULL); DevAssert(length > -1); - // Strange range: [1-32] instead of [0-31] DevAssert(bearer > 0 && bearer < 33); DevAssert(count > -1); - cbc_cmac_ctx_t* ctx = (cbc_cmac_ctx_t*)integrity_context; + cbc_cmac_ctx_t *ctx = (cbc_cmac_ctx_t *)integrity_context; aes_128_t k_iv = {0}; memcpy(&k_iv.key, ctx->key, sizeof(k_iv.key)); @@ -64,18 +60,13 @@ void nr_pdcp_integrity_nia2_integrity(void *integrity_context, unsigned char *ou uint8_t result[16] = {0}; byte_array_t msg = {.buf = buffer, .len = length}; - cipher_aes_128_cbc_cmac((cbc_cmac_ctx_t*)integrity_context, &k_iv, msg, sizeof(result), result); - //aes_128_cbc_cmac(&k_iv, msg, sizeof(result), result); + cipher_aes_128_cbc_cmac(ctx, &k_iv, msg, sizeof(result), result); - // AES CMAC (RFC 4493) outputs 128 bits but NR PDCP PDUs have a MAC-I of - // 32 bits (see 38.323 6.2). RFC 4493 2.1 says to truncate most significant - // bit first (so seems to say 33.401 B.2.3) - // Precondition: out should have enough space... memcpy(out, result, 4); } -void nr_pdcp_integrity_nia2_free_integrity(void *integrity_context) +void nr_pdcp_integrity_nia2_free_integrity(stream_security_context_t *integrity_context) { - free( ( cbc_cmac_ctx_t*) integrity_context); + free_aes_128_cbc_cmac((cbc_cmac_ctx_t *)integrity_context); + free(integrity_context); } - diff --git a/openair2/LAYER2/nr_pdcp/nr_pdcp_integrity_nia2.h b/openair2/LAYER2/nr_pdcp/nr_pdcp_integrity_nia2.h index 53f117aafb..c9bd6cd881 100644 --- a/openair2/LAYER2/nr_pdcp/nr_pdcp_integrity_nia2.h +++ b/openair2/LAYER2/nr_pdcp/nr_pdcp_integrity_nia2.h @@ -24,13 +24,15 @@ #include -void *nr_pdcp_integrity_nia2_init(uint8_t integrity_key[16]); +#include "openair3/SECU/secu_defs.h" -void nr_pdcp_integrity_nia2_integrity(void *integrity_context, +stream_security_context_t *nr_pdcp_integrity_nia2_init(uint8_t integrity_key[16]); + +void nr_pdcp_integrity_nia2_integrity(stream_security_context_t *integrity_context, unsigned char *out, unsigned char *buffer, int length, int bearer, int count, int direction); -void nr_pdcp_integrity_nia2_free_integrity(void *integrity_context); +void nr_pdcp_integrity_nia2_free_integrity(stream_security_context_t *integrity_context); #endif /* _NR_PDCP_INTEGRITY_NIA2_H_ */ diff --git a/openair2/LAYER2/nr_pdcp/nr_pdcp_security_nea2.c b/openair2/LAYER2/nr_pdcp/nr_pdcp_security_nea2.c index e54b854125..617d5c3372 100644 --- a/openair2/LAYER2/nr_pdcp/nr_pdcp_security_nea2.c +++ b/openair2/LAYER2/nr_pdcp/nr_pdcp_security_nea2.c @@ -29,14 +29,14 @@ #include #include -void *nr_pdcp_security_nea2_init(unsigned char *ciphering_key) +stream_security_context_t *nr_pdcp_security_nea2_init(unsigned char *ciphering_key) { // This is a hack, IMO init, cipher and free functions should be reduced to cipher. // Test show a ~10% more processing time - return ciphering_key; + return (stream_security_context_t *)ciphering_key; } -void nr_pdcp_security_nea2_cipher(void *security_context, unsigned char *buffer, int length, int bearer, int count, int direction) +void nr_pdcp_security_nea2_cipher(stream_security_context_t *security_context, unsigned char *buffer, int length, int bearer, int count, int direction) { DevAssert(security_context != NULL); DevAssert(buffer != NULL); @@ -62,7 +62,7 @@ void nr_pdcp_security_nea2_cipher(void *security_context, unsigned char *buffer, memcpy(buffer, out, length); } -void nr_pdcp_security_nea2_free_security(void *security_context) +void nr_pdcp_security_nea2_free_security(stream_security_context_t *security_context) { (void)security_context; } diff --git a/openair2/LAYER2/nr_pdcp/nr_pdcp_security_nea2.h b/openair2/LAYER2/nr_pdcp/nr_pdcp_security_nea2.h index c3667c93d4..4550e7290d 100644 --- a/openair2/LAYER2/nr_pdcp/nr_pdcp_security_nea2.h +++ b/openair2/LAYER2/nr_pdcp/nr_pdcp_security_nea2.h @@ -22,12 +22,14 @@ #ifndef _NR_PDCP_SECURITY_NEA2_H_ #define _NR_PDCP_SECURITY_NEA2_H_ -void *nr_pdcp_security_nea2_init(unsigned char *ciphering_key); +#include "openair3/SECU/secu_defs.h" -void nr_pdcp_security_nea2_cipher(void *security_context, +stream_security_context_t *nr_pdcp_security_nea2_init(unsigned char *ciphering_key); + +void nr_pdcp_security_nea2_cipher(stream_security_context_t *security_context, unsigned char *buffer, int length, int bearer, int count, int direction); -void nr_pdcp_security_nea2_free_security(void *security_context); +void nr_pdcp_security_nea2_free_security(stream_security_context_t *security_context); #endif /* _NR_PDCP_SECURITY_NEA2_H_ */ diff --git a/openair3/NAS/COMMON/API/NETWORK/nas_message.c b/openair3/NAS/COMMON/API/NETWORK/nas_message.c index 9a7dd8bd89..32454a13e3 100644 --- a/openair3/NAS/COMMON/API/NETWORK/nas_message.c +++ b/openair3/NAS/COMMON/API/NETWORK/nas_message.c @@ -1009,8 +1009,7 @@ static int _nas_message_decrypt( (direction == SECU_DIRECTION_UPLINK) ? "UPLINK":"DOWNLINK", (direction == SECU_DIRECTION_UPLINK) ? emm_security_context->ul_count.seq_num:emm_security_context->dl_count.seq_num, count); - stream_cipher.key = emm_security_context->knas_enc.value; - stream_cipher.key_length = AUTH_KNAS_ENC_SIZE; + stream_cipher.context = emm_security_context->security_container->ciphering_context; stream_cipher.count = count; stream_cipher.bearer = 0x00; //33.401 section 8.1.1 stream_cipher.direction = direction; @@ -1045,8 +1044,7 @@ static int _nas_message_decrypt( (direction == SECU_DIRECTION_UPLINK) ? "UPLINK":"DOWNLINK", (direction == SECU_DIRECTION_UPLINK) ? emm_security_context->ul_count.seq_num:emm_security_context->dl_count.seq_num, count); - stream_cipher.key = emm_security_context->knas_enc.value; - stream_cipher.key_length = AUTH_KNAS_ENC_SIZE; + stream_cipher.context = emm_security_context->security_container->ciphering_context; stream_cipher.count = count; stream_cipher.bearer = 0x00; //33.401 section 8.1.1 stream_cipher.direction = direction; @@ -1178,8 +1176,7 @@ static int _nas_message_encrypt( (direction == SECU_DIRECTION_UPLINK) ? "UPLINK":"DOWNLINK", (direction == SECU_DIRECTION_UPLINK) ? emm_security_context->ul_count.seq_num:emm_security_context->dl_count.seq_num, count); - stream_cipher.key = emm_security_context->knas_enc.value; - stream_cipher.key_length = AUTH_KNAS_ENC_SIZE; + stream_cipher.context = emm_security_context->security_container->ciphering_context; stream_cipher.count = count; stream_cipher.bearer = 0x00; //33.401 section 8.1.1 stream_cipher.direction = direction; @@ -1208,8 +1205,7 @@ static int _nas_message_encrypt( (direction == SECU_DIRECTION_UPLINK) ? "UPLINK":"DOWNLINK", (direction == SECU_DIRECTION_UPLINK) ? emm_security_context->ul_count.seq_num:emm_security_context->dl_count.seq_num, count); - stream_cipher.key = emm_security_context->knas_enc.value; - stream_cipher.key_length = AUTH_KNAS_ENC_SIZE; + stream_cipher.context = emm_security_context->security_container->ciphering_context; stream_cipher.count = count; stream_cipher.bearer = 0x00; //33.401 section 8.1.1 stream_cipher.direction = direction; @@ -1347,8 +1343,7 @@ static uint32_t _nas_message_get_mac( fflush(stderr); #endif - stream_cipher.key = emm_security_context->knas_int.value; - stream_cipher.key_length = AUTH_KNAS_INT_SIZE; + stream_cipher.context = emm_security_context->security_container->integrity_context; stream_cipher.count = count; stream_cipher.bearer = 0x00; //33.401 section 8.1.1 stream_cipher.direction = direction; @@ -1391,8 +1386,7 @@ static uint32_t _nas_message_get_mac( (direction == SECU_DIRECTION_UPLINK) ? emm_security_context->ul_count.seq_num:emm_security_context->dl_count.seq_num, count); - stream_cipher.key = emm_security_context->knas_int.value; - stream_cipher.key_length = AUTH_KNAS_INT_SIZE; + stream_cipher.context = emm_security_context->security_container->integrity_context; stream_cipher.count = count; stream_cipher.bearer = 0x00; //33.401 section 8.1.1 stream_cipher.direction = direction; diff --git a/openair3/NAS/NR_UE/nr_nas_msg_sim.c b/openair3/NAS/NR_UE/nr_nas_msg_sim.c index 57c3e1df58..ae6587df8d 100644 --- a/openair3/NAS/NR_UE/nr_nas_msg_sim.c +++ b/openair3/NAS/NR_UE/nr_nas_msg_sim.c @@ -515,6 +515,10 @@ void generateIdentityResponse(as_nas_info_t *initialNasMsg, uint8_t identitytype static void generateAuthenticationResp(nr_ue_nas_t *nas, as_nas_info_t *initialNasMsg, uint8_t *buf) { derive_ue_keys(buf, nas); + /* todo: as of now, nia2 is hardcoded in derive_ue_keys(), remove this hardcoding, use NAS signalling for getting proper algorithm */ + /* todo: deal with ciphering for this stream_security_container_create() (handle ciphering in general) */ + /* todo: stream_security_container_delete() is not called anywhere, deal with that */ + nas->security_container = stream_security_container_create(0, 2 /* hardcoded: nia2 */, NULL, nas->security.knas_int); OctetString res; res.length = 16; res.value = calloc(1,16); @@ -598,8 +602,7 @@ static void generateSecurityModeComplete(nr_ue_nas_t *nas, as_nas_info_t *initia initialNasMsg->length = security_header_len + mm_msg_encode(mm_msg, (uint8_t*)(initialNasMsg->data+security_header_len), size-security_header_len); - stream_cipher.key = nas->security.knas_int; - stream_cipher.key_length = 16; + stream_cipher.context = nas->security_container->integrity_context; stream_cipher.count = nas->security.mm_counter++; stream_cipher.bearer = 1; stream_cipher.direction = 0; @@ -701,8 +704,7 @@ static void generateRegistrationComplete(nr_ue_nas_t *nas, as_nas_info_t *initia } initialNasMsg->length = length; - stream_cipher.key = nas->security.knas_int; - stream_cipher.key_length = 16; + stream_cipher.context = nas->security_container->integrity_context; stream_cipher.count = nas->security.mm_counter++; stream_cipher.bearer = 1; stream_cipher.direction = 0; @@ -764,8 +766,7 @@ static void generateDeregistrationRequest(nr_ue_nas_t *nas, as_nas_info_t *initi initialNasMsg->length = security_header_len + mm_msg_encode(&sp_msg->plain.mm_msg, (uint8_t *)(initialNasMsg->data + security_header_len), size - security_header_len); nas_stream_cipher_t stream_cipher = { - .key = nas->security.knas_int, - .key_length = 16, + .context = nas->security_container->integrity_context, .count = nas->security.mm_counter++, .bearer = 1, .direction = 0, @@ -857,8 +858,7 @@ static void generatePduSessionEstablishRequest(nr_ue_nas_t *nas, as_nas_info_t * initialNasMsg->length = security_header_len + mm_msg_encode(mm_msg, (uint8_t*)(initialNasMsg->data+security_header_len), size-security_header_len); - stream_cipher.key = nas->security.knas_int; - stream_cipher.key_length = 16; + stream_cipher.context = nas->security_container->integrity_context; stream_cipher.count = nas->security.mm_counter++; stream_cipher.bearer = 1; stream_cipher.direction = 0; diff --git a/openair3/NAS/NR_UE/nr_nas_msg_sim.h b/openair3/NAS/NR_UE/nr_nas_msg_sim.h index a892bf1b4b..0d2d8f5cc9 100644 --- a/openair3/NAS/NR_UE/nr_nas_msg_sim.h +++ b/openair3/NAS/NR_UE/nr_nas_msg_sim.h @@ -41,6 +41,7 @@ #include "as_message.h" #include "FGSUplinkNasTransport.h" #include +#include "secu_defs.h" #define PLAIN_5GS_MSG 0b0000 #define INTEGRITY_PROTECTED 0b0001 @@ -98,6 +99,7 @@ typedef struct { typedef struct { uicc_t *uicc; ue_sa_security_key_t security; + stream_security_container_t *security_container; Guti5GSMobileIdentity_t *guti; bool termination_procedure; } nr_ue_nas_t; diff --git a/openair3/NAS/UE/EMM/SecurityModeControl.c b/openair3/NAS/UE/EMM/SecurityModeControl.c index 3386499663..a068b65d68 100644 --- a/openair3/NAS/UE/EMM/SecurityModeControl.c +++ b/openair3/NAS/UE/EMM/SecurityModeControl.c @@ -258,6 +258,7 @@ int emm_proc_security_mode_command(nas_user_t *user, int native_ksi, int ksi, LOG_TRACE(INFO, "EMM-PROC - Update Current security context"); /* Release non-current security context */ + stream_security_container_delete(user->emm_data->security->security_container); _security_release(user->emm_data->security); user->emm_data->security = user->emm_data->non_current; /* Reset the uplink NAS COUNT counter */ @@ -265,6 +266,12 @@ int emm_proc_security_mode_command(nas_user_t *user, int native_ksi, int ksi, user->emm_data->security->ul_count.seq_num = 0; /* Set new security context indicator */ security_context_is_new = true; + /* create contexts */ + user->emm_data->security->security_container = stream_security_container_create( + seea, + seia, + user->emm_data->non_current->knas_enc.value, + user->emm_data->non_current->knas_int.value); } } diff --git a/openair3/NAS/UE/EMM/emmData.h b/openair3/NAS/UE/EMM/emmData.h index 50219b7883..d90820edf9 100644 --- a/openair3/NAS/UE/EMM/emmData.h +++ b/openair3/NAS/UE/EMM/emmData.h @@ -42,6 +42,7 @@ Description Defines internal private data handled by EPS Mobility #include "commonDef.h" #include "networkDef.h" #include "securityDef.h" +#include "openair3/SECU/secu_defs.h" #include "OctetString.h" #include "nas_timer.h" @@ -138,6 +139,7 @@ typedef struct emm_security_context_s { //OctetString ksgsn; /* SGSN security key (mapped context) */ OctetString knas_enc; /* NAS cyphering key */ OctetString knas_int; /* NAS integrity key */ + stream_security_container_t *security_container; /* container for NAS security */ struct count_s{ uint32_t spare:8; uint32_t overflow:16; diff --git a/openair3/SECU/aes_128_cbc_cmac.c b/openair3/SECU/aes_128_cbc_cmac.c index da925f6d1e..6d50cb693a 100644 --- a/openair3/SECU/aes_128_cbc_cmac.c +++ b/openair3/SECU/aes_128_cbc_cmac.c @@ -31,101 +31,56 @@ // code for version 3.0 or greater #include -static -const char *propq = NULL; - -void aes_128_cbc_cmac(const aes_128_t* k_iv, byte_array_t msg, size_t len_out, uint8_t out[len_out]) -{ - OSSL_LIB_CTX* library_context = OSSL_LIB_CTX_new(); - DevAssert(library_context != NULL); - - /* Fetch the CMAC implementation */ - EVP_MAC* mac = EVP_MAC_fetch(library_context, "CMAC", propq); - DevAssert(mac != NULL); - - /* Create a context for the CMAC operation */ - EVP_MAC_CTX* mctx = EVP_MAC_CTX_new(mac); - DevAssert(mctx != NULL); - - // The underlying cipher to be used - char cipher_name[] = "aes128"; - - OSSL_PARAM params[2] = {0}; - params[0] = OSSL_PARAM_construct_utf8_string(OSSL_MAC_PARAM_CIPHER, cipher_name, - sizeof(cipher_name)); - params[1] = OSSL_PARAM_construct_end(); - - /* Initialise the CMAC operation */ - int rc = EVP_MAC_init(mctx, k_iv->key, sizeof(k_iv->key), params); - DevAssert(rc != 0); - - size_t sz_iv = 0; - uint8_t* iv = NULL; - if(k_iv->type == AES_INITIALIZATION_VECTOR_8){ - sz_iv = 8; - iv = (uint8_t*)k_iv->iv8.iv; - } else if(k_iv->type == AES_INITIALIZATION_VECTOR_16) { - sz_iv = 16; - iv = (uint8_t*)k_iv->iv16.iv; - } else { - DevAssert(0!=0 && "Unknwon Initialization vector"); - } - - /* Make one or more calls to process the data to be authenticated */ - rc = EVP_MAC_update(mctx, iv, sz_iv); - DevAssert(rc != 0); - - /* Make one or more calls to process the data to be authenticated */ - rc = EVP_MAC_update(mctx, msg.buf, msg.len); - DevAssert(rc != 0); - - /* Make a call to the final with a NULL buffer to get the length of the MAC */ - size_t out_len = 0; - rc = EVP_MAC_final(mctx, out, &out_len, len_out); - DevAssert(rc != 0); - - EVP_MAC_CTX_free(mctx); - EVP_MAC_free(mac); - OSSL_LIB_CTX_free(library_context); -} - -cbc_cmac_ctx_t init_aes_128_cbc_cmac(uint8_t key[16]) +cbc_cmac_ctx_t init_aes_128_cbc_cmac(const uint8_t key[16]) { DevAssert(key != NULL); - OSSL_LIB_CTX* library_context = OSSL_LIB_CTX_new(); - DevAssert(library_context != NULL); - /* Fetch the CMAC implementation */ - EVP_MAC* mac = EVP_MAC_fetch(library_context, "CMAC", propq); + EVP_MAC *mac_implementation = EVP_MAC_fetch(NULL, "CMAC", NULL); + DevAssert(mac_implementation != NULL); + + /* Create a context for the CMAC operation */ + EVP_MAC_CTX* mac = EVP_MAC_CTX_new(mac_implementation); DevAssert(mac != NULL); - cbc_cmac_ctx_t ctx = {.lib_ctx = library_context, .mac = mac }; - - assert(16 == sizeof(ctx.key)); + cbc_cmac_ctx_t ctx = { .lib_ctx = mac_implementation, .mac = mac }; memcpy(ctx.key, key, 16); - return ctx; + // The underlying cipher to be used + char cipher_name[] = "aes128"; + + OSSL_PARAM params[2] = {0}; + params[0] = OSSL_PARAM_construct_utf8_string(OSSL_MAC_PARAM_CIPHER, cipher_name, + sizeof(cipher_name)); + params[1] = OSSL_PARAM_construct_end(); + + /* Initialise the CMAC operation */ + int rc = EVP_MAC_init(mac, key, 16, params); + DevAssert(rc != 0); + + return ctx; } void cipher_aes_128_cbc_cmac(cbc_cmac_ctx_t const* ctx, const aes_128_t* k_iv, byte_array_t msg, size_t len_out, uint8_t out[len_out]) { DevAssert(ctx != NULL); DevAssert(k_iv != NULL); - /* Create a context for the CMAC operation */ - EVP_MAC_CTX* mctx = EVP_MAC_CTX_new(ctx->mac); - DevAssert(mctx != NULL); - // The underlying cipher to be used - char cipher_name[] = "aes128"; - - OSSL_PARAM params[2] = {0}; - params[0] = OSSL_PARAM_construct_utf8_string(OSSL_MAC_PARAM_CIPHER, cipher_name, - sizeof(cipher_name)); - params[1] = OSSL_PARAM_construct_end(); - - /* Initialise the CMAC operation */ - int rc = EVP_MAC_init(mctx, k_iv->key, sizeof(k_iv->key), params); + /* reset the CMAC */ + /* There is a bug with version <= 3.0.2 of OpenSSL for which we must + * pass the key to reset. (Some Ubuntu version provide this version.) + * Passing the key has some impact on performance. + * todo: drop support for old versions of openssl. + */ +#if OPENSSL_VERSION_NUMBER <= 0x30000020 + /* todo: when/if we remove this code, don't forget to check use of k_iv->key + * somewhere else in the codebase. + * If not used, remove from aes_128_t* + */ + int rc = EVP_MAC_init(ctx->mac, k_iv->key, 16, NULL); +#else + int rc = EVP_MAC_init(ctx->mac, NULL, 0, NULL); +#endif DevAssert(rc != 0); size_t sz_iv = 0; @@ -141,66 +96,33 @@ void cipher_aes_128_cbc_cmac(cbc_cmac_ctx_t const* ctx, const aes_128_t* k_iv, b } /* Make one or more calls to process the data to be authenticated */ - rc = EVP_MAC_update(mctx, iv, sz_iv); + rc = EVP_MAC_update(ctx->mac, iv, sz_iv); DevAssert(rc != 0); /* Make one or more calls to process the data to be authenticated */ - rc = EVP_MAC_update(mctx, msg.buf, msg.len); + rc = EVP_MAC_update(ctx->mac, msg.buf, msg.len); DevAssert(rc != 0); /* Make a call to the final with a NULL buffer to get the length of the MAC */ size_t out_len = 0; - rc = EVP_MAC_final(mctx, out, &out_len, len_out); + rc = EVP_MAC_final(ctx->mac, out, &out_len, len_out); DevAssert(rc != 0); - - EVP_MAC_CTX_free(mctx); } void free_aes_128_cbc_cmac(cbc_cmac_ctx_t const* ctx) { DevAssert(ctx != NULL); - EVP_MAC_free(ctx->mac); - OSSL_LIB_CTX_free(ctx->lib_ctx); + EVP_MAC_CTX_free(ctx->mac); + EVP_MAC_free(ctx->lib_ctx); } #else // code for 1.1.x or lower -void aes_128_cbc_cmac(const aes_128_t* k_iv, byte_array_t msg, size_t len_out, uint8_t out[len_out]) -{ - DevAssert(k_iv != NULL); - - CMAC_CTX *ctx = CMAC_CTX_new(); - DevAssert(ctx != NULL); - - CMAC_Init(ctx, k_iv->key, sizeof(k_iv->key), EVP_aes_128_cbc(), NULL); - - size_t sz_iv = 0; - uint8_t* iv = NULL; - if(k_iv->type == AES_INITIALIZATION_VECTOR_8){ - sz_iv = 8; - iv = (uint8_t*)k_iv->iv8.iv; - } else if(k_iv->type == AES_INITIALIZATION_VECTOR_16) { - sz_iv = 16; - iv = (uint8_t*)k_iv->iv16.iv; - } else { - AssertFatal(0 != 0, "Unknwon Initialization vector"); - } - - CMAC_Update(ctx, iv, sz_iv); - - CMAC_Update(ctx, msg.buf, msg.len); - size_t len_res = 0; - CMAC_Final(ctx, out, &len_res); - DevAssert(len_res <= len_out); - - CMAC_CTX_free(ctx); -} - -cbc_cmac_ctx_t init_aes_128_cbc_cmac(uint8_t key[16]) +cbc_cmac_ctx_t init_aes_128_cbc_cmac(const uint8_t key[16]) { DevAssert(key != NULL); - cbc_cmac_ctx_t ctx = {.lib_ctx = NULL, .mac = NULL }; + cbc_cmac_ctx_t ctx = {.lib_ctx = NULL, .mac = NULL }; ctx.mac = CMAC_CTX_new(); DevAssert(ctx.mac != NULL); @@ -218,9 +140,9 @@ void cipher_aes_128_cbc_cmac(cbc_cmac_ctx_t const* ctx, const aes_128_t* k_iv, b DevAssert(k_iv != NULL); //From https://man.openbsd.org/CMAC_Init.3 - //If ctx is already initialized, CMAC_Init() can be called again with key, - //cipher, and impl all set to NULL and key_len set to 0. In that case, any - //data already processed is discarded and ctx is re-initialized to start + //If ctx is already initialized, CMAC_Init() can be called again with key, + //cipher, and impl all set to NULL and key_len set to 0. In that case, any + //data already processed is discarded and ctx is re-initialized to start //reading data anew. CMAC_Init(ctx->mac, NULL, 0, NULL, NULL); @@ -251,4 +173,3 @@ void free_aes_128_cbc_cmac(cbc_cmac_ctx_t const* ctx) } #endif - diff --git a/openair3/SECU/aes_128_cbc_cmac.h b/openair3/SECU/aes_128_cbc_cmac.h index b5118118c3..de3b664dd7 100644 --- a/openair3/SECU/aes_128_cbc_cmac.h +++ b/openair3/SECU/aes_128_cbc_cmac.h @@ -36,12 +36,8 @@ typedef struct { uint8_t key[16]; } cbc_cmac_ctx_t ; -void aes_128_cbc_cmac(const aes_128_t* k_iv, byte_array_t msg, size_t len_out, uint8_t out[len_out]); - -cbc_cmac_ctx_t init_aes_128_cbc_cmac(uint8_t key[16]); - +cbc_cmac_ctx_t init_aes_128_cbc_cmac(const uint8_t key[16]); void cipher_aes_128_cbc_cmac(cbc_cmac_ctx_t const* ctx, const aes_128_t* k_iv, byte_array_t msg, size_t len_out, uint8_t out[len_out]); - void free_aes_128_cbc_cmac(cbc_cmac_ctx_t const* ctx); #endif diff --git a/openair3/SECU/nas_stream_eea1.c b/openair3/SECU/nas_stream_eea1.c index a4e4b84ca4..027205353b 100644 --- a/openair3/SECU/nas_stream_eea1.c +++ b/openair3/SECU/nas_stream_eea1.c @@ -38,10 +38,9 @@ void nas_stream_encrypt_eea1(nas_stream_cipher_t const *stream_cipher, uint8_t * //uint32_t byte_length; uint32_t *KS; uint32_t K[4],IV[4]; + uint8_t *key = (uint8_t *)stream_cipher->context; DevAssert(stream_cipher != NULL); - DevAssert(stream_cipher->key != NULL); - DevAssert(stream_cipher->key_length == 16); DevAssert(out != NULL); n = ( stream_cipher->blength + 31 ) / 32; @@ -50,22 +49,20 @@ void nas_stream_encrypt_eea1(nas_stream_cipher_t const *stream_cipher, uint8_t * memset(&snow_3g_context, 0, sizeof(snow_3g_context)); /*Initialisation*/ - /* Load the confidentiality key for SNOW 3G initialization as in section - 3.4. */ - memcpy(K+3,stream_cipher->key+0,4); /*K[3] = key[0]; we assume + /* Load the confidentiality key for SNOW 3G initialization as in section 3.4. */ + memcpy(K+3,key+0,4); /*K[3] = key[0]; we assume K[3]=key[0]||key[1]||...||key[31] , with key[0] the * most important bit of key*/ - memcpy(K+2,stream_cipher->key+4,4); /*K[2] = key[1];*/ - memcpy(K+1,stream_cipher->key+8,4); /*K[1] = key[2];*/ - memcpy(K+0,stream_cipher->key+12,4); /*K[0] = key[3]; we assume - K[0]=key[96]||key[97]||...||key[127] , with key[127] the - * least important bit of key*/ + memcpy(K+2,key+4,4); /*K[2] = key[1];*/ + memcpy(K+1,key+8,4); /*K[1] = key[2];*/ + memcpy(K+0,key+12,4); /*K[0] = key[3]; we assume + * K[0]=key[96]||key[97]||...||key[127] , with key[127] the + * least important bit of key*/ K[3] = hton_int32(K[3]); K[2] = hton_int32(K[2]); K[1] = hton_int32(K[1]); K[0] = hton_int32(K[0]); - /* Prepare the initialization vector (IV) for SNOW 3G initialization as in - section 3.4. */ + /* Prepare the initialization vector (IV) for SNOW 3G initialization as in section 3.4. */ IV[3] = stream_cipher->count; IV[2] = ((((uint32_t)stream_cipher->bearer) << 3) | ((((uint32_t)stream_cipher->direction) & 0x1) << 2)) << 24; IV[1] = IV[3]; @@ -104,3 +101,16 @@ void nas_stream_encrypt_eea1(nas_stream_cipher_t const *stream_cipher, uint8_t * out[ceil_index - 1] = stream_cipher->message[ceil_index - 1]; } } + +stream_security_context_t *stream_ciphering_init_eea1(const uint8_t *ciphering_key) +{ + void *ret = calloc(1, 16); + AssertFatal(ret != NULL, "out of memory\n"); + memcpy(ret, ciphering_key, 16); + return (stream_security_context_t *)ret; +} + +void stream_ciphering_free_eea1(stream_security_context_t *ciphering_context) +{ + free(ciphering_context); +} diff --git a/openair3/SECU/nas_stream_eea1.h b/openair3/SECU/nas_stream_eea1.h index d713dc60d3..ebddd7af35 100644 --- a/openair3/SECU/nas_stream_eea1.h +++ b/openair3/SECU/nas_stream_eea1.h @@ -29,4 +29,7 @@ void nas_stream_encrypt_eea1(nas_stream_cipher_t const *stream_cipher, uint8_t *out); +stream_security_context_t *stream_ciphering_init_eea1(const uint8_t *ciphering_key); +void stream_ciphering_free_eea1(stream_security_context_t *ciphering_context); + #endif diff --git a/openair3/SECU/nas_stream_eea2.c b/openair3/SECU/nas_stream_eea2.c index dbdc040883..6600afaace 100644 --- a/openair3/SECU/nas_stream_eea2.c +++ b/openair3/SECU/nas_stream_eea2.c @@ -33,15 +33,13 @@ void nas_stream_encrypt_eea2(nas_stream_cipher_t const *stream_cipher, uint8_t *out) { DevAssert(stream_cipher != NULL); - DevAssert(stream_cipher->key != NULL); - DevAssert(stream_cipher->key_length == 32); DevAssert(stream_cipher->bearer < 32); DevAssert(stream_cipher->direction < 2); DevAssert(stream_cipher->message != NULL); DevAssert(stream_cipher->blength > 7); aes_128_t p = {0}; - memcpy(p.key, stream_cipher->key, stream_cipher->key_length); + memcpy(p.key, stream_cipher->context, 16); p.type = AES_INITIALIZATION_VECTOR_16; p.iv16.d.count = htonl(stream_cipher->count); p.iv16.d.bearer = stream_cipher->bearer; @@ -54,3 +52,16 @@ void nas_stream_encrypt_eea2(nas_stream_cipher_t const *stream_cipher, uint8_t * byte_array_t msg = {.buf = stream_cipher->message, .len = byte_lenght}; aes_128_ctr(&p, msg, len_out, out); } + +stream_security_context_t *stream_ciphering_init_eea2(const uint8_t *ciphering_key) +{ + void *ret = calloc(1, 16); + AssertFatal(ret != NULL, "out of memory\n"); + memcpy(ret, ciphering_key, 16); + return (stream_security_context_t *)ret; +} + +void stream_ciphering_free_eea2(stream_security_context_t *ciphering_context) +{ + free(ciphering_context); +} diff --git a/openair3/SECU/nas_stream_eea2.h b/openair3/SECU/nas_stream_eea2.h index c6133c987d..f64fff6c4d 100644 --- a/openair3/SECU/nas_stream_eea2.h +++ b/openair3/SECU/nas_stream_eea2.h @@ -26,40 +26,9 @@ #include "secu_defs.h" #include -/* Rijndael S-box OSA_SR */ - -static const uint8_t OSA_SR[256] = { - 0x63, 0x7C, 0x77, 0x7B, 0xF2, 0x6B, 0x6F, 0xC5, 0x30, 0x01, 0x67, 0x2B, 0xFE, 0xD7, 0xAB, 0x76, 0xCA, 0x82, 0xC9, 0x7D, - 0xFA, 0x59, 0x47, 0xF0, 0xAD, 0xD4, 0xA2, 0xAF, 0x9C, 0xA4, 0x72, 0xC0, 0xB7, 0xFD, 0x93, 0x26, 0x36, 0x3F, 0xF7, 0xCC, - 0x34, 0xA5, 0xE5, 0xF1, 0x71, 0xD8, 0x31, 0x15, 0x04, 0xC7, 0x23, 0xC3, 0x18, 0x96, 0x05, 0x9A, 0x07, 0x12, 0x80, 0xE2, - 0xEB, 0x27, 0xB2, 0x75, 0x09, 0x83, 0x2C, 0x1A, 0x1B, 0x6E, 0x5A, 0xA0, 0x52, 0x3B, 0xD6, 0xB3, 0x29, 0xE3, 0x2F, 0x84, - 0x53, 0xD1, 0x00, 0xED, 0x20, 0xFC, 0xB1, 0x5B, 0x6A, 0xCB, 0xBE, 0x39, 0x4A, 0x4C, 0x58, 0xCF, 0xD0, 0xEF, 0xAA, 0xFB, - 0x43, 0x4D, 0x33, 0x85, 0x45, 0xF9, 0x02, 0x7F, 0x50, 0x3C, 0x9F, 0xA8, 0x51, 0xA3, 0x40, 0x8F, 0x92, 0x9D, 0x38, 0xF5, - 0xBC, 0xB6, 0xDA, 0x21, 0x10, 0xFF, 0xF3, 0xD2, 0xCD, 0x0C, 0x13, 0xEC, 0x5F, 0x97, 0x44, 0x17, 0xC4, 0xA7, 0x7E, 0x3D, - 0x64, 0x5D, 0x19, 0x73, 0x60, 0x81, 0x4F, 0xDC, 0x22, 0x2A, 0x90, 0x88, 0x46, 0xEE, 0xB8, 0x14, 0xDE, 0x5E, 0x0B, 0xDB, - 0xE0, 0x32, 0x3A, 0x0A, 0x49, 0x06, 0x24, 0x5C, 0xC2, 0xD3, 0xAC, 0x62, 0x91, 0x95, 0xE4, 0x79, 0xE7, 0xC8, 0x37, 0x6D, - 0x8D, 0xD5, 0x4E, 0xA9, 0x6C, 0x56, 0xF4, 0xEA, 0x65, 0x7A, 0xAE, 0x08, 0xBA, 0x78, 0x25, 0x2E, 0x1C, 0xA6, 0xB4, 0xC6, - 0xE8, 0xDD, 0x74, 0x1F, 0x4B, 0xBD, 0x8B, 0x8A, 0x70, 0x3E, 0xB5, 0x66, 0x48, 0x03, 0xF6, 0x0E, 0x61, 0x35, 0x57, 0xB9, - 0x86, 0xC1, 0x1D, 0x9E, 0xE1, 0xF8, 0x98, 0x11, 0x69, 0xD9, 0x8E, 0x94, 0x9B, 0x1E, 0x87, 0xE9, 0xCE, 0x55, 0x28, 0xDF, - 0x8C, 0xA1, 0x89, 0x0D, 0xBF, 0xE6, 0x42, 0x68, 0x41, 0x99, 0x2D, 0x0F, 0xB0, 0x54, 0xBB, 0x16}; - -/* S-box OSA_SQ */ - -static const uint8_t OSA_SQ[256] = { - 0x25, 0x24, 0x73, 0x67, 0xD7, 0xAE, 0x5C, 0x30, 0xA4, 0xEE, 0x6E, 0xCB, 0x7D, 0xB5, 0x82, 0xDB, 0xE4, 0x8E, 0x48, 0x49, - 0x4F, 0x5D, 0x6A, 0x78, 0x70, 0x88, 0xE8, 0x5F, 0x5E, 0x84, 0x65, 0xE2, 0xD8, 0xE9, 0xCC, 0xED, 0x40, 0x2F, 0x11, 0x28, - 0x57, 0xD2, 0xAC, 0xE3, 0x4A, 0x15, 0x1B, 0xB9, 0xB2, 0x80, 0x85, 0xA6, 0x2E, 0x02, 0x47, 0x29, 0x07, 0x4B, 0x0E, 0xC1, - 0x51, 0xAA, 0x89, 0xD4, 0xCA, 0x01, 0x46, 0xB3, 0xEF, 0xDD, 0x44, 0x7B, 0xC2, 0x7F, 0xBE, 0xC3, 0x9F, 0x20, 0x4C, 0x64, - 0x83, 0xA2, 0x68, 0x42, 0x13, 0xB4, 0x41, 0xCD, 0xBA, 0xC6, 0xBB, 0x6D, 0x4D, 0x71, 0x21, 0xF4, 0x8D, 0xB0, 0xE5, 0x93, - 0xFE, 0x8F, 0xE6, 0xCF, 0x43, 0x45, 0x31, 0x22, 0x37, 0x36, 0x96, 0xFA, 0xBC, 0x0F, 0x08, 0x52, 0x1D, 0x55, 0x1A, 0xC5, - 0x4E, 0x23, 0x69, 0x7A, 0x92, 0xFF, 0x5B, 0x5A, 0xEB, 0x9A, 0x1C, 0xA9, 0xD1, 0x7E, 0x0D, 0xFC, 0x50, 0x8A, 0xB6, 0x62, - 0xF5, 0x0A, 0xF8, 0xDC, 0x03, 0x3C, 0x0C, 0x39, 0xF1, 0xB8, 0xF3, 0x3D, 0xF2, 0xD5, 0x97, 0x66, 0x81, 0x32, 0xA0, 0x00, - 0x06, 0xCE, 0xF6, 0xEA, 0xB7, 0x17, 0xF7, 0x8C, 0x79, 0xD6, 0xA7, 0xBF, 0x8B, 0x3F, 0x1F, 0x53, 0x63, 0x75, 0x35, 0x2C, - 0x60, 0xFD, 0x27, 0xD3, 0x94, 0xA5, 0x7C, 0xA1, 0x05, 0x58, 0x2D, 0xBD, 0xD9, 0xC7, 0xAF, 0x6B, 0x54, 0x0B, 0xE0, 0x38, - 0x04, 0xC8, 0x9D, 0xE7, 0x14, 0xB1, 0x87, 0x9C, 0xDF, 0x6F, 0xF9, 0xDA, 0x2A, 0xC4, 0x59, 0x16, 0x74, 0x91, 0xAB, 0x26, - 0x61, 0x76, 0x34, 0x2B, 0xAD, 0x99, 0xFB, 0x72, 0xEC, 0x33, 0x12, 0xDE, 0x98, 0x3B, 0xC0, 0x9B, 0x3E, 0x18, 0x10, 0x3A, - 0x56, 0xE1, 0x77, 0xC9, 0x1E, 0x9E, 0x95, 0xA3, 0x90, 0x19, 0xA8, 0x6C, 0x09, 0xD0, 0xF0, 0x86}; - void nas_stream_encrypt_eea2(nas_stream_cipher_t const *stream_cipher, uint8_t *out); +stream_security_context_t *stream_ciphering_init_eea2(const uint8_t *ciphering_key); +void stream_ciphering_free_eea2(stream_security_context_t *ciphering_context); + #endif diff --git a/openair3/SECU/nas_stream_eia1.c b/openair3/SECU/nas_stream_eia1.c index f080db7aac..c648ee585f 100644 --- a/openair3/SECU/nas_stream_eia1.c +++ b/openair3/SECU/nas_stream_eia1.c @@ -126,16 +126,17 @@ void nas_stream_encrypt_eia1(nas_stream_cipher_t const *stream_cipher, uint8_t o uint64_t M_D_2; int rem_bits; uint32_t mask = 0; - uint32_t *message; + uint32_t *message; + uint8_t *key = (uint8_t *)stream_cipher->context; message = (uint32_t*)stream_cipher->message; /* To operate 32 bit message internally. */ /* Load the Integrity Key for SNOW3G initialization as in section 4.4. */ - memcpy(K+3,stream_cipher->key+0,4); /*K[3] = key[0]; we assume + memcpy(K+3,key+0,4); /*K[3] = key[0]; we assume K[3]=key[0]||key[1]||...||key[31] , with key[0] the * most important bit of key*/ - memcpy(K+2,stream_cipher->key+4,4); /*K[2] = key[1];*/ - memcpy(K+1,stream_cipher->key+8,4); /*K[1] = key[2];*/ - memcpy(K+0,stream_cipher->key+12,4); /*K[0] = key[3]; we assume + memcpy(K+2,key+4,4); /*K[2] = key[1];*/ + memcpy(K+1,key+8,4); /*K[1] = key[2];*/ + memcpy(K+0,key+12,4); /*K[0] = key[3]; we assume K[0]=key[96]||key[97]||...||key[127] , with key[127] the * least important bit of key*/ K[3] = hton_int32(K[3]); @@ -213,3 +214,16 @@ void nas_stream_encrypt_eia1(nas_stream_cipher_t const *stream_cipher, uint8_t o MAC_I = hton_int32(MAC_I); memcpy(out, &MAC_I, 4); } + +stream_security_context_t *stream_integrity_init_eia1(const uint8_t *integrity_key) +{ + void *ret = calloc(1, 16); + AssertFatal(ret != NULL, "out of memory\n"); + memcpy(ret, integrity_key, 16); + return (stream_security_context_t *)ret; +} + +void stream_integrity_free_eia1(stream_security_context_t *integrity_context) +{ + free(integrity_context); +} diff --git a/openair3/SECU/nas_stream_eia1.h b/openair3/SECU/nas_stream_eia1.h index 58a7f8be99..a385781035 100644 --- a/openair3/SECU/nas_stream_eia1.h +++ b/openair3/SECU/nas_stream_eia1.h @@ -26,4 +26,7 @@ void nas_stream_encrypt_eia1(nas_stream_cipher_t const* stream_cipher, uint8_t out[4]); +stream_security_context_t *stream_integrity_init_eia1(const uint8_t *integrity_key); +void stream_integrity_free_eia1(stream_security_context_t *integrity_context); + #endif diff --git a/openair3/SECU/nas_stream_eia2.c b/openair3/SECU/nas_stream_eia2.c index 2655c8ad81..073592ec6e 100644 --- a/openair3/SECU/nas_stream_eia2.c +++ b/openair3/SECU/nas_stream_eia2.c @@ -45,11 +45,11 @@ void nas_stream_encrypt_eia2(nas_stream_cipher_t const *stream_cipher, uint8_t o DevAssert(stream_cipher != NULL); DevAssert(stream_cipher->message != NULL); DevAssert(stream_cipher->bearer < 32); - DevAssert(stream_cipher->key_length == 16); DevAssert((stream_cipher->blength & 0x7) == 0); + cbc_cmac_ctx_t *ctx = (cbc_cmac_ctx_t *)stream_cipher->context; aes_128_t k_iv = {0}; - memcpy(k_iv.key, stream_cipher->key, sizeof(k_iv.key)); + memcpy(&k_iv.key, ctx->key, 16); k_iv.type = AES_INITIALIZATION_VECTOR_8; k_iv.iv8.d.bearer = stream_cipher->bearer; k_iv.iv8.d.direction = stream_cipher->direction; @@ -58,8 +58,21 @@ void nas_stream_encrypt_eia2(nas_stream_cipher_t const *stream_cipher, uint8_t o size_t const m_length = stream_cipher->blength >> 3; uint8_t result[16] = {0}; byte_array_t msg = {.buf = stream_cipher->message, .len = m_length }; - aes_128_cbc_cmac(&k_iv, msg, sizeof(result), result); + cipher_aes_128_cbc_cmac((cbc_cmac_ctx_t *)stream_cipher->context, &k_iv, msg, sizeof(result), result); memcpy(out, result, 4); } +stream_security_context_t *stream_integrity_init_eia2(const uint8_t *integrity_key) +{ + cbc_cmac_ctx_t *ret = calloc(1, sizeof(cbc_cmac_ctx_t)); + AssertFatal(ret != NULL, "out of memory\n"); + *ret = init_aes_128_cbc_cmac(integrity_key); + return (stream_security_context_t *)ret; +} + +void stream_integrity_free_eia2(stream_security_context_t *integrity_context) +{ + free_aes_128_cbc_cmac((cbc_cmac_ctx_t *)integrity_context); + free(integrity_context); +} diff --git a/openair3/SECU/nas_stream_eia2.h b/openair3/SECU/nas_stream_eia2.h index 1349408fb7..b3da1d14a4 100644 --- a/openair3/SECU/nas_stream_eia2.h +++ b/openair3/SECU/nas_stream_eia2.h @@ -26,4 +26,7 @@ void nas_stream_encrypt_eia2(nas_stream_cipher_t const* stream_cipher, uint8_t out[4]); +stream_security_context_t *stream_integrity_init_eia2(const uint8_t *integrity_key); +void stream_integrity_free_eia2(stream_security_context_t *integrity_context); + #endif diff --git a/openair3/SECU/secu_defs.c b/openair3/SECU/secu_defs.c index 58a8754bad..47dc3affc4 100644 --- a/openair3/SECU/secu_defs.c +++ b/openair3/SECU/secu_defs.c @@ -64,3 +64,70 @@ void stream_compute_encrypt(eea_alg_id_e alg, nas_stream_cipher_t const* stream_ } } +stream_security_context_t *stream_integrity_init(int integrity_algorithm, const uint8_t *integrity_key) +{ + switch (integrity_algorithm) { + case EEA0_ALG_ID: return NULL; + case EEA1_128_ALG_ID: return stream_integrity_init_eia1(integrity_key); + case EEA2_128_ALG_ID: return stream_integrity_init_eia2(integrity_key); + default: AssertFatal(0, "unsupported integrity algorithm\n"); + } +} + +void stream_integrity_free(int integrity_algorithm, stream_security_context_t *integrity_context) +{ + switch (integrity_algorithm) { + case EEA0_ALG_ID: return; + case EEA1_128_ALG_ID: return stream_integrity_free_eia1(integrity_context); + case EEA2_128_ALG_ID: return stream_integrity_free_eia2(integrity_context); + default: AssertFatal(0, "unsupported integrity algorithm\n"); + } +} + +stream_security_context_t *stream_ciphering_init(int ciphering_algorithm, const uint8_t *ciphering_key) +{ + switch (ciphering_algorithm) { + case EEA0_ALG_ID: return NULL; + case EEA1_128_ALG_ID: return stream_ciphering_init_eea1(ciphering_key); + case EEA2_128_ALG_ID: return stream_ciphering_init_eea2(ciphering_key); + default: AssertFatal(0, "unsupported ciphering algorithm\n"); + } +} + +void stream_ciphering_free(int ciphering_algorithm, stream_security_context_t *ciphering_context) +{ + switch (ciphering_algorithm) { + case EEA0_ALG_ID: return; + case EEA1_128_ALG_ID: return stream_ciphering_free_eea1(ciphering_context); + case EEA2_128_ALG_ID: return stream_ciphering_free_eea2(ciphering_context); + default: AssertFatal(0, "unsupported ciphering algorithm\n"); + } +} + +stream_security_container_t *stream_security_container_create(int ciphering_algorithm, + int integrity_algorithm, + const uint8_t *ciphering_key, + const uint8_t *integrity_key) +{ + stream_security_container_t *container = calloc(1, sizeof(*container)); + AssertFatal(container != NULL, "out of memory\n"); + + container->integrity_algorithm = integrity_algorithm; + container->ciphering_algorithm = ciphering_algorithm; + + container->integrity_context = stream_integrity_init(integrity_algorithm, integrity_key); + container->ciphering_context = stream_ciphering_init(ciphering_algorithm, ciphering_key); + + return container; +} + +void stream_security_container_delete(stream_security_container_t *container) +{ + /* passing NULL is accepted */ + if (container == NULL) + return; + + stream_integrity_free(container->integrity_algorithm, container->integrity_context); + stream_ciphering_free(container->ciphering_algorithm, container->ciphering_context); + free(container); +} diff --git a/openair3/SECU/secu_defs.h b/openair3/SECU/secu_defs.h index 7b96544bd5..3dd4cb7cfd 100644 --- a/openair3/SECU/secu_defs.h +++ b/openair3/SECU/secu_defs.h @@ -28,17 +28,42 @@ #define SECU_DIRECTION_UPLINK 0 #define SECU_DIRECTION_DOWNLINK 1 +/* stream_security_context_t is an opaque structure + * it is different for each integrity and ciphering algorithm in use + */ +typedef void stream_security_context_t; + +/* stream_security_container_t contains the current configuration + * of integrity and ciphering. It is used by PDCP and NAS. + */ typedef struct { - uint8_t *key; - uint32_t key_length; + int integrity_algorithm; + int ciphering_algorithm; + stream_security_context_t *ciphering_context; + stream_security_context_t *integrity_context; +} stream_security_container_t; + +typedef struct { + stream_security_context_t *context; uint32_t count; uint8_t bearer; uint8_t direction; uint8_t *message; /* length in bits */ - uint32_t blength; + uint32_t blength; } nas_stream_cipher_t; +stream_security_context_t *stream_integrity_init(int integrity_algorithm, const uint8_t *integrity_key); +stream_security_context_t *stream_ciphering_init(int ciphering_algorithm, const uint8_t *ciphering_key); +void stream_integrity_free(int integrity_algorithm, stream_security_context_t *integrity_context); +void stream_ciphering_free(int ciphering_algorithm, stream_security_context_t *ciphering_context); + +stream_security_container_t *stream_security_container_create(int ciphering_algorithm, + int integrity_algorithm, + const uint8_t *ciphering_key, + const uint8_t *integrity_key); +void stream_security_container_delete(stream_security_container_t *container); + /*! * @brief Encrypt/Decrypt a block of data based on the provided algorithm * @param[in] algorithm Algorithm used to encrypt the data From 61a2c085ca8df2127e10d36d721c8ea52eeaf08c Mon Sep 17 00:00:00 2001 From: Cedric Roux Date: Tue, 23 Apr 2024 11:43:05 +0200 Subject: [PATCH 27/40] cleanup the structure cbc_cmac_ctx_t - rename "lib_ctx" to "mac_implementation" which is what is stored because of previous commit - rename "mac" to "mac_context" to be clearer with what is stored in this variable too --- openair3/SECU/aes_128_cbc_cmac.c | 40 ++++++++++++++++---------------- openair3/SECU/aes_128_cbc_cmac.h | 4 ++-- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/openair3/SECU/aes_128_cbc_cmac.c b/openair3/SECU/aes_128_cbc_cmac.c index 6d50cb693a..3f4ca96e50 100644 --- a/openair3/SECU/aes_128_cbc_cmac.c +++ b/openair3/SECU/aes_128_cbc_cmac.c @@ -40,10 +40,10 @@ cbc_cmac_ctx_t init_aes_128_cbc_cmac(const uint8_t key[16]) DevAssert(mac_implementation != NULL); /* Create a context for the CMAC operation */ - EVP_MAC_CTX* mac = EVP_MAC_CTX_new(mac_implementation); - DevAssert(mac != NULL); + EVP_MAC_CTX* mac_context = EVP_MAC_CTX_new(mac_implementation); + DevAssert(mac_context != NULL); - cbc_cmac_ctx_t ctx = { .lib_ctx = mac_implementation, .mac = mac }; + cbc_cmac_ctx_t ctx = { .mac_implementation = mac_implementation, .mac_context = mac_context }; memcpy(ctx.key, key, 16); // The underlying cipher to be used @@ -55,7 +55,7 @@ cbc_cmac_ctx_t init_aes_128_cbc_cmac(const uint8_t key[16]) params[1] = OSSL_PARAM_construct_end(); /* Initialise the CMAC operation */ - int rc = EVP_MAC_init(mac, key, 16, params); + int rc = EVP_MAC_init(mac_context, key, 16, params); DevAssert(rc != 0); return ctx; @@ -77,9 +77,9 @@ void cipher_aes_128_cbc_cmac(cbc_cmac_ctx_t const* ctx, const aes_128_t* k_iv, b * somewhere else in the codebase. * If not used, remove from aes_128_t* */ - int rc = EVP_MAC_init(ctx->mac, k_iv->key, 16, NULL); + int rc = EVP_MAC_init(ctx->mac_context, k_iv->key, 16, NULL); #else - int rc = EVP_MAC_init(ctx->mac, NULL, 0, NULL); + int rc = EVP_MAC_init(ctx->mac_context, NULL, 0, NULL); #endif DevAssert(rc != 0); @@ -96,24 +96,24 @@ void cipher_aes_128_cbc_cmac(cbc_cmac_ctx_t const* ctx, const aes_128_t* k_iv, b } /* Make one or more calls to process the data to be authenticated */ - rc = EVP_MAC_update(ctx->mac, iv, sz_iv); + rc = EVP_MAC_update(ctx->mac_context, iv, sz_iv); DevAssert(rc != 0); /* Make one or more calls to process the data to be authenticated */ - rc = EVP_MAC_update(ctx->mac, msg.buf, msg.len); + rc = EVP_MAC_update(ctx->mac_context, msg.buf, msg.len); DevAssert(rc != 0); /* Make a call to the final with a NULL buffer to get the length of the MAC */ size_t out_len = 0; - rc = EVP_MAC_final(ctx->mac, out, &out_len, len_out); + rc = EVP_MAC_final(ctx->mac_context, out, &out_len, len_out); DevAssert(rc != 0); } void free_aes_128_cbc_cmac(cbc_cmac_ctx_t const* ctx) { DevAssert(ctx != NULL); - EVP_MAC_CTX_free(ctx->mac); - EVP_MAC_free(ctx->lib_ctx); + EVP_MAC_CTX_free(ctx->mac_context); + EVP_MAC_free(ctx->mac_implementation); } #else @@ -122,15 +122,15 @@ void free_aes_128_cbc_cmac(cbc_cmac_ctx_t const* ctx) cbc_cmac_ctx_t init_aes_128_cbc_cmac(const uint8_t key[16]) { DevAssert(key != NULL); - cbc_cmac_ctx_t ctx = {.lib_ctx = NULL, .mac = NULL }; + cbc_cmac_ctx_t ctx = {.mac_implementation = NULL, .mac_context = NULL }; - ctx.mac = CMAC_CTX_new(); - DevAssert(ctx.mac != NULL); + ctx.mac_context = CMAC_CTX_new(); + DevAssert(ctx.mac_context != NULL); //assert(16 == sizeof(ctx.key)); memcpy(ctx.key, key, 16); //sizeof(ctx.key)); - CMAC_Init(ctx.mac, ctx.key, 16, EVP_aes_128_cbc(), NULL); + CMAC_Init(ctx.mac_context, ctx.key, 16, EVP_aes_128_cbc(), NULL); return ctx; } @@ -144,7 +144,7 @@ void cipher_aes_128_cbc_cmac(cbc_cmac_ctx_t const* ctx, const aes_128_t* k_iv, b //cipher, and impl all set to NULL and key_len set to 0. In that case, any //data already processed is discarded and ctx is re-initialized to start //reading data anew. - CMAC_Init(ctx->mac, NULL, 0, NULL, NULL); + CMAC_Init(ctx->mac_context, NULL, 0, NULL, NULL); size_t sz_iv = 0; uint8_t* iv = NULL; @@ -158,18 +158,18 @@ void cipher_aes_128_cbc_cmac(cbc_cmac_ctx_t const* ctx, const aes_128_t* k_iv, b AssertFatal(0 != 0, "Unknwon Initialization vector"); } - CMAC_Update(ctx->mac, iv, sz_iv); + CMAC_Update(ctx->mac_context, iv, sz_iv); - CMAC_Update(ctx->mac, msg.buf, msg.len); + CMAC_Update(ctx->mac_context, msg.buf, msg.len); size_t len_res = 0; - CMAC_Final(ctx->mac, out, &len_res); + CMAC_Final(ctx->mac_context, out, &len_res); DevAssert(len_res <= len_out); } void free_aes_128_cbc_cmac(cbc_cmac_ctx_t const* ctx) { DevAssert(ctx != NULL); - CMAC_CTX_free(ctx->mac); + CMAC_CTX_free(ctx->mac_context); } #endif diff --git a/openair3/SECU/aes_128_cbc_cmac.h b/openair3/SECU/aes_128_cbc_cmac.h index de3b664dd7..b906ddf5f3 100644 --- a/openair3/SECU/aes_128_cbc_cmac.h +++ b/openair3/SECU/aes_128_cbc_cmac.h @@ -31,8 +31,8 @@ #include typedef struct { - void* lib_ctx; - void* mac; + void *mac_implementation; + void *mac_context; uint8_t key[16]; } cbc_cmac_ctx_t ; From fac5c1f62453004e0dca5342e7cb43881f1bfb95 Mon Sep 17 00:00:00 2001 From: Cedric Roux Date: Tue, 23 Apr 2024 11:45:18 +0200 Subject: [PATCH 28/40] minor cleanup - use variable defined above --- openair3/SECU/nas_stream_eia2.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openair3/SECU/nas_stream_eia2.c b/openair3/SECU/nas_stream_eia2.c index 073592ec6e..ee19a8f603 100644 --- a/openair3/SECU/nas_stream_eia2.c +++ b/openair3/SECU/nas_stream_eia2.c @@ -58,7 +58,7 @@ void nas_stream_encrypt_eia2(nas_stream_cipher_t const *stream_cipher, uint8_t o size_t const m_length = stream_cipher->blength >> 3; uint8_t result[16] = {0}; byte_array_t msg = {.buf = stream_cipher->message, .len = m_length }; - cipher_aes_128_cbc_cmac((cbc_cmac_ctx_t *)stream_cipher->context, &k_iv, msg, sizeof(result), result); + cipher_aes_128_cbc_cmac(ctx, &k_iv, msg, sizeof(result), result); memcpy(out, result, 4); } From de7bc13000b4d6cb2981ed38a82f35a2694e1b2b Mon Sep 17 00:00:00 2001 From: Cedric Roux Date: Tue, 23 Apr 2024 11:56:27 +0200 Subject: [PATCH 29/40] minor: rename stream_security_container_create() to stream_security_container_init() --- openair2/LAYER2/PDCP_v10.1.0/pdcp.c | 4 ++-- openair3/NAS/NR_UE/nr_nas_msg_sim.c | 4 ++-- openair3/NAS/UE/EMM/SecurityModeControl.c | 2 +- openair3/SECU/secu_defs.c | 8 ++++---- openair3/SECU/secu_defs.h | 8 ++++---- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/openair2/LAYER2/PDCP_v10.1.0/pdcp.c b/openair2/LAYER2/PDCP_v10.1.0/pdcp.c index d1beaa5d4b..28cd37f3af 100644 --- a/openair2/LAYER2/PDCP_v10.1.0/pdcp.c +++ b/openair2/LAYER2/PDCP_v10.1.0/pdcp.c @@ -2128,8 +2128,8 @@ pdcp_config_set_security( kRRCint != NULL ? memcpy(pdcp_pP->kRRCint, kRRCint+16, 16) : memset(pdcp_pP->kRRCint, 0, 16); kUPenc != NULL ? memcpy(pdcp_pP->kUPenc, kUPenc+16, 16) : memset(pdcp_pP->kUPenc, 0, 16); - pdcp_pP->security_container_rrc = stream_security_container_create(pdcp_pP->cipheringAlgorithm, pdcp_pP->integrityProtAlgorithm, pdcp_pP->kRRCenc, pdcp_pP->kRRCint); - pdcp_pP->security_container_up = stream_security_container_create(pdcp_pP->cipheringAlgorithm, 0, pdcp_pP->kUPenc, NULL); + pdcp_pP->security_container_rrc = stream_security_container_init(pdcp_pP->cipheringAlgorithm, pdcp_pP->integrityProtAlgorithm, pdcp_pP->kRRCenc, pdcp_pP->kRRCint); + pdcp_pP->security_container_up = stream_security_container_init(pdcp_pP->cipheringAlgorithm, 0, pdcp_pP->kUPenc, NULL); /* Activate security */ pdcp_pP->security_activated = 1; diff --git a/openair3/NAS/NR_UE/nr_nas_msg_sim.c b/openair3/NAS/NR_UE/nr_nas_msg_sim.c index ae6587df8d..1271ba34fd 100644 --- a/openair3/NAS/NR_UE/nr_nas_msg_sim.c +++ b/openair3/NAS/NR_UE/nr_nas_msg_sim.c @@ -516,9 +516,9 @@ static void generateAuthenticationResp(nr_ue_nas_t *nas, as_nas_info_t *initialN { derive_ue_keys(buf, nas); /* todo: as of now, nia2 is hardcoded in derive_ue_keys(), remove this hardcoding, use NAS signalling for getting proper algorithm */ - /* todo: deal with ciphering for this stream_security_container_create() (handle ciphering in general) */ + /* todo: deal with ciphering for this stream_security_container_init() (handle ciphering in general) */ /* todo: stream_security_container_delete() is not called anywhere, deal with that */ - nas->security_container = stream_security_container_create(0, 2 /* hardcoded: nia2 */, NULL, nas->security.knas_int); + nas->security_container = stream_security_container_init(0, 2 /* hardcoded: nia2 */, NULL, nas->security.knas_int); OctetString res; res.length = 16; res.value = calloc(1,16); diff --git a/openair3/NAS/UE/EMM/SecurityModeControl.c b/openair3/NAS/UE/EMM/SecurityModeControl.c index a068b65d68..2a18763f50 100644 --- a/openair3/NAS/UE/EMM/SecurityModeControl.c +++ b/openair3/NAS/UE/EMM/SecurityModeControl.c @@ -267,7 +267,7 @@ int emm_proc_security_mode_command(nas_user_t *user, int native_ksi, int ksi, /* Set new security context indicator */ security_context_is_new = true; /* create contexts */ - user->emm_data->security->security_container = stream_security_container_create( + user->emm_data->security->security_container = stream_security_container_init( seea, seia, user->emm_data->non_current->knas_enc.value, diff --git a/openair3/SECU/secu_defs.c b/openair3/SECU/secu_defs.c index 47dc3affc4..17e3ca96ec 100644 --- a/openair3/SECU/secu_defs.c +++ b/openair3/SECU/secu_defs.c @@ -104,10 +104,10 @@ void stream_ciphering_free(int ciphering_algorithm, stream_security_context_t *c } } -stream_security_container_t *stream_security_container_create(int ciphering_algorithm, - int integrity_algorithm, - const uint8_t *ciphering_key, - const uint8_t *integrity_key) +stream_security_container_t *stream_security_container_init(int ciphering_algorithm, + int integrity_algorithm, + const uint8_t *ciphering_key, + const uint8_t *integrity_key) { stream_security_container_t *container = calloc(1, sizeof(*container)); AssertFatal(container != NULL, "out of memory\n"); diff --git a/openair3/SECU/secu_defs.h b/openair3/SECU/secu_defs.h index 3dd4cb7cfd..e47804fd3f 100644 --- a/openair3/SECU/secu_defs.h +++ b/openair3/SECU/secu_defs.h @@ -58,10 +58,10 @@ stream_security_context_t *stream_ciphering_init(int ciphering_algorithm, const void stream_integrity_free(int integrity_algorithm, stream_security_context_t *integrity_context); void stream_ciphering_free(int ciphering_algorithm, stream_security_context_t *ciphering_context); -stream_security_container_t *stream_security_container_create(int ciphering_algorithm, - int integrity_algorithm, - const uint8_t *ciphering_key, - const uint8_t *integrity_key); +stream_security_container_t *stream_security_container_init(int ciphering_algorithm, + int integrity_algorithm, + const uint8_t *ciphering_key, + const uint8_t *integrity_key); void stream_security_container_delete(stream_security_container_t *container); /*! From 39a5e72818c39a3740638481f14ba82f8febe97c Mon Sep 17 00:00:00 2001 From: Cedric Roux Date: Fri, 26 Apr 2024 10:05:41 +0200 Subject: [PATCH 30/40] define stream_security_context_t as a struct to get type checking By using a struct we may have warnings at compilation time in some cases if the type is not used properly. The type definition becomes a bit weird, so we need to properly comment. If too strange, we can revert to the classical "void" definition. --- openair3/SECU/secu_defs.h | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/openair3/SECU/secu_defs.h b/openair3/SECU/secu_defs.h index e47804fd3f..bfd3a943ce 100644 --- a/openair3/SECU/secu_defs.h +++ b/openair3/SECU/secu_defs.h @@ -28,10 +28,14 @@ #define SECU_DIRECTION_UPLINK 0 #define SECU_DIRECTION_DOWNLINK 1 -/* stream_security_context_t is an opaque structure - * it is different for each integrity and ciphering algorithm in use +/* stream_security_context_t is an opaque structure. + * It is different for each integrity and ciphering algorithm in use. + * Defined as a struct to have compilation time type checking + * (the "context" field is never actually used). */ -typedef void stream_security_context_t; +typedef struct { + void *context; +} stream_security_context_t; /* stream_security_container_t contains the current configuration * of integrity and ciphering. It is used by PDCP and NAS. From 408cebc1e7401e6173eacedb83bb11ed60f03106 Mon Sep 17 00:00:00 2001 From: francescomani Date: Fri, 29 Mar 2024 19:37:57 +0100 Subject: [PATCH 31/40] implementing triggering RA after SR failure --- openair2/LAYER2/NR_MAC_UE/mac_defs.h | 4 +- openair2/LAYER2/NR_MAC_UE/mac_proto.h | 3 +- openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c | 71 +++++++++++++++---- openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c | 39 +++++----- openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c | 11 +++ .../LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c | 11 ++- openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c | 18 ++++- 7 files changed, 122 insertions(+), 35 deletions(-) diff --git a/openair2/LAYER2/NR_MAC_UE/mac_defs.h b/openair2/LAYER2/NR_MAC_UE/mac_defs.h index fa58cf4676..2cda190f23 100644 --- a/openair2/LAYER2/NR_MAC_UE/mac_defs.h +++ b/openair2/LAYER2/NR_MAC_UE/mac_defs.h @@ -308,7 +308,7 @@ typedef struct { /// number of attempt for rach uint8_t RA_attempt_number; /// Random-access procedure flag - uint8_t RA_active; + bool RA_active; /// Random-access preamble index int ra_PreambleIndex; // When multiple SSBs per RO is configured, this indicates which one is selected in this RO -> this is used to properly compute the PRACH preamble @@ -341,6 +341,8 @@ typedef struct { /// Msg3 buffer uint8_t *Msg3_buffer; + bool msg3_C_RNTI; + /// Random-access Contention Resolution Timer NR_timer_t contention_resolution_timer; /// Transmitted UE Contention Resolution Identifier diff --git a/openair2/LAYER2/NR_MAC_UE/mac_proto.h b/openair2/LAYER2/NR_MAC_UE/mac_proto.h index f263670e03..ea30052058 100644 --- a/openair2/LAYER2/NR_MAC_UE/mac_proto.h +++ b/openair2/LAYER2/NR_MAC_UE/mac_proto.h @@ -312,6 +312,7 @@ void init_RA(NR_UE_MAC_INST_t *mac, int16_t get_prach_tx_power(NR_UE_MAC_INST_t *mac); void free_rach_structures(NR_UE_MAC_INST_t *nr_mac, int bwp_id); +void schedule_RA_after_SR_failure(NR_UE_MAC_INST_t *mac); void nr_Msg1_transmitted(NR_UE_MAC_INST_t *mac); void nr_Msg3_transmitted(NR_UE_MAC_INST_t *mac, uint8_t CC_id, frame_t frameP, slot_t slotP, uint8_t gNB_id); void nr_get_msg3_payload(NR_UE_MAC_INST_t *mac, uint8_t *buf, int TBS_max); @@ -335,7 +336,7 @@ void remove_ul_config_last_item(fapi_nr_ul_config_request_pdu_t *pdu); fapi_nr_ul_config_request_pdu_t *fapiLockIterator(fapi_nr_ul_config_request_t *ul_config, frame_t frame_tx, int slot_tx); void release_ul_config(fapi_nr_ul_config_request_pdu_t *pdu, bool clearIt); - +void clear_ul_config_request(NR_UE_MAC_INST_t *mac, int scs); int16_t compute_nr_SSB_PL(NR_UE_MAC_INST_t *mac, short ssb_rsrp_dBm); // PUSCH scheduler: diff --git a/openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c b/openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c index e89e68f317..2ef2f427a4 100644 --- a/openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c +++ b/openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c @@ -61,7 +61,7 @@ void init_RA(NR_UE_MAC_INST_t *mac, { mac->state = UE_PERFORMING_RA; RA_config_t *ra = &mac->ra; - ra->RA_active = 1; + ra->RA_active = true; ra->ra_PreambleIndex = -1; ra->RA_usedGroupA = 1; ra->RA_RAPID_found = 0; @@ -582,17 +582,25 @@ void nr_Msg3_transmitted(NR_UE_MAC_INST_t *mac, uint8_t CC_id, frame_t frameP, s ra->ra_state = nrRA_WAIT_CONTENTION_RESOLUTION; } -void nr_get_msg3_payload(NR_UE_MAC_INST_t *mac, uint8_t *buf, int TBS_max) +static uint8_t *fill_msg3_crnti_pdu(RA_config_t *ra, uint8_t *pdu, uint16_t crnti) +{ + // RA triggered by UE MAC with C-RNTI in MAC CE + LOG_D(NR_MAC, "Generating MAC CE with C-RNTI for MSG3 %x\n", crnti); + *(NR_MAC_SUBHEADER_FIXED *)pdu = (NR_MAC_SUBHEADER_FIXED){.LCID = UL_SCH_LCID_C_RNTI, .R = 0}; + pdu += sizeof(NR_MAC_SUBHEADER_FIXED); + + // C-RNTI MAC CE (2 octets) + uint16_t rnti_pdu = ((crnti & 0xFF) << 8) | ((crnti >> 8) & 0xFF); + memcpy(pdu, &rnti_pdu, sizeof(rnti_pdu)); + pdu += sizeof(rnti_pdu); + ra->t_crnti = crnti; + return pdu; +} + +static uint8_t *fill_msg3_pdu_from_rlc(NR_UE_MAC_INST_t *mac, uint8_t *pdu, int TBS_max) { RA_config_t *ra = &mac->ra; - - // we already stored MSG3 in the buffer, we can use that - if (ra->Msg3_buffer) { - buf = ra->Msg3_buffer; - return; - } - - uint8_t *pdu = buf; + // regular MSG3 with PDU coming from higher layers *(NR_MAC_SUBHEADER_FIXED *)pdu = (NR_MAC_SUBHEADER_FIXED){.LCID = UL_SCH_LCID_CCCH}; pdu += sizeof(NR_MAC_SUBHEADER_FIXED); tbs_size_t len = mac_rlc_data_req(mac->ue_id, @@ -613,6 +621,25 @@ void nr_get_msg3_payload(NR_UE_MAC_INST_t *mac, uint8_t *buf, int TBS_max) // We copy from persisted memory to another persisted memory memcpy(ra->cont_res_id, pdu, sizeof(uint8_t) * 6); pdu += len; + return pdu; +} + +void nr_get_msg3_payload(NR_UE_MAC_INST_t *mac, uint8_t *buf, int TBS_max) +{ + RA_config_t *ra = &mac->ra; + + // we already stored MSG3 in the buffer, we can use that + if (ra->Msg3_buffer) { + buf = ra->Msg3_buffer; + return; + } + + uint8_t *pdu = buf; + if (ra->msg3_C_RNTI) + pdu = fill_msg3_crnti_pdu(ra, pdu, mac->crnti); + else + pdu = fill_msg3_pdu_from_rlc(mac, pdu, TBS_max); + AssertFatal(TBS_max >= pdu - buf, "Allocated resources are not enough for Msg3!\n"); // Padding: fill remainder with 0 LOG_D(NR_MAC, "Remaining %ld bytes, filling with padding\n", pdu - buf); @@ -657,7 +684,7 @@ void nr_ue_get_rach(NR_UE_MAC_INST_t *mac, int CC_id, frame_t frame, uint8_t gNB LOG_D(NR_MAC, "[UE %d][%d.%d]: ra_state %d, RA_active %d\n", mac->ue_id, frame, nr_slot_tx, ra->ra_state, ra->RA_active); if (ra->ra_state > nrRA_UE_IDLE && ra->ra_state < nrRA_SUCCEEDED) { - if (ra->RA_active == 0) { + if (!ra->RA_active) { NR_RACH_ConfigCommon_t *setup = mac->current_UL_BWP->rach_ConfigCommon; NR_RACH_ConfigGeneric_t *rach_ConfigGeneric = &setup->rach_ConfigGeneric; init_RA(mac, &ra->prach_resources, setup, rach_ConfigGeneric, ra->rach_ConfigDedicated); @@ -825,7 +852,8 @@ void nr_ra_succeeded(NR_UE_MAC_INST_t *mac, const uint8_t gNB_index, const frame } LOG_D(MAC, "[UE %d] clearing RA_active flag...\n", mac->ue_id); - ra->RA_active = 0; + ra->RA_active = false; + ra->msg3_C_RNTI = false; ra->ra_state = nrRA_SUCCEEDED; mac->state = UE_CONNECTED; free_and_zero(ra->Msg3_buffer); @@ -875,6 +903,25 @@ void nr_ra_failed(NR_UE_MAC_INST_t *mac, uint8_t CC_id, NR_PRACH_RESOURCES_t *pr } } +void schedule_RA_after_SR_failure(NR_UE_MAC_INST_t *mac) +{ + LOG_W(NR_MAC, "Triggering new RA procedure for UE with RNTI %x\n", mac->crnti); + mac->state = UE_SYNC; + reset_ra(mac, false); + mac->ra.msg3_C_RNTI = true; + // release PUCCH for all Serving Cells; + // release SRS for all Serving Cells; + release_PUCCH_SRS(mac); + // clear any configured downlink assignments and uplink grants; + int scs = mac->current_UL_BWP->scs; + if (mac->dl_config_request) + memset(mac->dl_config_request, 0, sizeof(*mac->dl_config_request)); + if (mac->ul_config_request) + clear_ul_config_request(mac, scs); + // clear any PUSCH resources for semi-persistent CSI reporting + // TODO we don't have semi-persistent CSI reporting +} + void prepare_msg4_feedback(NR_UE_MAC_INST_t *mac, int pid, int ack_nack) { NR_UE_HARQ_STATUS_t *current_harq = &mac->dl_harq_info[pid]; diff --git a/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c b/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c index 5f0bc51e9a..ed23d52aa7 100644 --- a/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c +++ b/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c @@ -2434,7 +2434,7 @@ bool trigger_periodic_scheduling_request(NR_UE_MAC_INST_t *mac, PUCCH_sched_t *p if(!pucch_Config || !pucch_Config->schedulingRequestResourceToAddModList || - pucch_Config->schedulingRequestResourceToAddModList->list.count==0) + pucch_Config->schedulingRequestResourceToAddModList->list.count == 0) return false; // SR not configured int sr_count = 0; @@ -2458,7 +2458,12 @@ bool trigger_periodic_scheduling_request(NR_UE_MAC_INST_t *mac, PUCCH_sched_t *p pucch->pucch_resource = sr_pucch; pucch->n_sr = 1; /* sr_payload = 1 means that this is a positive SR, sr_payload = 0 means that it is a negative SR */ - pucch->sr_payload = nr_ue_get_SR(mac, frame, slot, sr_Config->schedulingRequestID); + int ret = nr_ue_get_SR(mac, frame, slot, sr_Config->schedulingRequestID); + if (ret < 0) { + memset(pucch, 0, sizeof(*pucch)); + return false; + } + pucch->sr_payload = ret; sr_count++; AssertFatal(sr_count < 2, "Cannot handle more than 1 SR per slot yet\n"); } @@ -2500,18 +2505,19 @@ int8_t nr_ue_get_SR(NR_UE_MAC_INST_t *mac, frame_t frame, slot_t slot, NR_Schedu return 1; } - // TODO - // notify RRC to release PUCCH for all Serving Cells; - // notify RRC to release SRS for all Serving Cells; - // clear any configured downlink assignments and uplink grants; - // clear any PUSCH resources for semi-persistent CSI reporting; + LOG_W(NR_MAC, + "[UE %d] SR not served! SR counter %d reached sr_MaxTransmissions %d\n", + mac->ue_id, + sr_info->counter, + sr_info->maxTransmissions); + // initiate a Random Access procedure (see clause 5.1) on the SpCell and cancel all pending SRs. - LOG_E(NR_MAC, "[UE %d] SR not served. Triggering of new RA procedure not implemented yet.\n", mac->ue_id); + schedule_RA_after_SR_failure(mac); sr_info->pending = false; sr_info->counter = 0; nr_timer_stop(&sr_info->prohibitTimer); - return 0; + return -1; } // section 5.2.5 of 38.214 @@ -3511,7 +3517,7 @@ void nr_ue_process_mac_pdu(NR_UE_MAC_INST_t *mac, nr_downlink_indication_t *dl_i mac_len = 6; if (ra->ra_state == nrRA_WAIT_CONTENTION_RESOLUTION) { - LOG_I(MAC, "[UE %d][RAPROC] Frame %d : received contention resolution identity: 0x%02x%02x%02x%02x%02x%02x Terminating RA procedure\n", + LOG_I(MAC, "[UE %d]Frame %d Contention resolution identity: 0x%02x%02x%02x%02x%02x%02x Terminating RA procedure\n", mac->ue_id, frameP, pduP[1], @@ -3523,21 +3529,21 @@ void nr_ue_process_mac_pdu(NR_UE_MAC_INST_t *mac, nr_downlink_indication_t *dl_i bool ra_success = true; if (!IS_SOFTMODEM_IQPLAYER) { // Control is bypassed when replaying IQs (BMC) - for(int i = 0; icont_res_id[i] != pduP[i+1]) { + for(int i = 0; i < mac_len; i++) { + if(ra->cont_res_id[i] != pduP[i + 1]) { ra_success = false; break; } } } - if ( (ra->RA_active == 1) && ra_success) { + if (ra->RA_active && ra_success) { nr_ra_succeeded(mac, gNB_index, frameP, slot); - } else if (!ra_success){ + } else if (!ra_success) { // TODO: Handle failure of RA procedure @ MAC layer // nr_ra_failed(module_idP, CC_id, prach_resources, frameP, slot); // prach_resources is a PHY structure ra->ra_state = nrRA_UE_IDLE; - ra->RA_active = 0; + ra->RA_active = false; } } break; @@ -3978,7 +3984,8 @@ static void nr_ue_process_rar(NR_UE_MAC_INST_t *mac, nr_downlink_indication_t *d if (!ra->cfra) { ra->t_crnti = rar->TCRNTI_2 + (rar->TCRNTI_1 << 8); rnti = ra->t_crnti; - nr_mac_rrc_msg3_ind(mac->ue_id, rnti, dl_info->gNB_index); + if (!ra->msg3_C_RNTI) + nr_mac_rrc_msg3_ind(mac->ue_id, rnti, dl_info->gNB_index); } fapi_nr_ul_config_request_pdu_t *pdu = lockGet_ul_config(mac, frame_tx, slot_tx, FAPI_NR_UL_CONFIG_TYPE_PUSCH); if (!pdu) diff --git a/openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c b/openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c index 8c9062d8ec..1f17931264 100644 --- a/openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c +++ b/openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c @@ -60,6 +60,17 @@ static void nr_ue_prach_scheduler(NR_UE_MAC_INST_t *mac, frame_t frameP, sub_frame_t slotP); static void schedule_ta_command(fapi_nr_dl_config_request_t *dl_config, NR_UL_TIME_ALIGNMENT_t *ul_time_alignment); +void clear_ul_config_request(NR_UE_MAC_INST_t *mac, int scs) +{ + int slots = nr_slots_per_frame[scs]; + for (int i = 0; i < slots ; i++) { + fapi_nr_ul_config_request_t *ul_config = mac->ul_config_request + i; + pthread_mutex_lock(&ul_config->mutex_ul_config); + ul_config->number_pdus = 0; + pthread_mutex_unlock(&ul_config->mutex_ul_config); + } +} + fapi_nr_ul_config_request_pdu_t *lockGet_ul_config(NR_UE_MAC_INST_t *mac, frame_t frame_tx, int slot_tx, uint8_t pdu_type) { NR_TDD_UL_DL_ConfigCommon_t *tdd_config = mac->tdd_UL_DL_ConfigurationCommon; diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c index e617184edd..422ae13d89 100644 --- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c +++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_dlsch.c @@ -132,9 +132,14 @@ int nr_write_ce_dlsch_pdu(module_id_t module_idP, // contention resolution identity MAC ce has a fixed 48 bit size // this contains the UL CCCH SDU. If UL CCCH SDU is longer than 48 bits, // it contains the first 48 bits of the UL CCCH SDU - LOG_T(NR_MAC, "[gNB ][RAPROC] Generate contention resolution msg: %x.%x.%x.%x.%x.%x\n", - ue_cont_res_id[0], ue_cont_res_id[1], ue_cont_res_id[2], - ue_cont_res_id[3], ue_cont_res_id[4], ue_cont_res_id[5]); + LOG_D(NR_MAC, + "[gNB ][RAPROC] Generate contention resolution msg: %x.%x.%x.%x.%x.%x\n", + ue_cont_res_id[0], + ue_cont_res_id[1], + ue_cont_res_id[2], + ue_cont_res_id[3], + ue_cont_res_id[4], + ue_cont_res_id[5]); // Copying bytes (6 octects) to CEs pointer mac_ce_size = 6; memcpy(ce_ptr, ue_cont_res_id, mac_ce_size); diff --git a/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c b/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c index 38e57eda66..16f35f6c92 100644 --- a/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c +++ b/openair2/NR_UE_PHY_INTERFACE/NR_IF_Module.c @@ -1059,8 +1059,18 @@ static int handle_bcch_dlsch(NR_UE_MAC_INST_t *mac, } // L2 Abstraction Layer -static nr_dci_format_t handle_dci(NR_UE_MAC_INST_t *mac, frame_t frame, int slot, fapi_nr_dci_indication_pdu_t *dci) +static nr_dci_format_t handle_dci(NR_UE_MAC_INST_t *mac, + unsigned int gNB_index, + frame_t frame, + int slot, + fapi_nr_dci_indication_pdu_t *dci) { + // if notification of a reception of a PDCCH transmission of the SpCell is received from lower layers + // if the C-RNTI MAC CE was included in Msg3 + // consider this Contention Resolution successful + if (mac->ra.msg3_C_RNTI && mac->ra.ra_state == nrRA_WAIT_CONTENTION_RESOLUTION) + nr_ra_succeeded(mac, gNB_index, frame, slot); + return nr_ue_process_dci_indication_pdu(mac, frame, slot, dci); } @@ -1156,7 +1166,11 @@ static uint32_t nr_ue_dl_processing(nr_downlink_indication_t *dl_info) LOG_T(MAC, "[L2][IF MODULE][DL INDICATION][DCI_IND]\n"); for (int i = 0; i < dl_info->dci_ind->number_of_dcis; i++) { LOG_T(MAC, ">>>NR_IF_Module i=%d, dl_info->dci_ind->number_of_dcis=%d\n", i, dl_info->dci_ind->number_of_dcis); - nr_dci_format_t dci_format = handle_dci(mac, dl_info->frame, dl_info->slot, dl_info->dci_ind->dci_list + i); + nr_dci_format_t dci_format = handle_dci(mac, + dl_info->gNB_index, + dl_info->frame, + dl_info->slot, + dl_info->dci_ind->dci_list + i); /* The check below filters out UL_DCIs which are being processed as DL_DCIs. */ if (dci_format != NR_DL_DCI_FORMAT_1_0 && dci_format != NR_DL_DCI_FORMAT_1_1) { From e31d87eee9807189b821e2bb7ecf35e2b674d588 Mon Sep 17 00:00:00 2001 From: francescomani Date: Sat, 13 Apr 2024 07:31:49 +0200 Subject: [PATCH 32/40] trigger RA also in case of no valid pucch resource configured for pending SR --- openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c | 3 +- openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c | 35 ++++++++++++++++---- 2 files changed, 30 insertions(+), 8 deletions(-) diff --git a/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c b/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c index ed23d52aa7..a44154100b 100644 --- a/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c +++ b/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c @@ -2512,11 +2512,10 @@ int8_t nr_ue_get_SR(NR_UE_MAC_INST_t *mac, frame_t frame, slot_t slot, NR_Schedu sr_info->maxTransmissions); // initiate a Random Access procedure (see clause 5.1) on the SpCell and cancel all pending SRs. - schedule_RA_after_SR_failure(mac); sr_info->pending = false; sr_info->counter = 0; nr_timer_stop(&sr_info->prohibitTimer); - + schedule_RA_after_SR_failure(mac); return -1; } diff --git a/openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c b/openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c index 1f17931264..455a8d7c17 100644 --- a/openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c +++ b/openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c @@ -1122,6 +1122,19 @@ void nr_ue_dl_scheduler(NR_UE_MAC_INST_t *mac, nr_downlink_indication_t *dl_info LOG_E(NR_MAC, "Internal error, no scheduled_response function\n"); } +static bool check_pucchres_for_pending_SR(NR_PUCCH_Config_t *pucch_Config, int target_sr_id) +{ + for (int id = 0; id < pucch_Config->schedulingRequestResourceToAddModList->list.count; id++) { + NR_SchedulingRequestResourceConfig_t *sr_Config = pucch_Config->schedulingRequestResourceToAddModList->list.array[id]; + if (sr_Config->schedulingRequestID == target_sr_id) { + if (sr_Config->resource) { + return true; + } + } + } + return false; +} + static void nr_update_sr(NR_UE_MAC_INST_t *mac) { NR_UE_SCHEDULING_INFO *sched_info = &mac->scheduling_info; @@ -1164,17 +1177,27 @@ static void nr_update_sr(NR_UE_MAC_INST_t *mac) // if the UL-SCH resources available for a new transmission do not meet the LCP mapping restrictions // TODO not implemented - // trigger SR if (lc_info->sr_id < 0 || lc_info->sr_id >= NR_MAX_SR_ID) LOG_E(NR_MAC, "No SR corresponding to this LCID\n"); // TODO not sure what to do here else { nr_sr_info_t *sr = &sched_info->sr_info[lc_info->sr_id]; if (!sr->pending) { - LOG_D(NR_MAC, "Triggering SR for ID %d\n", lc_info->sr_id); - sr->pending = true; - sr->counter = 0; - // TODO initiate a Random Access procedure on the SpCell and cancel the pending SR - // if the MAC entity has no valid PUCCH resource configured for the pending SR + NR_UE_UL_BWP_t *current_UL_BWP = mac->current_UL_BWP; + NR_PUCCH_Config_t *pucch_Config = current_UL_BWP ? current_UL_BWP->pucch_Config : NULL; + if (check_pucchres_for_pending_SR(pucch_Config, lc_info->sr_id)) { + // trigger SR + LOG_D(NR_MAC, "Triggering SR for ID %d\n", lc_info->sr_id); + sr->pending = true; + sr->counter = 0; + } + else { + // initiate a Random Access procedure on the SpCell and cancel the pending SR + // if the MAC entity has no valid PUCCH resource configured for the pending SR + sr->pending = false; + sr->counter = 0; + nr_timer_stop(&sr->prohibitTimer); + schedule_RA_after_SR_failure(mac); + } } } } From 27975f99d349a7aabfa3ecd9ae337ec70be12045 Mon Sep 17 00:00:00 2001 From: francescomani Date: Fri, 26 Apr 2024 14:40:01 +0200 Subject: [PATCH 33/40] fix for MSG3 buffer when retransmitting --- openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c b/openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c index 2ef2f427a4..3cdcbf769d 100644 --- a/openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c +++ b/openair2/LAYER2/NR_MAC_UE/nr_ra_procedures.c @@ -630,7 +630,7 @@ void nr_get_msg3_payload(NR_UE_MAC_INST_t *mac, uint8_t *buf, int TBS_max) // we already stored MSG3 in the buffer, we can use that if (ra->Msg3_buffer) { - buf = ra->Msg3_buffer; + memcpy(buf, ra->Msg3_buffer, sizeof(uint8_t) * TBS_max); return; } From 445aac11b98e19134f7288c7639114670d99d929 Mon Sep 17 00:00:00 2001 From: Laurent THOMAS Date: Wed, 3 Apr 2024 16:23:40 +0200 Subject: [PATCH 34/40] put dci search in trace level trace, so the trace level debug prints the decoded DCIs --- openair2/LAYER2/NR_MAC_UE/nr_ue_dci_configuration.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/openair2/LAYER2/NR_MAC_UE/nr_ue_dci_configuration.c b/openair2/LAYER2/NR_MAC_UE/nr_ue_dci_configuration.c index 6b0318ab6b..27219bed1f 100644 --- a/openair2/LAYER2/NR_MAC_UE/nr_ue_dci_configuration.c +++ b/openair2/LAYER2/NR_MAC_UE/nr_ue_dci_configuration.c @@ -43,7 +43,7 @@ void fill_dci_search_candidates(const NR_SearchSpace_t *ss, fapi_nr_dl_config_dci_dl_pdu_rel15_t *rel15, const uint32_t Y) { - LOG_D(NR_MAC_DCI, "Filling search candidates for DCI\n"); + LOG_T(NR_MAC_DCI, "Filling search candidates for DCI\n"); int i = 0; for (int maxL = 16; maxL > 0; maxL >>= 1) { @@ -54,7 +54,7 @@ void fill_dci_search_candidates(const NR_SearchSpace_t *ss, maxL); if (max_number_of_candidates == 0) continue; - LOG_D(NR_MAC_DCI, "L %d, max number of candidates %d, aggregation %d\n", maxL, max_number_of_candidates, aggregation); + LOG_T(NR_MAC_DCI, "L %d, max number of candidates %d, aggregation %d\n", maxL, max_number_of_candidates, aggregation); int N_cce_sym = 0; // nb of rbs of coreset per symbol for (int f = 0; f < 6; f++) { for (int t = 0; t < 8; t++) { @@ -66,7 +66,7 @@ void fill_dci_search_candidates(const NR_SearchSpace_t *ss, continue; for (int j = 0; j < max_number_of_candidates; j++) { int first_cce = aggregation * ((Y + ((j * N_cces) / (aggregation * max_number_of_candidates)) + 0) % (N_cces / aggregation)); - LOG_D(NR_MAC_DCI, + LOG_T(NR_MAC_DCI, "Candidate %d of %d first_cce %d (L %d N_cces %d Y %d)\n", j, max_number_of_candidates, @@ -79,7 +79,7 @@ void fill_dci_search_candidates(const NR_SearchSpace_t *ss, for (int k = 0; k < i; k++) { if (rel15->CCE[k] == first_cce && rel15->L[k] == aggregation) { duplicated = true; - LOG_D(NR_MAC_DCI, "Candidate %d of %d is duplicated\n", j, max_number_of_candidates); + LOG_T(NR_MAC_DCI, "Candidate %d of %d is duplicated\n", j, max_number_of_candidates); } } if (!duplicated) { @@ -315,7 +315,7 @@ void config_dci_pdu(NR_UE_MAC_INST_t *mac, #ifdef DEBUG_DCI for (int i = 0; i < rel15->num_dci_options; i++) { - LOG_D(NR_MAC_DCI, + LOG_T(NR_MAC_DCI, "[DCI_CONFIG] Configure DCI PDU: rnti_type %d BWPSize %d BWPStart %d rel15->SubcarrierSpacing %d rel15->dci_format %d " "rel15->dci_length %d sps %d monitoringSymbolsWithinSlot %d \n", rnti_type, From 17cbd4352c70e1b9dc56fffea42a31734253ef62 Mon Sep 17 00:00:00 2001 From: Jaroslava Fiedlerova Date: Mon, 29 Apr 2024 13:50:00 +0200 Subject: [PATCH 35/40] Update of CI testbenches doc - replace nrmodule2 by up2 - add matix in CI machines - add info about RAN-SA-2x2-Module-CN5G in list of pipeline - update of 5G OTA testbench image --- doc/TESTBenches.md | 18 +++++++++------- .../5g-ota-bench.pdf | Bin 232308 -> 235312 bytes .../5g-ota-bench.png | Bin 91775 -> 57789 bytes .../5g-ota-bench.tex | 20 +++++++++--------- 4 files changed, 20 insertions(+), 18 deletions(-) diff --git a/doc/TESTBenches.md b/doc/TESTBenches.md index 433e696e79..9ea8534faa 100644 --- a/doc/TESTBenches.md +++ b/doc/TESTBenches.md @@ -9,10 +9,10 @@ | asterix | 172.21.16.127 | CI-Asterix-Usage | *unused* | 172.21.19.14 | | obelix | 172.21.16.128 | CI-Obelix-Usage | eNB (n40, n78), nrUE | 172.21.19.13, X300 (192.168.60.2) | | porcepix | 172.21.16.136 | CI-Porcepix | Executor, EPC, 5GC | -- | -| nrmodule2 | 172.21.16.139 | CI-NrModule2 | Quectel | Quectel module | +| up2 | 172.21.19.68 | CI-UP2-Usage | COTS UE | Quectel RM520N | | nepes | 172.21.16.137 | CI-Nepes | gNB (n78), EPC/5GC | B200mini (30C51EB) | | ofqot | 172.21.16.109 | CI-Ofqot | gNB (n78) | B200mini (30C51D4) | -| idefix | 172.21.16.135 | CI-Idefix | Quectel | Quectel module | +| idefix | 172.21.16.135 | CI-Idefix | COTS UE | Quectel RM500Q | | caracal | 172.21.16.132 | CI-Caracal | gNB/phytest | N300 (192.168.10.2) | | amariue | 172.21.16.144 | CI-Amarisoft-UE-Usage | nrUE | Amarisoft UE simulator | | nano | 172.21.18.48 | CI-Nano-Legacy-EPC | Executor, EPC, adb | 2x COTS (adb) | @@ -23,7 +23,8 @@ | avra | 172.21.16.124 | CI-Avra-Usage | gNB (n78) | AW2S Jaguar (192.168.80.239) | | orion | 172.21.16.134 | CI-Orion-Build-Sanity-Check-Deploy-Test, CI-Orion-DsTester-Deploy-Test | Build | | | aerial2 | 172.21.16.131 | CI-Aerial2-Usage | gNB (PNF/Nvidia CUBB + VNF) | Foxconn RU, _Nvidia Aerial SDK integrated_ | -| sphex | 172.21.17.54 | CI-Sphex-Usage | Quectel | Quectel module | +| sphex | 172.21.17.54 | CI-Sphex-Usage | COTS UE | Quectel RM500Q | +| matix | 172.21.19.58 | CI-Matix-Usage | gNB (n77) | N310 | Note: The available resources, and their current usage, is indicated here: - [Lockable resources of jenkins-oai](https://jenkins-oai.eurecom.fr/lockable-resources/): @@ -154,7 +155,7 @@ information on how the images are built. - tests OAI 4G for 10 MHz/TM1; known to be unstable - [RAN-LTE-TDD-2x2-Container](https://jenkins-oai.eurecom.fr/view/RAN/job/RAN-LTE-TDD-2x2-Container/) ~4G-LTE - - obelix + N310, porcepix, nrmodule2 + Quectel + - obelix + N310, porcepix, up2 + Quectel - TM1 and TM2 test, IF4p5 fronthaul - [RAN-LTE-TDD-LTEBOX-Container](https://jenkins-oai.eurecom.fr/job/RAN-LTE-TDD-LTEBOX-Container/) ~4G-LTE @@ -191,8 +192,12 @@ information on how the images are built. - OpenShift cluster for CN deployment and container images for gNB and UE deployment - [RAN-SA-AERIAL-CN5G](https://jenkins-oai.eurecom.fr/job/RAN-SA-AERIAL-CN5G/) ~5G-NR - - 5G-NR SA test setup: OAI VNF + PNF/NVIDIA CUBB on Aerial2 (U22) + Foxconn RU, COTS UE (Quctel RM500Q), OAI CN5G + - 5G-NR SA test setup: OAI VNF + PNF/NVIDIA CUBB on Aerial2 (U22) + Foxconn RU, sphex + COTS UE (Quectel RM500Q), OAI CN5G - container images for gNB deployment +- [RAN-SA-2x2-Module-CN5G](https://jenkins-oai.eurecom.fr/view/RAN/job/RAN-SA-2x2-Module-CN5G/) + ~5G-NR + - matix + N310 (gNB), up2 + COTS UE (Quectel RM520N), OAI 5GC deployed in docker on matix + - NR performance tests: 2x2 configuration, 60 MHz and 100 MHz bandwidth ### RAN-CI-NSA-Trigger @@ -201,9 +206,6 @@ information on how the images are built. - [RAN-NSA-2x2-Module-OAIEPC](https://jenkins-oai.eurecom.fr/job/RAN-NSA-2x2-Module-OAIEPC/) - obelix + N310 (eNB), asterix + N310 (gNB), nrmodule2 + Quectel, porcepix w/ Magma EPC - LTE 2x2 and NR 2x2 (non-standalone) -- [RAN-SA-Module-CN5G](https://jenkins-oai.eurecom.fr/view/RAN/job/RAN-SA-Module-CN5G/) - - asterix + N310 (gNB), nrmodule2 + Quectel, porcepix w/ OAI 5GC - - NR 2x2 (standalone) ## How to reproduce CI results diff --git a/doc/testbenches_doc_resources/5g-ota-bench.pdf b/doc/testbenches_doc_resources/5g-ota-bench.pdf index 4199a44166bec66cd44a60d1d093fef880b4760d..3dc2e39e80f2b2ac1d74bb127c614bb59b8f58fa 100644 GIT binary patch delta 219117 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

N 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

W?)ghR<R!X@Ky^y&MVV` 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 delta 216222 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�J6RUZ%HVm?8#`cb_+qV~g zEnn7YciejCookENSv{WBYuDbo`OZ#>IZ`!-b(J!Koy+WfTw`}rqay=$g6(dG?LDkoO3W}+U1yBFlax(uta#dK zvB2u|j(5C+4Z;fsgG`5+re88ifCYblNgYPg^*8D^#Z&NpE4u!l0qpPv%TJi_b|Q2$ zy`9-0U!u|qW%BHcoCAjkke^DO2?hc&(%2M_M#q81N5auBe(_5$Uc1g}4OFgw5!m%< zpAV>eWIXB*7=XzqPQ0*4tdN&S1HQ>voY`!+XhS&vjhBSGo+6v$KHa7b)6Lgd^ecak!1d;;|%Y$08)3 zY){UepP^_^+OOv3E?>C}m=7Q68vU7B`IzZTu%H0VhkspGz`Za7+ks0!@)s^$TfFij zko-kp_*Y+=UxcOMrOVe|2FxdaO8)HS^D~Q6XXhlzk4$ijW+;l>BVm;`FEWAS0%N5~ zgZluP#KCbjs-Zo~G{B~GRi#zDI+6_HcwPmb0(&D|A<^feCXnx4#VJUV&qN#QkW6tb z6(Wyrxs=WylP@$y7sM&GZV;BHH@WXZi341^RQ2`vFaZ>D2|al^e=S&}7NR<&$P zmMz;Vw%i~jkUl9hlSyVWC3*ke`<$a=lbJjB-goD=Gbb9^7P73e_S)-T|N7Nz;RSDJ zbP`tIs|)kT#TTfhY!j4!OYL_V@+U~*%%oSgp%FXSH58L)Yw~O!E~7ykn_E~dsI+b) zYo(_tsVH+Jd)x+rbQ;)e>X8UjStE8y>x`&QqdkM|SgVnpJb%%j!wm_K2#=1Aj!#HP z*@{O|qp{RDkCB4+xRk9xl4s7E<>l|c!E^Jh*|PxKm%X%N#_U;tqKK#ki(Z)b^!%{c z*!j;q{ruuZAyLtj+>j;%*bd9VWdqP!q9LOz<%)HL88OR<#LTiGeKSdYdO8l zc+&}Vov7>oHoE?Q9|Y`heD>MrvL*$AK2#yau!aQ~N@+)I8q4Ewt=rsv{l<;L;$pEx zsx=sZ1Y-%s+1Cd|+DyduK~yS5ZW;j6{GvkmS6yba-eBmrTAP(E1kZ056yWW^Ao*Q` zl&NNrY#HDSazCW}+HbQ(#zb)iyue^i5TDBt@Hl)PSICclOGxG zc%K4~6a7Ut`w-HO(4(i!`F&P1D%bY*AbQ_t?&(LE-v=83N59>PNWRV4XGK?fP~L(K z03VV3wl0-_rcms&q^xLkWqkC z0*qYa0`_r68kTI1e;2D$NyVt>;_*b?<(6T0q{=239TB9Xd>9nHE~%()0AOcC7=rBt z(yPc!4azNpkiWR1ZpUkTc!H3ys3;_oBqk@NZcE0Doz6?gvyf7@0`LNvN7z1lwx_R; zhnM$%^cm9u+h1IbgKAf~^NEP_Ml5%ArGtu3o)bQBg5rUJ~hlOJdvC|ArstVPO9kGX(wtIt=@O%>~kA zP~Vk-fHOA0Fq%1q_Do3>RMJ; zGOOL;93E~`DBvF=52V2Wcham>+VCEyuAyOgWP~(Bp~k3@5u|91j1VyfYcp8A$6Ek@ z_~*ePd=8*GI(giXV1Rc3`9L^>IRWSro&MawpkQufeC*EGU#+aFf5ZU)SULjeq5kDX8L81sSQcN!@fAH^y3Sg`(vJ^y%X z0mzS)r6Fv~xAxoYUFM!{OJ9f4++#t1Xy0wIB8HCvzt8TpI)-cm!~OQ5o?bf;{;nRY zp|gjmI>?jX!bl<%Z>OrUP4v`G+CM*j*fgzyv+B8Qse~P&K>RQ=R_iF+i!O7G#?~^` zQYv|dE}^>Q9hSFW!X6INJTZ|HS4CL`S(f(BOnqf%9moiarbBN?kyqBNov{0Vkg_@j zq~o%P#|ikLC>`HKJTW6ep>1TfxU%MzPw+qzNnb;_I(u-^ zIO@)>hsso>A}}tMoj^K1>FL#~aU+vh#Z%Y(Q#wYVPKwT2v7(Y;=CzGA6tGJf(q2h5 zqEc$TnKpgeW*;BF zpuk5Tf1DSJuzm5er2y0g-p}$0QJ;v2%NG5+O_N0v13_TSq%*ht%Ts=hEw8lBz;N5_3<~xYW%fun4c73{=qs7`}ozbzL3cj z$ZX!$hB>v1KO4i|%cOvRiAuG~fr+}TsmVDsOvx|k#3uQ{0ZP)rq#?DM^#a98nm&s&*N|djl!gX^aVfbbo z!hox{U8LCxB`csE+yDt`7#SJCSCJPKevDk2{Yc(1cJ%<&H<^0@@PXa~$?vlc^xK^1 zv=3SB!>EAUKhWJ{Bk4LSol&XoAS9m}SIQce!7k%U=tLUEW-n#Wp>`Eg$CGo)@i;DI zhJjFtOS;jq3Yso|mpiNEI?hdL?4;oapv!O-9Bz zXBd&6z6Vzq679NSPa9zsb}9LY+(7Co%ew5BlJNm$u7=t1O|n$6mA*ZzUx|^;UG>w3 z@pN6xDuc3Y>Mm@j^m8c{z+R6BR*LD#sti|W(%0*$5qKzn@~g6142-?9R?K$7Fm#eML3l)H zbnKMrQ$2lrJiUBy6I0LzkIir;I4tb>#fzVsHy2_1V~;++coA19ME>@*YkdQQ0NXvh zz2RRyHFs`*V2BW~{e@*q5pTzu429}+m_QV^uScSeqeh~%I;DIRP} zCMCgTC`xn;4GT+7N_y+9x6YkAS6Em`KG*OuCuLJ6ABJerf6c!Bu*>mpN3Z`UqB=QX ze<72}Rcamlm89VmBkB+-r&9VeF02x<9bvmn24od~U=3goeyY}J0Dj?1aifG_HNYU@ zw7_}QYISW*O>S<^g$rp14(>a7=G67fn-{NMX;G=$jYdUt3!web@GwC_=MafCaFR|a zvR{D3G&?Vs6k91-9(~^d7^`em*4CmsKXLN-&YjyuVM4z^zaU;<#*GX>X*hwOmlPHD z^;&X&vv0MuDAX!di$Y#mQCU)4tZZq4JAp@zx?=G`N+-CA>>x`Fz`oUHH5xnH+i~wz zYb&PrazJ~nPKW3{?z{qi50|i^gEtA>3A|5wEEagI#C~t5eV%Zq18B(_v7%?shD*Ar zhHJ)>j-?MtIsp5?@X?7F{)p8vV!>j5SC7qq*wxq8*`wAOTQy`h3L*K7jIVatb>u7) zpqyF5|pXH|Py zONpFuzpF`#noL2*no*kzSFEEH=jAd!XuxADVcoBzi@Bptg>!4P}a%t6hBI7*a% zV(Q8V(~KXg#n5s!Bepk=w>VPOQX1P?@J^Rs$v5fpD9zqm8zx*b(T+GMrWTuFkdGbt zVPt^kNMNsH?CVmdBZ-P$rxCuoUYb)>5tooG5Q@U0q9S8r0oaqb?;yZVP@S;%gsrJj z35lranUL_@^UqJ6HYGSTEHo;5I_B+vfYsAyO!El}^6>GUIeQi_G<3n@7apJc6vFm7 zbDmqU0MPys$|u8{fy%GG>peUld*X4fDDHjWT@&d4NqN@`H2B02A2gJq02|pqY zr}d7WUHGwQJlrG8V^RVF;08!XqMf?AY=4+izdFa)lX$r`PL$+4GXv z_H}lQ0HNzlQ_@em9KWZJzo%yU4+C~Qcj@a!iHvA6Bu@YfG6Ptjp$I(IH0%i5okJZ) zV}5ZF!uEb^ON$b|uhZ$edo1v8OUlcd0WdKp!oOww@I+LHI|hgY2nEblsa17#wFQL* zd-m+Et*a#+uapU%q!>79$$emdps&CGc0oRYdMtWVowGJOs;0sn0xgFFa8|9=RM*y2 zR+hK4Gy`Uv&9Kul-p{CL;oLc+ylVHEiyGkQ2YP6$|*C zI9j0t-ZVHB8E0koAhbt|2=4v@RENI=S1|@hMn_=_gPtzb!`p`e-_~cfclQ9`_W{(S zfQ4QMaC@sAp}lQj*giPYZy$!Ur*FX2ZS64j0m)ZtI+|Mzl#6+F(?$^;~9tAa<&ox7YSuf<{66~c9`6qwM zkfW76G>Mg3N1De4ok?j&kju$~z@HwC$GYOGvC{COj0V%Lld-J-)Um4 z1yt868}JGKQ~jri-Xnfa_oC8)Fmy0)D^ouOgeQHb#OsLZdSgX@bwfo>0|o5t&~*yc zfu*CmY6bB5dg+;q*8_RH5CFrdXyC^2DXEFLY?^=>J5poda{CTAW0SY~bGTEcP2q<} zJp26fk3Rl*6mIRGHWOj{I`>U8fwyxwYuz`^nll?%`r@U_P}^x#3}E~7ixvXf1GcYN zyVj2vJPqmXKI=ArdCYn2(EvfnKmXG|Ee75m8$;69qp7AOB*KJ6Mbk#dm3yYFUZX4co&6CH+$b7ab!fVT&~+w5;9uKn`j1rCA3lEl^{=JyvC-2&(?%1ZcQb#1Lg)&xiegchDOxRZ_!W4*Ys-$ps)nOuTF>~Ey(j)4DzgO*+k@wYo^ z&?d45G13!39&j};|27p+NiPBTks`gw+HZyRx2&x6!iDo`Y3I(LJ9F*IC1CP$g}mL+ z2Jmj|>@etmwFbSey0W~>WYlZbmE~n>wd&nN@4&rRl$RA37r`D4?zXa`0;%*iB%;H8 z256)k#t2BK#C zRBLwY<#=&s+;!JXSZaD8s~ky(ZMwQ^nf4#bR7vw~S+h%%VeIQH+oy&-xs{eyNU4{O zO=Eh0rfAa6%%5V5{IuVO!g+SZV*EwTuN1JdnA+4%LaMeWaz~Ep}L}Yk$bZlZ`VrpvAHdc{1-TEAh|?AaVa$fBjofVcA_A_3bMEM6>% ziu&2l{`sY~YkWD}=`&||`ueQdxDi$XUTE0VX;U|B_9Ubo2e2oQYH0-3XBvxZrpUX0 zj*Ky=Y#Qm$5%9|J`% zDJui;0r+Zclu*ugT!95DTUlKtmC0IvTUDq&(c5Py{i+zRF&>hYVu1F{BMe8Zp2Uwi zsoqs5#rf^IxAW)~futIs+hdj9(caOKlYJ{U`{vE`i#b_0E}S`%pOY>VS4zayg@pwg zwW_zbhX8z+sngQa4JUjJOuyUQWwrKqbhK-6mL=SIU2UxmS5o?|{hh{6{~$kq-ynaV zKtJyQAD=*9Z+~wue=pxaAHN_!zd&EO62uFNO-gwC&^uSJUvE-0146@tB1H*!tDr8n z(NXxK4;5j1fG5BPrxhP+ji$M|1-42!BbnqXm@&V%z#9(G9-b4}tzcaXH3*=r2DroF z5qxC?{(f}N4tQn;kzJ>!4=#IuEdB5__hJnnP6G7~4ExxVj}p~PsPPs>XlnGP7InK^ zsaGiVG8cno4F_c96^x_htlnF;fuAAsF1dyo0!s-;KM^A@8z-}C*#S6AUNLjG4+UMi zq!RkZOw5;-opm;Tjd(cv5?6uQfba6*Xj$8k@jC^&WIQf&eq75cwLCR{(j>fbd~_sb zhNl@j9rLAPCT@sjYIYTsy22`+l3955t{4HFzTP0GQeSGsgs~Gauffeq)$}M08r4zi zS4LJrNGOW84U3Ed?j1+wlL9|a#f%-O`*!MtFM|Xj0O|a&@D;09&zwCgG&&|eH5G6; zE+s`283owx;qBw$<%O_+J(#y@!$yE^o+xzDl4VcMn=6Qjn*Hdb&n;LG5*hi(BR^ZU ze!Wi+hgjl)w@;rnLl_z5?H?eDj6~Rut&gN&%Ea@cCR1#N5n=nfFf!8HKXCm9_hm1> z^!VeC&ze1JorgQ3>mpHTSXgRm>cN8tFI~D+T3QOUlL2;ioFjXG3LXIaUvoMBJtE9s z3v>M}GaA4_JeqL5xb+N3W_|~;EYNfQ#V$8aAQ>W7c zvUjw%0k-#acUij4a9aD}UXg_cpGe@rV!I7BHdz5Adx7xZ%)If=;dgev^0FvQu*GLH zI(@fn@!jm@w*^jbKfrlFct3w`KoFl36wH-1HIX%N1X+N8kj5gB$tr7WRXUxy$6`nC zqG2H9$P|Q3l{Pchj8MRWT1{a-ybP!V`h=A@La*$ z5?+hZu`#Ue4_Htyt{r%OU%##2>HyeBMOzz?f8^3}I7b2V0qwD*Kit!cA{UJ2{RU6Sm25;{vIi zOeTn4F~LQtmC(4|!pW|oeJV`h2arEhNI&XVv?TBoO#>xa&5o zkHKl`$OD zb?bb8IGh<+##!sW36=x+KHLuw^_YZ2Cd)CBlGYJdr@Bp1Q&J>s8J52E(yUoCXUv!} zd-m)Z)2Gj!H`mM8M<_ymnAcu=?dZ{?>FMd!)zxIeDe=PqurrLElud~rhAEp)$a4JG z208xciZBxnc;FIvt0A9^fy#KK%!jlrL)l}05VY3R)WVkvc{9Kc8okleOZ0j8hZy{E z84_1r;hTU;&CSgQgF&fO78eys8YLO&>5XEsR4Rd$qpGq}CTnutKdD>}(3xX2)Dv!> z1=#K!9Hi35hVU;zH_+>}HI-#~S?Og(*=6}R>Z^*4?P|TMQKhI8R~3{M=je6HtgKsq zuxhvIb;gc%ld%IRJn;7ZK4hT*VDIfkc2-l!E$mLbl)n#R6Rn=83$`+ko zt5UT#it9^?i*96GJ$~$+U9ayDg$DZv`uGO;1O*2L@`8ZFzjNpv>W{!4s+_z$t{|Ah z=LH6Hc|v|{V!|8y_no2Is+|AvmFAOBGYJZ!AD zqktR|7eHhW;(H|Dp#&L!n_bn~YBZXvD=KrdvTx_)R#sHBD3x-#LXQ%HJ9K&jDZCQ@ zB(ViDE=mksy=cm|*$l)U*t0HWPyBL;XlVGGjP*(sGu0l=?Zx^VUKg_}37XWh!o%gxEl%~dGmCS#|e4QRE_ z++~D&Ksrx*n^xT_7S|US7wp~l*0vqnn5k8O)jMB%6}j;R!N`Qq;{d|LWf1n~!)35g zzzY$CMMrJj`SQ_!Qzx@>b4x2K6fH_17O>A+G8Z(6tn%tsp%{PsoM9t%3~26m#2Ct5*9Mo~isyq}4f5A+^Z1w`^u zx|$8P2we#Jf#hS%9~>TVjtvZrA;%7)`a{6*J50U$_HMO*)}&N-G%HEhtrlmnP$E2I z!fYb-$A=s#Y$<*mlV>GK%9y;$acN-V0_2&9V-56-oDX& z#;h6KkPvECH8DEI#xcn-!pKN;Mnu3C13-Sm#*HgiuU@ir$)ZJzmM?#C{rdIZ-aetB zp+twdaNz>cVN}??jD|mVc24L^Vh^n*E=Lj$^Y_s8e@}qGKN8#FflIN!U8ip&yq&a# zGBP`VNs=MpY{P;(k;;KF!ZW5-Yc*<3d1)CC%EH_E4fPELxAW`j>tUrp3GHo$eyqHZ zswxvKNnoGKjl@qi?P;g*+&ScAb`bF2)$7;T;7>pv;994Wn+)pAQ@d}xv9avXI(zx< zZ|`@0|DN)@k8Iz3{jsvCHvQ^_g9qM7OFQ3xh~Qm~WEpc;57K1%X+Z|DUii{z?5wS+ zF1Vd{>LF6T)2YJJ{Wx&gnxv8 zej3aZgbI_lZ991QaC&AYthi*caMJ7DAY$gDC`An$gp4Mmj)dwcl?p{OnuMa&b)ZpK z-9*nplWdXGALS~*zank6=s6xn=A5xRfc6ORVQ)G-f;Ol4`%XJbc!L`cboW|ecL8YM zXBz;L?-(3$4vi5RA1V1ZXRpm^wm3R}yZYNZEjj}=3`?%mH?a`X1&mZ&yoycTC9ZfJ z7oLxEu#ZP+_AJ-&!>z{O#^zevNqOUGL57)xIIi^2tYxR%u$!2enYj|W z^@%uY7>heQUWOv)gz)nUWC8TFsZ=B_s-gw@-C*-@Mt=+Z#MHqd)JA5Jq(8l2=Ra<#NKg_l82|~^5x5y zEnBu`%^EK+FAj$j85y~A=guQXj$~wHR903tH#ajn49XWVnI6T5Z|gO!JtjlJx!nba)|>O=zIk8s;}5_2@yEaX_``Q!S_+M_?27#B=g%B}Wk>R% zcMeD-5@mC9UoQY%57J?OfZHMw8-*<3epPFuxFP%Ijk4l`>hhxUqU_?loAp%%ipDBQ zLwRQUg*IL5&Ffd{>gwe3CcR#30QPP&!U@X++$TImupFH{b&_;Kk$j;8Zyz8N35QXQ z*k&@Bl @>gwFw+>4hkz(Noc7b6T6BHac-Iu}m39>5JE^d7!{$qV7<=H zaM+DP6>tW!1uYP0^|hnlGCV@~40-1R?2~n5bnMO`ir+`S2)Mlko;j<%r_b7Fb@cSX zhQ|pE-|83|aE`)%i7lF=eYPPY<98Z++uFNZwH-<-BwtU4Zp)|$8r=l%rA*F}ad2xD zGc1Yiy=MZ)#wA<2OfouF!>M+He}+MOTDoB}Gqo-OznRh7UGb8vc`KBX&)!WiLlW5| zT$u??49;WHPKUQMZW-37Q#vTd)yl*GyO`0~(fm6_O??x8;p(_4sgapXO`p`4q-BZB zKfRuHn=cCEg$RNAM#RL#BqqhDAo&HUFO6>HYcd2|j(Ac!D6r}#w0 zQ(Q2`eMu1^;b>BlARM*IZrr%h(-YPZZ!VV$bUi64i3ER<0QT0_RseP~F9}c`c-O<} z>pxjG{d?5)e|#*=zxjYi4!m8Z)?%LwRTw4KM})eQq5l(qx6Ds%s4Ei%v$yF{Br%l#OLI1(&O{PxWeR{_ySBUHaxL=Z@{&omyX8 zdj8C*`uaL$OAAw+?MH7LKz9W1r%s-mP1cf#mZ9!NCGPPk^w0-GR*Zy|8Nlh?YturR8P0Ie7|2 zOJQM=L?$DRMhwlK|I|fH>j*&j=P`AZlGF$cS-NdVdgdLRuLp=s_((ww=3V0|}F=3T5rdrB2 zmb;Q`|N7#~*S zik)F-yoRO5s3fe(8ja)YsN>WsS29t(U!6^OTokGF4N&?L7>J{(T+_8sBTvFMiDw)=Cq z(FsW;*EcL8V()>Sk|mPj4T%;?E0SwSEH-bwKPzcosI`GthXz_F#;E z?JL)<^$G}tTY7kV0nX3Hw+zQdN9=e+j6F1p8ml3|3BAlEyj+I7d9AS9oiN_?ui4ih&Jg%Xy8iE}nf_-1JI3}uVr6?*#~<2P&by< z4(tAqZD43{XbdnPE)nbx-2tlKXLWX4?56I1L#IXGX4dG8$dHelun4zjG#MFNrDv2G z8tt18 z8AxY>W#}A8W|W4?75_+o&#kU)Y^iHRF30NnrV32gQSeu-m|Y=dNA)sRnVNb@eo18j zN

0LdrHSpO4}kV`5{H5)*MeFY>O_ei#DpqUh+*m>9rMAl_>?YzX2D=FOWA|Acff z0k(@G5rA_;guvV5Qj%knlQM4S2JpC1@d<#yQ?MrE9S}He`m{j4VCDJ^f5^2SB3$&s zlDYHe0Rsmb|J;HFTtUd>DU%Vl`v<@;^6>F_Y0a9MGiSivA`^QwvBV%hObD53N&~wf z6y@{^!@_{5zxwK{d-v`=di3a}OPAnNSyNL(bQqH8$c}Sl#|W^8R{w36<6jeD{_E3q z=70we*sg{TzoDHGM~G;Qe-X%zJt>2jz*A(Nz&jNqMy&!)%<6IN6~lNx&Vr+}jYgh{G*`G+w%Lnat*chi2*N7N@`5U%lhY?n{6Er1{4m ze*fc-fBMV!p96c>T=dR=V{yi|C*@~08g7PbYBDpgT{wL3jngNOe`emisZhwV8q-g> z`T$Xy90;tsO&$G~uF4xnOOCi3Zt}md7XR>vkKwub;hWJfEcxQ1w2aGVE}S`f{mR8d zZy$tBpTPj6-G~da{m7(ZLtzCME?uBp_ox-idG`F-K{_Xaq$HCZ8}xp&BVvq)jgw{p zs^Wkdz72yvGQaerf2gy*KJ3+mM=q1faEc8aCfGX^78PY@XOVr>xwLaUp@4&JIYDp+ zb2)q@^$=kvSQG-6A>pFrZK(&298SA(rMRq2-qHf=IgoYxpmStw3>kdy+#wYZ zA3iB+wWg&-37C%uUYU#p^l_{bEL&*e3Eu6Zuw}GU7;@5?f2eRE@V|2hC_Zd~VH1Iu z>|qqNHaOIeEIN)}9Ght$9CkQI0quuI?hcK-2Y}yeb6OoJQ4MD%_v;O26sM*_O;`Z< za%wUZJ8f7i`>9@9S0H>7G2~B(uOF8f%p|SR?MUM$m^acB2FVSmF|6`&GxccMT+NP! zq*CJ9u>-6`e_v*7M?;fKc%gK4DK!F*#0b<9V6T&vS2dKAZc|(>C9O$RosTo(*)QluD*3!0_N>F4Q%_A88h6scm)RYCr_T_>E)G}nko>A z&}_Sut%1S8Q3;7&zW#2LCkOKRSkFPspBE~Mh>HW>e=drQbel5S)5pg-j|s0ozGdn3umlV7sTU&x+NnpM2^`erPD^PNH2gX#O3+ zc0NuL;D?6sMWOKtiMx02e&?NcPM;rRA8#6?e zj5q4*!%lHb=1KFWgNlVG-KI>W0Ny4LjU7We5nc#|C(8g}d)mbdq#Fn@^Nu#-x19%m zXD|Eqp7{?Sb^Yl>`L_==9eFX?yPv)J$}g(+e=m5yCgw}kE=PHawkE5xBF|(kv~Tw8xwE9p3a^sL=mPII zf4s6dFkmCZ2A1As?y9P(&d5lIyG6aU9qsTP*qHQEY}rCA_pq<*!xd2^0l_xYhQ93S z>F&q-0(nzYL1F&IOKE%ey%ilB#Rv9|4LRHpKCGWyfIomdR|vEoogC!V;S0iq z(Ft+8-+J>#Ru(A@5XozJWEk5iN748zf7Bss?MAsfNZ8S8P;w^T`L^M3)J}l=E_}cP z>&9fM7so)5W(VxU9EJNFyEFFw2k!%S8XLOb|kG?m0=Y4>EY|$JsTkJ+ND&1;yrdFJv2`4aog84G}1heIY8LV1XfBu+y z0?4zSJhF#+SD9H_>@FlGM$9Fx(_OAidd!5(fpHU2f8tbA$uJTe=SWap++5YrR8iXq zs1DdZ-r|VByoQNztfhNV>l@2!#e4R?&EW-y;Gxyg35f|?aj7(w#&ZDnt%$cr#wCWu z#sfD7NME&KeXvmU*yE1@LngO@f8{_J6%8QF4GBU1#wk-cAtA9zNyynA7mpIX;^X1Y zfw#jy_wx1g@bU)U?#l~ayQNL2ho7 zJ$$@3dV0b(0Z**PbE|Ql04sexELbFhM+FZlJ~8RQfdfF-FI>2gnVDHue^w@uNEiou zXJ;p4bY#-k;VsAbVIIzM{EwjP{}q584tUH>@@5sn_IB8W!zUEB=S2ktrNu=uiMUB7 zgU>I4Wdi%i<$^-P&`>1yTx=^IQL54DZ|CP{bu0BVhxo_8e1od7uo3wEgHO71>yK_Yvvv8!w*>hae`oTtubnx52-b<5 z?3}JH69H#C?t3CN-fP#d67gveM?s!He~t_d1Z=eQ^yqXtm8unx`NIbv+z z_Kyb-><{wavTnt~^(z*-uUX>dzKY}Tl@uR)_|QAouU{)D$d^eaYPG7<)M@Fp;8>a- zf}MRd&ch{Ea?q0ue@_w4J?MfzRxWQUDk_3Ub>!W{TT@d+;i3Ex0UtO##&%T04GBh+ zUL@cEw-*X7U%T$a8zmCm29&$8sp)1`R&jZ`q^U_~Xg76t0|y!z9YbP1?k|JCz8hyO zz?%ex>L?U&3D@-oq~x2i$d8FWk#;P2C(;k}o=8dXxx4rNe?45-x_{@+UHA;%z55=# z^c3KucN*%w>gh$Xnf+E+0^lt-JOCtr`0mi~UAP=T3J>yUTKWgN%+`)h3y^%Z7UgFW zNr!}0N?c{xadQco=wp{HlPRsrCx$b~n%Qag6KAI~Suqk;R!k!+h=3;TtUPx4_|8*T z%%ckH>dJZvf8CT+Cnf4Sshn2PP8gb>ySRE4T|&KeyI2$!85|M{{YGkbOrU$F3nCG+ObAigYq$9MxlM8N@bZGCfs9E)cE|7t6ebXk?2aMf5kS;=LLo0CL?9CF z*s{9Pm(OP0ebx z7G;(je>wnd&YwN|^7d4{PW#2@pY``zZr{$+YIS55HquWp2`6Sqs?`W@9Xa^UJQ?j*#Fks4fSGp&O6)N;d4zU57NU`2e7Suh@$Qo#s?_1#)&&pQAL%& zJ7D|etCvT|M&YOTZ7tuJPJgM}`@8oo-#)N+f1cxg(cgHd<#^{U?t|6?zcroswSM21 zs@-4f_SRl`v!|og)Yb~ve&X1>DwP_Rb(B{&_GQ z@rOVB_`{!n{NdZL#x$1l)PnslUfQ|v^2;yey%SQCbEdL1H!tVLiKB<%eTCOMB<#T7 zfA6r{h_-Y+{%q^_<;p^$ePI}yW20FRztg!8zmf0oFMl)Qr;-T>(;GntI7t;))(%B<|H)2C0p zzWep)xM)GB5C9*rJvugqthtz~4>v27Az>n{;lo%&o7}2wLGy)mRE`H3Z9{r;QS}xVZAs)Zf05mQ z&m)pQhDMkH+{2ge-9x-<6niys-F5(WKQ{YdUq5UTf$hU90WarWhjYw1bO$is39vtO z7fr(I8|dn`b(kzTB;VMo=}-W}N0_h0$j?IZ@je{MxHtukYxH)Lnr)b>U*SBR;k4 z5HP9B2B~JtHLf}-jpt$%6vOB+e;C-Yx{e~h>gCAXSWT5pu@vJHUg&^FF)hf5NyF)} zbC)C>MBZ0GY)U+UU5TYQlw1K3XG2}DK_qa)$!DDMk1 zc0p*UC_G~K?%hX@965XTY(_>#VPRo?eLc}(n2||jZZ(en82rh;q`yYj|9)Wq?}F+K zwl_Do5^UFLbk&vB+Y=Krf77p)73THzbX`q5cj(~0s;VmBU`(BqxMdiH9R6S4tn}RE z@#2yt%a;MLFWa(tb4u!t6GzXSJ9`OO?swmPJ2pJj(ca#N1!o6Ujdfsq;}CJ+4ABSr z4z{?HS=a<>&ZnKD5?YKkzcZiHT=oC%UdOi|Ilp!&zkSd6iKXPee|*BE-4 z{ODQ$au|h7bsVuvlbMt2UrK=ZCoji8n@PS>sUrBmxd-S#hQ9?vejL1*O_2Bt!2;8#D z+x?|YYnFPhdvW8Mr9PhPqocy#d~^5t^Jihkhgf3RbC3^<~oA3K`toSNr+ol+7DL0M2&_3j-r@qtJ#6+dhm`{5k*|Sq!@sC7fr<8Vr z>eQu}7TD`BSFgi53~@P@Rn?PuN#tab1c;R#Lp_z^e~X7D)ug`ss((WP@8V^l}*j%J>2fBE?r7JK-3^TWa?xlLNJW(^?urp=op6XFw6Q=^iSA`=pV1cE73 z+&sN~d;^1?c;X2m>;N#}16}6`LT1dKB?u3vlGWoA0NbZvY~SGF3H;obgRmX>+k^Sf zE?Ds7f4sRo5%BhDfbD)<-lR#7tX#X+%hwNSGG1PYr4z1BGj=lGlrIv&3L***-?n}G z{{8z;pFR!1UQ$vbl}d3&hnnaxWU>Yk*qNMOGFIbZ9p)$L`hU%^uYczO4-BwfrPd<9 zgjO%EsnNE!v?`AfWWn@R|om~ zpE`OpJM(5{M#l9k*D}&?Ub%MT?%g}^EWvMiaPK{>MvbKd8z~@?2wy5l0825L^g0J{ zrz*fBG1iQXjGjw7N6e6RQ_CmncRp#|`~64iKYcOur?2k*>5H*1Y?Tj`Z+_Kz^4G@W ze-9LI>B~=dXcT=t#>%qdjB8hNvu?r04Zvi84tyiW9lPmkAR0de*cmE z^WMUayvQ4SSD#3JrsRm{y_S8y?z{Sh`GT=xzp^4-A*niY=wRlJ^qZMCfwwzdyNn^? z&%BkD=@@XOnO#r62DHAdP5;q{_rLnpf5*T6>a!2;k9BAj?fTZv_BLSIXHTC#fBu|8 zF6-~J5I%qJy}N)`W23`%YpHkn|R0fG(>0CyAEU9%6c#Rl*nz7ID5KHr9i9;#4mn_8_w6K>l(+A;k% zSx{Gk#Y#1qk!YQM{FZ^u!ti^T+XL3$MSrsDJygTJdv^?Z^3jU}e;MNWwgH@1H*9mj zDlm#N7I42UVE%yf4yxPQhRnSVqZyCEGMLdAEM;300{k|noeJ}I4V$q`C=q6SI1F1_ zrwgX!rzE783~6P&jS z2lS3jNtylV9G@VLm%sny$&YyX`G?2F`}zmOVLl%k6C0bHvew-lC^sNHnM@rO7azdm zxw%d9^7GxedCT;H+N>;HcbWs4fHz1`5!+0oe~ktn1M#X0F8Ke(fm)qi*DRi};| zIC1!ZQrSvo3=wZ6ae!b^WoX~teSW^a=T4uJi0cdTa*rQ9vj5FDj=cT$t&H@#+N$4w z_bvU*{AIw}3&gUg$Aa@)Y{aHc(2>l08lbbo$S@0%>kc4)_Usu9{sWdC^IgsPKMvgd z@%w=vzrXwYkGp>NLFWhB(|=!fp7@pF$-T>$}@qYH~8K?|XAk*3FFCn%Z`Z?HJfyt+H9!w@9HG^%V^dUw^xH#n_>jH&zeW zd%pbqqp!dG6rZ1HR82S1FBcTt<^~1&czcUP!dG_gfF})>!yD;WiwpAVs>{_aO~#J4 zL5Fo{(DA|h_da<4z55^ByE``Ou=SZb+gjv}brnSgxi@d!xOh43#F^s<5AA<#_bc(+ zl7uO7!3ohpNwM7U;D1dKJogCRCV#KBxw%<=eHI4WkvA2`(K8cC$Xa_V>lW%Vz{?*z z{*uyCSkOr=bqpuoz(%0k+@(~u)YsQ#;T{; zBF@ZS6sj|TCLY?H4(BLKXl$74*9gPlY>x=fFl z#=}qd9eS6;4F*&XkBo{=NT6NosqrbPq%{e?1Ed{*{iW5b-M4sgg`&xmCaqet8t{MZ z#tkS^COIW8bz4+oVz4OG%?-I3eS?Cg&zK$@B8tP)u76{aVMT}o+!jVfFJ7_~SUT`( zG$090(1`cvaDjwx@$p%=(H(fZ4~M&a70QYX-~}&Oym;Qz^SPo>SPm8}UgXQ=5NzMH z#S4BB@OFajM2g{~u^K`?j&lqViQ?koNbnah_S)LomX;Qxt}}^_j1B{IodEm8>FYnK z!~B<;k$?0bbf{EXrBZD$v?Fs}bF;0#Tiq=AFLQzx%oz6>A2OXts@Ja#N6GgH~p+}Kce^UB4doEu+!_VJ(p^hf+8{rTgM zKf0Nb4!_05B*mk4$035~19aC9hj)TRB7yB&M@Kurm6J@n!@4fu$frGJ zzcrq`BR%@N53Jw3-*3%G`DUzRNOAJM>d2RUnZN1J{B7@*Z~CtrD|Txd3tOA&j~_XF z_J0igr5AxSz&i>7J4qqNy9~I`%*>k%!T?OQ%EcWzg|ewuDXseC!Kl;LV>B9yi*CQM zYiH(-YwsM~@4b2RCU^JcOP6}MZ-Ud)!^3^!Mz77AH+y<;0t4b=qxZhK=kler-0Yi$ zx3jCtidqzs&JH~=;vuKw?w!$lckd9)e}C`Jh{M`z(5V_5s>(|8ON;YLigL=C} z<;9s%A^u!{_iNWK1H-{hRCeOAfj@zGESXEdc38fNtOQR~K~bU6WWuEoDx!__lwk>E zh-u4$l^W<%qqMQ2vRtKVg-@BKr`u}n>o%LJD$1pe;x@gmsIb7=-v_TqWqEmRO@9qQ zJ=}k7O?5+kJ*+HRjaH#(LAH79gc`uUN_~5KFOc&QAlPUa3X+)m`w*%dVRxxTR(!P@ zKITed*THft(ecsV9F4x}C94-68DJkB9YYjW;5a!!;PX zUf0+R@Q&$v0|s{Fa;zl27phJwVd5Mac!w*uOR8cLl6ZW9Ff2Th1OgzszKyAwQn`-X zcL2@<1E1pNw)Cat2x;9Wd-?j3q({K*_|$C+mMrxO3iA#M`}nrq7(=6Bt0ISEDgWc(MjxBm~AT6bec3 z*U6J7b8~Zn8??5z0$pd41b^5@N78UQAIuy>$-S=rgUUVj~SRTebWf(#g?{q97caeopGeuxB!k(nTH z78MtE_gJVY7|uaQU-x~7YP9Y4Xh+!{bM;VP8|>9_nwCkcRu&iJ=iknQi>k^>aYI8- zPdAqFsVXP!@*5g%EB&@7ZL})o5BJUAe>(EV&qu!hZ0w`1+)vxjeQnM8#+vyX^ZCKX z{W^K2xkHtgee=M+H-EEl-KeRl25cY1PMbS-#>icb;LSjGPBzgB$O>iYYP0nk<&BjW zj=fcqcim|>A3OBcmi5ba?M#LHdH3KxfbkcXEt~t;oMkU8*|K@_$`vc0e)7>Zt5yNX zuV1%r`Lbnj1s$6kdklo=mwZF*wJ*J^cIoxTkLewP`|OvLUY3nuuK zmN-E6hQxjkAWyjc{rdY$hf zs&3n3>oE1{3}y|k+cv8Va;08MO$niZodJBp*eSX$QDT8zQB^A~uc|Mn1$GM6Su#5- zB?d_})%DWTX;*=+3q)a}$jGR;I9xVGrBZYSXTku^$ETzuZ{M+T%NBoLupm4FsPdBK z%fn*h7k?~V7#bZ7bRAGV5;vAU^2pEDZrte435MHnLP8Q!x5XwW$EKtJu+MqyagIo| z!NYU%+q=gyzU z5sKWVOj)pKkq?Ih*uD;!jGy1L3!dizk^@~QsDB;h{35ke^c=_d*-+ue;OP4N{ zl$4+-C*YuXWD?O~2(S~XMuNW>9p&wsoBsa2 zyMGVfzkA2gDXz%tGIiu+XYbgtJxmn(&fEJtIyy-@!Jtd8rt{kesClV_^dvsq*ls<0 z{(N~=WlL)-kV!^ZApKMWsI}AD+t-U|oe4QHaQK^nIIhXEPN+3W-^F4NurbqTy5oPa zocr+)1AqC=*k6A8{-3|P`+@GlSLTbq?tj1eN&6*Bb8fp@)~RpRX`0WRJbvZU#ggJ; zc!R;+l6nojSPT=O0BncHNmK>+skPVCst})l_YG;)ZG&3c-Ko~LG;ZGT(!Mu$W!}7g z{mO+co}M1=?rYbqS-oo2X3xz_Us&?wqmM3My3BKv$Kr*H9-B2|<%$)XJw2B$U4Qc2 zGf!^Zun}&ve(gE{fB1)6JQ38xCE&mJmM!6-p>OQjm3Hn_&aLaWb260*+31L~!=SsJ zlTlHYbK>2-9N%@>SvP@!!-fLD&|qj&wYHdy9k3Ss>hn)O{^$YxH90xi@R1>sIMLhT z$wWqX{B+TvK15y}SPL4&4F$Jz8-MC*%8Ls+4XsYQWoWQpuW7BRs)UW31;e|kv%_pM z0steorlrT&*#RKmgqm#!vNLbCG&hSI>fx7G*Hpu2mN-=51x47-4@QH|c^rREfM1Y5 zhZn>N4hrN1z&9gfWA+_9aPjh`!s6oEh6aFfLIALCG&YKI&xUbO1J!|rvVYXDfUnh| z^idqE(?eXOW^|>W^bV6C2;hF`UJwI(|Gj&#E&AZWhYtwJfA76}xD^*Q_M&mOHb8qD z8h`~17%D#>&r(3C%m~BAUQ(}{nfA+}FR<2ns zjEI~xY0}zF9tqpFqux?j0=92ozG^k_?La{YQfbz&3yq0gv1(;xe0(e&&klliAG?KMVMd_0(Q8<4Gtzc%%MYv($mu`D=Ue8U9Z=} ztI19hV1S)HFX?aSFn?#+^nU$Z;rQXV-z+K2 ziwF%34GBq#ixM}8`}+DBpF0uTu{blpi1`Cd<0>Aj2frK$b6tI1QBmQ=i)m-hp1ySX z;*DFkDyphvaye`{%-v?-i*O0pi`(VL%`PW904yh;O5qJQOgl*!mnO#cq1?P& zk{dwu{DFRRM%wX@?%x?5w&vfutdiF{tY#ng6~_+0ed$74Lv2-%zaKz1f#}T$r9Is@ zY;@na(ZhYynt#=+mn~Tem!6)U3!i)b$;TcA{P)=8@ynk-^VkeGK={obo{JYQSoYjA zgxIfJvu53z)mt`i@!sO)xNzH67xUcGoS_tvG%j5LppD|hbL3ar@J*{RcL z#zvhVe|S&bEOt8WA3pftn{R#tRKK*m1U@y4I96I#YJcwOCVwMUxI{WUx&luryepby zl4iNIv7uI_RPFu@Rqp3+27Z<}5@B%r30YL$H%9URrFVLUk@6QcDvkrNILBX6LJ_n$l z8^YiD+JCFS%!!u#~#HVJa0C0Oa2L@85rLpJb9CG5`Jtun=H><`}$%`*1>jAF}1!$N(%W4pKvj zI?gexW0L~}Ny+ff z0diNaTL%Q&ZSo}VfB>NJ(KwPFE*C6a3IyK6%iGOu(q@1EK)%4;!vi;>CWb}F0PL?^ zvwv>ZoLT(Pu&9KDh}c-T1pJ>eZHjkbAn^8CbLRMRxq$6+=g;TB+Tk{N!J>r$Jl<3D z<^}S2f{1WIco?n2h=M~x;E~41$M4>~`{c=!B=}3IRI(>)5H~f`a0;(6g6+MPJg9c zIDb7OoowOTJ3HYc@1Pe95@1P#6<$&twqK2Ez8@<3NPWOunEJ6H?SZ*u*xqgIY%eb@ zDlIO;`fzncMR{pyDO`akgrupow|6My@?O*#Y8j-}q^#^LKm!uM3%^d?+I(lY@8kP- z>q>Jk9^KQfmJZl@jvYRfot0HwSbqp)^_6W~y*6(_!0zF>X`?$_0%J$Q`=(7E`1HiM z4e-8x-8w&CU%+-i`$f+^x5?cdu0Jz>{@f?#Y=nR4xq04`PtARFHj!|C`SYJIdttGk zug{)cJ5L>XQ_348T-WzJyDt}By!>6Bq z^3jJ6N=l32Q4!r6(6OSj0$zOr=_DMCSf8cpr$-Y)&!k^XyQ zgVvsod+&|r=jI@FRIBN1H{e|5F64sjwb*g}mXuKG5xBG=(_(>VxVgExN!}z^$d#=v z5~;Ylx)KP+$x|oZeDk%0#D7@6fE&aK2twE%gy21x!$IcE;EY>0Nf~8ic!W^*F-*VV zKl1%i8ssszA0vMe{AI-a50Kv3X*A$=Y&AOQcvv%FzLBUpy=b@z>Jua3Z=@pwSDDc| z0`T$yZnnje4kG`k`j1EpO4mWjnK&&O0X~|CGCVLe*3;*xs+C|=uYbq(bulr+Og!m+ zC6W&Vw>f;`3^!O15*i*J6%`d5hm&Ej4uiP*R>ar|)TeBXPDq?FbLNV*Yk~x#Ns}jS z+_VY4j~wZVN%5(vK&=D#0z{{A0)Qww=9kYuD~ybcPD+YNP62G^g~E#Ph^L>QhZlxskw7!&zT((9v+TUd4b8V-MEp=OI@=3rCE>80p33U z7eAl(%>2OM;K@_m7A<)JRudk;xJZO5r>NnS0(Ll3Qc}odjr{z4nM_9dlE`bpZa5_h zA?ZtE1ojC!%)i)_^gmBsfA}yOyINK7W^V5?bul6Bs09_1Du2?2YNaC}?R4Y|>P)oR zfZ?N0F7mN;0(&nhDmw7yzSAd9_gXBlo9_j}X6_Q#RBcO)%D8s90=WCF8{)dE{M;-i zcna^toy_EGLgPt>ZBcP?2)5e^gvfCx2ouJoB)+kK-=(WpipxqHB#nlSb`(@gtZ~>u zZLz?Iv_q|KZGWh*D=5sre*NnCv~#D=oxPQlT~=P+q)-@5CN$v=Ei2Syr$KxFu)W7= z?}IB2ochv-rF*?jD{iOo>f( zbgBDB_f77b$UzXE%jM$ho^S%&hZFwo+SP0DPd(PIS+nr@=YhAwEuWq@Z{AZ+`1$yp zK5;ZRBkkBbdyX91$M^S4J9a?Vsu&w_{^sj1zx@28&p!SD;QhnHeaSELXMSe+pxoGgr(ou(Pc7Hv#$F4NTM?FWYRhuvSRA=x`Oz)%xE4W+?!sjmN&_&D$BF8Z-2de^ziGuUJDV0yz<(s%<40YI?YGu z2MjQduoq_?AP3C|`5A@qqcq4<+WXzRcSn(z2KFWn3wj%L!8#5kU#%iSzMfbPNO)!s z!F;?mdXJ5ncM94ucP!`%-iFWQxZ~A(F}{oNSylR_QLWP zL&75FJo+e47=qOGt*LMsm6$kXircES>jHuWlO|2_^zsJWjs)TzA0M}ME714=fxwT; zb90;QzGVwg?w3}t2D*-0P*JneMo-Ua(|@N4!ovaBpMCCG92XFc$0Wr9w!0yFq~L{R zOQ+A69uOQn_nD`knm>;lBAhvA_J%E6P;zfX1Ts2`MDVwSgoW|=!O_vtJ9g|ic<|um z%a?&lF%73|2m8Z14BHO_!2Z|DrvKaMI&*Y)_o&rcAnC9rXJP^H6&p4G+D^pba$EHa|f5*U0wU$cx(S#`%WA^e*Ww^_!2&h{k@j%F5}VtucVzhVKy3i zx;p!M%=J~}=y&1pG2~+(7$g-*0*uV;r?cnJ0kEU4N!%|Z2ovG<86H=_MPh7lAcxNh ziwLc+ud^br2l9T9hX`MhaU%G0hKv@LUf_R(TA55*SXcmnf9C9|^B2zF%(_)sRjFuJ z7}^b1oaKlOfyl;(?AbUa#nMBy`J<3tI$j>2zPsBD?>%#OcTP?=k)TVY8Nn-Nx>c2wVohX;(Y@OGZBk2hfZiWgs;|M=`B3l{)yf9b^+pMHOA z`io1J0BEmTvFh2mj{#{1#D>dND^|ca;Uv5r%Qzn7^zuUf8cKxUyk*_mwZ1++B}I9+ zv#wq~f8vc@JL)U)V3Fz2E1M-XJtpm!zxt%N$2dIf5Z6~;xp=O;ybLI7ZeEV5%R~yn z0B#N92EZ`lha_?bA@J}KQ#LiWt7Ly_d0k%GTRHFex7|wm!ddhErizw1KmX$M z53ig*v47tiY3I)t6&C?E!$Jv+y${Fc6W&fD+Q=pi-UP4-s;MlKOY0>K)j7AW@7lTb z?5Shb6(z$?M?+0jb#+avQrX_tMy8qf!pngdbaW?!$kn4z$an48MX;J6GjV@S5a`C; zSQN-3N`k*cBdxH>9w3)$sYM(7yJMJgQ`!zdJvPr%E5gVKnF0oHHC)p%;GN;*pLI|9koJ@ioQz_Dp5FURk?QzK|(`U|Hzj-sj>7>a&TfKgL()Jy}p<%$c;g*29 z!J(l%5%NH;SiM>h9x?yv`2es0_;3Pl~FwDb9KadCV0?0NUycW>RgRa;xDz~L1-R3AY}0&HMs>oDw`UbY`*LiGCo zPE;ocyafT<^=$?Kc^fu6GsQ|Wb(&1%B%!_}xzT|XNQB1HMhP%>KvjT30Q3EC?mf8o zz`KW!oIHA5+1%Xw|JZ+f@A$T=bZhwgeeXMolK{go1%?@57|PHI>D6)Xw%mJ7p_35O zi=DXl-s4^+%d%w2MYejEEywp9+Ur@5*)(i1kB^QtRu-lw9yMrHmO+Dc*eqyg1JqI7m#}|&Peg1=f}NNoa!p!# zT5?KKU43m{UhbZccL#@s`1pDQp1XOvxwtz!yE!?#Il8(#0fht55cl=~ljpG6MTLcO zxf~EfE|=lx`Ej7u8l8?rQ{v!s#25i#;2Xtv!W67y0W#wf}EiGN$ z-N4jP@)f>3ts{T9qLyB6fNK}dF|AhH-PHv@2R;X{HZ(TENjOer$V``4l%uf6u`#S; zOal;+h%kJLB4NjDG6k_%_O{#X0FMEou`IJ{<;vGzeQo6%h{Hes+;h)7`MXzNeg(k% z#TQ?A^0$v51%C79*Is?~`9J=i*e2JkS%Y6hOdcKq*tdV#q8ng)uZUk)Rg#yJ78M>i zpqG!B^|HRs{InzS``?G>HKp0d5ASVhu1ilj+0@hs*HKMv4FPkcUChq5ckond6;sAb z&=25Fqf%-Wy#{4>?a8pdT+efo6W?Ev-n(<={@t73T-2Yjbex?Y$V!Rd9u=CIk&>L4 z2s3LK*M@)a_&7O%Gox{xEGkyTmeIcc{;tlBs)~}5f~?l2+NRo4y;7`Eh}n(hd1=R# zGD%x&Q)^3$xVM*@0+#_e0+cW{QP(9*s*{A{#b9(=-4)gD`X8M1+jf{*Dy&Z@L2?Qg_jiki}iG-r5JFZBjjf-&3s}xGL zQh|88(O?-IXlbZF^vQwu-g)onfkS=0Jwv9!A+(4#($-Xym6|Z1*9@7Aqt+pq)SG{> zC4-I#o1$Z6s02uo`J0oQ1G8Q-UL&6#vepgs_H;Eh)|HhMCd40p_np|FK=0CdM(Yc|jt*KTimGIfzyc|y!To=9((UC{vj~A8{H?=f(3WZ9I8n#c8 zbxGbAj9~z|eSP8%UVBAFd3t*KiIaaP(lRs3D=XW0yxzV(jb1-W^6SZ0okFXqNUNEh zt#53A9XLt1DXpw12QVj4gY(cPNQBWe!g;`U1o*J)5|1C*x95ZC&|oh&7Y92#J6l^j zyd=75!$xF-*@RS@jT<(seB+ImUVH(qsBYf;^pj6M^_xdmqt(?-&pz{~r+$C?$hvjw zx1iP47hihrSpasR@pg9GbSi26sp8zM6ki{=u_2??tb+lzEbFjd-aRupGCgKWj6cF{ zYt2kcuCK4tsMSp^O**}f7#(M3XZW20txii&o!sC>`0JFCE@@XwLt3=Fc*mCu-S_UC zyMOo6y*sDBz9{Eq_;-};ZFb7xo-ST~ZU%?LCS4I>7Jw}Is8ZER zlHUM?lT(wKr2z`w0i|atvQ1V(;W@XxT_EfPq=thflPii!O5jO$b{2miJg1GDTTsx- z;aJd0&^V02Q_R4CEjVaKfd5IohUWzo&f|^48%|>d7~uZwxpSy#JI?%siJwNRRj7~; z4K=hKw!*IfD%HwqZ(?&PY)8DEFm^sR%%G?Nw7SX_l-D$cghc`p`UV65eue^F-?=Mx z*V{}u3<>Ow#1S!%{q}!1TkPzd-MyAAwOJ3i9T(^9?j95o84u5N(swhoRkHGtm;Ts<^8`n9*-^7QxLxOMB& z~Hr&*p8ZLAdm-mN4@aS>(9OL;v>I&#MOVx%hAQv#nTh{VSIg& zcOBOyd3t*X1_r+S?z=~h9LdYeYi@2P9ZnSr)V!Ijoc_eYPK=JE5guc7{HK1H|0=NG z|G(%qHaZU24s%SHSQ2cfDo`=_j?&5P_{DKL#T_9qoZ7=fLn48|JYWQ1pProf{Mxk+ zZrjm=hsuhJjXHlFyl%Bv#zw3SRb`c>g+{%`G@u_H8Sd#4A=!lTt0O@JXFgI=&ln}j zOcoUt0_qZl7XH(!RlN4LhPtZy>Iy-7v!Y)#pi`Izv_`$kY#Pw06b8Lc$me%-@Zb+H z81zD+5Xc@-MA!}vKS9Edo3{s2b$mQsJY1dKT|B%!BBOsJkHsGsb$65KbrktBe zwqO8<{b4W~;FJ@Igmrbbxw$#XDaq*=@Yx)WSkkZ3YK?<~#}nd7Vm>*SDwQZZTql49AsI4rj zC@t{w@zAMdEw$wuiQtQC7p1*|Qw15Ho|(?fNapi-<)tM&Ui;wSAcw=z8w>!41R2rT zhfF~;%+e&F7wn(1jDy0Gh&e^xo!j&G?|pag?&p6$etUL8nw$ULvwQrW+2#34>G8;t zw1e?S_wS60NK7~eGax`U(h>y&JEgG`SEW)RudghW^|mW|xPpd)=7Rmb)rZe$8*ZL4 zUcWfk-c&lE>us(t6Y$t45)yiPy5X=|%vd7BvGz=(wA8fJDJ-=RU?<;sfjC%j$two? zSvG&0E$Hl=nx3hxs}uK2ii?Yy+c*PeGo1OQ73C7SOe&WqrKa%tf&+&RoJ>lTDHPK< ziB#0nt=7W8HxH-g`~$UT4(DPbb%)Y|@IZiFIw<#mNd16F7trk@Fnonli4w4_R@k>d z+MAFjL-F=j4pp+m)GoDhJJYj^d{}-g{{Vl#z@Q-Phl$?4Gj``L0QMO2xMLS-mITb) z+b>|nisf&vUghS^dgS4U0Zx&*JuWURItE6BU;p;EYd38`iC#;Wu3EP)JZ^`xr*}|f zB+zvafZTup4;IS?mlVO1KRor6PhcS7`GC^So}MdK*w{HczqNMliicOg8^WVwQD1+g zkWerGfWN%<8j2A{J(7ZOKhq%6vHIoLUi;JY&%vAFM_&He=!ln1y;v-7AMfz+@I8C> zoIH85tgNh~qoc2{k0c2Y9fnysUEDJ1Cj$FV{4oCj*#E6`n8i21GjX3pr2=dpMEo2F zcaVZ~1nHxc4U9P3$s=j22bU3?x;=j)kx{RopPRjW>9h0a&Z%&~H$18piUGZT*kT6Q zPfd&$cMA<#wRr%!orRqOER0jpk4*d{Sx6u6+u`c^yFRxZB7aO%o(|``(-D<^`{D_q#V@dk@NY}iU=B5MtKZ%Zs^z?u6bn|p` z^&patBT;qWxrdjV56fF3lajz*x5!u-{%R>7m)wr!DNA!ehprlPR0 zAZO)kFO?S;o}QmLJ2y3EF=i!v3_vG%tl?k-0ynzcluWKIiV&L-+4~asS>|w=U>8X|Bg2p83%C_d9<*9zPQLa?Q!` z#)5-siN|6igR|0;088PTh2w&g)yAkUxb!~h7Iqj_y?U9DoxhKhWUDUm|8kyx?}tx+ zyl%ZbDl*DA?8Z`^MqE*xlbU>@t*ydFf2p4{OMmi%O5mYCVJ5gh> zT!VhvD;9IOT)^Jyy4rufeu-t+3V-#!1N)U~b@{2v%>3NE($cExYGGGbGlwlxDU(xE zkc7W*diUNv2M!-PbN1ZH#FOTsVNN@*wT(M5HBJ05lT*`Vp>~FH$3M+jpQx z4DWCUY=8RMXI(wLT--eYw^y%U9~>18ygDd6B0MHGFgzkKJRCb-mcIJt8=ffa@nKgF z53JI}B1=qk%)^g7yn5rtZ7xV%hZ$gGY#huH0&#fnHWyd;2Al2dmn~aj=j60`o83#V zzUqf`p$LD(*h7EcShMc2U;o>sp0GCO9Q(P%BS4E zefuY$d;;@gqQd}PC#X)AO@ET;_>&|7MqvLJ==%Q&*zf;edYhb_?(3JrBoR(LWQ@Ts zFOm#Kx?KYz5ut{lJ?XfFOuy48^<`*isJE-@;>GiyU%!6_XsD1%C1SBm(x;Nk2J|`r zc5zQvNkJ|EyI!pvG7Xvs2V_zyy^=FRg=6!UlTIk z9p8~?Kgij8R$HX6d$*fgZBR?igN8w)et5_XQ+3iTV+<31KufeKT;F6J8P;mmT_QnK zV;#)#4<3Kq6Birifq+??CIrJQCTrc8tsw(9g`Hdq|KRBFF}Dw#O88)`z1Pq z!GhdARLeZV*ii-}w)Vkqm&v55X(@mYCFSMpHcr1(qSfhuwxK3Oc=?!0s;4W1aD3tv zQEy<2sO_LyJve}Nmr^cQD-~LeN~cj8v`W23u8@Cp_Xv4BPE&PdadukL#~-{C$ntcs zvv;(2aC3GpDaz$>8!O9;U^EK}@Kea7fOFq`{pH-uWPcBTe8eQ{6BZWapQ^0nwzUnT zwcQ!MK!A)fn0dli;tTjNHJ+QNGzUPiK|ugOLBGEKt-<6khO2K)ihj7z|KnA~)zSLu zc-wtpFTUr0{p5!}zvHEPUR549w(OI%*y%V1@r@h!rq?z z!osTB8eRvltsS^@YX_hI(Z{P*%=%}E|)9n>8Y=;Hx3N$ zJ+Qy2xn*=>qViOgxUU~C(k@{8C6eT+Q3iFPIt}}FaL}aDYE5RdLaAbNI|y&b_Xoh< z#O|nnu5SUb^k%XA0s{krLjZmwaq~NZK1%nwCU!3pzz(N> zE-GD8t1n)>0JKvfmB=Oi@TgHLj5@7Wr7X(Lg6A5g+^EwGnN8xJ9*o$C71RB%r%B-w zo~}AXN-;#C_u%SYL$S0$8D&us;e#&a9iXOkx{1@G^jL6Nw-LF_|X2s z!a~#+X>5!l))NmN8R`xY?d|8|$wKmuySJxbP(bXCxC2KHmseJz6<9QLM_2AR)vXUH z2Jn60bX6$iTy7g+DPT*&iTLESl;YCTRt~3E+^5!PVTThB2C3&FQUgq&;LL}A=c3L| zm<%bED%{RbBkt`Tz}`F)%H7gwG)kRTWzed0YPm!#BodKOq*N$i@{8Ef>@2W%KrO;E;gskUiHN^_mY4}g4PP0K ze>0eTV^;Uog~{6&CvHu3m>MI0lHY#$UC%!zN4+@S{{EMi+?%HCLGCfFs7}z{oSB|- z{ODnrYa0xDtlJZR;uK?3g#D@P<27c!qo~|@Yle6K$20fuoV|bd+_#q%vg%z4(J$r2 zM_1<_X>X~nuP#qGemFkb`0k$W;i2K~-k!Sp26kH;o7!)HXcxS#M{|Cgz9X63gnyH1l!+v-<#!&$a6>tN&Sl6LE(8cX6*1JV*8H2yz!=I zK%hNxvn<)LWlLaK*jsPC1#~?kZhJ)Bj*!S0FaJQBWy`R?odx)B@8SZ(1X)xKiHiBd z(@(A6yw%Oqd&$xztJbfNh>3M}a|;X$2Vi&g^78f%aE1}V2CcV$+Pk>^>Cexy0GGqU z{jnuxldavu4?pbb>-Xrd9{s}~|A^w&NslBye=lp zCPma;i^@aB>8{&!b^%FoA7{#!NFix?d8t~XDoWnhR}y~RTz3DjaN*y$cjxnaKb-&m zx~^>Z^O<|Lwj``;Do+Pk8#L$uvc|C49g%htM}RSQ#5yd0mr3iY%2W16Cr3SZ$p4vr z;kH%j`+Ga;HHu#IfX-ypsTI<^+-$nH^#~#AQ?yP_>AG`sSvlE6y7%()@nE4Cb9ZkK z4{s#(xO=(7qldSKf$^Mf%g_)o8KnxTTo#K(CY8ap(A6c<8w_v|TAG`CdwO8-Y-w&n z9&EK5UbG^ozZJ)78R297ed0m9yh}ijOm7h)PNG0{bRAhoaHm29j{;$*POm5O3*35o zdn8f`Wq_QY|7@i5hWg;mfxMfihi{#>Otz$Yq6bem#`;wYB&w zOI~;7A+x$mua*@T<|Up?kVvIwiS65wIBU32YxP3Xn_5}>-M5{q_2Rws-t>THU==M|Sbxw?9Kdxu8QagK3+JD8pt2;R5vgjZ1S>E+9|+B={W^yM}# z9v(3}--g%2qGKYq?|kKrH|$(oT~Um{l2vQh28KtxwQ99rNGQ_JBcpsnfl&u7S^A6D zSFZH%VLkH8Upl(E0$mS@j0Cz4qr<}wt=MR5Yinl@*uK@?J~$%63t4nRf+8X}Y}@94 z6CC{9i!VO>$ip5i-{)U=VeO_(q^l{$c0V6fk%Sc(77iR{u}~Xs7ArbBngoAURaKD= zr*fPHp;RiFUU+1lPS(C*zx~}Lfq&|U`FAKv`cK|YpFSh*lfWd=fU%vC)`!iOQIgq$ zi&e?%W8*ZjC+$-wsD>SIK5JC!j&`nppo1sw?&|C9?(gjZ0uS&m5%Jweo#x=Lxqjs@WdR}J|;TiNrC|dwpLVFSX*1$*2d+v^QaXJ++G|;9{^H7Z#)R$ zT%DO|%{(cGk$pCM2hyx>R#|S^isV(g(+xfYv^xhYmd$*_V-@X3LHIwqxj>3;torr#6 zuix+D!~Udg{-8Q#M<4H0b$QW&{U7IMXSKJt4-HueX=jWv!0up2O<~cS{DD~dCTppP zxIa+fPoKssp|e!-3~{=D;AK!UsNp)+nZ>K6B;Qynlfv#Z3>cG>5&?yd9y?N2RasG4 z0Y6o$l#R_z+;%Ro{rbj+o}M1`1#q4)L3N75V+L=w3;~vzEx_B=gtxP?Nv4@1?Hw&` zodLmNE}otN!66Ybap+EZo5pUB!p4}GUGD&BheSl#IXN%4L5(ec+ylVO!GPPV*R6B*^hRNij!uzrJAko=M#Y3i$3Ff1a~o~9q7HgXfAQApHKCEwwsv-; zp(+q^zmO0YPw!2rfAXoPe)X$IJ$-!x z!y-t>YA=+#?oTX#>z=p^o+oaE=Y{<+Z@>NafddD!va%W*8%bS~98E=)Ov@yu7amiZ zv{+#Or$)!0>H6QjojdnwPj5e*Y$U>q&fguUJ8@9hPI@{ZOXS!X^?YoMF3UiIIVx;1 zTL5I*Ij#KmwysVA+je&7Azy?##E>&8e%{xw|Dj0)tKk*q)u8&dBwQ zeVR-UNktET{1XT{N>HSX?&HHlLoi;6M4ffDRXJH{AAR_CSg5~;hx5r3@uRp-CnqPn zyu7@wwpQHR3!{WcCCQzlGZqd*Jw$j6SPi?1q!Bt z2;~5$*Bt2t2K1t+t4pQP5Rnrwt-GficsqO+NUX54bEv22rZ%2`(*E|m>YIxb-(8yi z_VVmkv*HVV2fi9D`)aiG#$cwY}`%VcBo*7 z%+Jk%zZa$?FVKSvm9XG5xHohW8g=?+n@OT?>E`n+Pk>Gme+6I926ez;Oy)d40JsL1{9xwz>QnC z+AOnic6WdI)mLAA{dE?$to!%}kn{j@_rP4;8!wxBd3l9}Asy!U@#7^WC2ehOq!Av| z;gkV(xZVh=FK%7^ca4t!{ko+4|2DUO^XD%Bwkwostxh*eWOib1r&d(aYBjuw+8z-z zBpu{V2t1?DkXF`cb=6`~DHMRKVi=%%dlfRNUZ;bp^c3BIV;T$WM2;D!^UukuB6cB? z%-_*V@)I|DW3G)#Z(TZjVOa6ynSq&}`2Io<%_+Yz-i~vU{q?CHJ$WukJD#t9N{-@` zAL?u^9>sM@q?4&ysZ2h;?@;WPro$UAsZ#HKGjs3G^?P@}y!YdkAFgPN-~L_3u2t-W z4ZOw*gH|~>V93f!CyTJ8Q{Fh~mq&Vq;8IigQbk3D#BEFDbc0^kEfTb~HnLmlg#xZz z+G|1rzEmj{lM;K_30w|}xdl#tjZoTT?iBFh$-uyX56j2H+sn<@96olmu%yH|I6$;zYW^_!VBvLWc*tNh088X>TJsC?Qq$8ClamUIi(A-i zQBSvArLy2wLrjB05{f%H^^;IXI`wRJRwzOv3mFvPr{X>_kSn6(ba#n=7A6PJiw}LS zJaX@w@q4%C?%X_c=jPcjr`j*ekK8cjT-N2PT9TDr%>$Y~v5?o&)L2_x)xqPzg$x7J zJh6$)QxPu!r<-HSH`3-EqPyB zOFBvq^tRVzq$cHLrsd{;WCPg)C_vatV>=!)&SYh0QYeanl!}ib88R58PvfOb0?}k$ zm7?(kfib}*AH)q?(I^1ak*F*5HYow0Du5+~A4W->28@<*Ne^+nMKZ+9VggT;cB~RD zSgj*+g#rd*rCP&j=Qpw25w>H-4#3{T=4E6TZnd@b3l1jH0a0;(#J;|RwAg?r8#ixW zzTC#n#l_jp{i&y)4glCj)v2htl3z&ZvgI}#w%TrUas_Y(N)I$XBq};MG75J}+GOwQ zhUxl}H{Mzq6c+x<>#rjRPIx#B4Zz8Pb)!~yt5-X?y8rT#N1Q!9f+Hf~b$=B9!dhyB zJdiKH{^ru<%beVQ+*yG^fZ?cJH3jU*yG|H8q3fRB-abA)QBhHQ_wG$jP9{1GsY_bC za!LethORTMtN*bM^G^l#pHZFME?)esr>9S$RO$5wQmHgb5%Nh?iI3|>M}fD~3#mj~ zK-HsUft4yRonRDrv^I*VI8)q8vGH-H(3}E!QpHJ{UsH{LIVLEHdv@G%MSAF(DEyLD za_i!ps{DY7oq2hPr#cmQS(kZMo^aKWTJZi$H3weX`*tvo)4*-6RY?2Bv567=`pHR+ zQZ6Wrn-}dqFHQdTwBY-5J$Jsl`s3FVU!D<-iw<{YIDhQ>RNbLB>$4B46%vbSATK`$ z{vQ1O9`tX2C2N1Qb7r!zuwazn|HQafqiU?JOgXkYA$rsP&^HfncPvWzMATlVQ%j9n zm1zL^cF+zO9v;Ke5ZW77D@uCt?0@G9f)Xv!S`U zljNV9%>>RT=-7NJwQ^#jQ`kui?S%i!6!Na_Zrq7u3ML)!`ln{jZA5NOEb>t51Z5rp);|5YG4Fm9@yi-PhAn(9v3R{K&!Lq5_!y zNTo73MpUg3Nrl1uJS!^`Pe*1MNS~weoqi{U&-876mMHM^4|2oE5JV|Civ4L+uR2c#7iJh^QVa0Ffqnvi7mG|Tw+s!*l`0Nb(A0|b_GWf_GaDXx zE!@r>?|fuy?*L#6q@7TA)U-MlX)@u_vC%trtz5Nw`EsD^9`L${pzCfvEdS6@ z7Y|RHWlPs?+~mpfd-4x|@CghIkBtk9jSG&94hRkV#gbpVzG@W;>{_;Tv#l-Ab)>F; zhew1(N5AmWUtl1Bj{~-^UboIaBxI|d9WpwGMR@xo6@81n{jz1tH`&>(+qm%$e|pB< z2RR;*#tuKFJ0$_sd-!;xEJt|m=@}3ZuoE{qg{dwHV3$ZFB++qk20JM@Wm;GN10CjX z{V+e%^?!Q1eCaY^yIi5vXmv<_8D;E$jyPCmjB?A+MNDHf!sAvQ;}c~0V~kEiB}rlg zhDcrkmBNCnP01{P4)UF#i#VrA?GnO#@?Kz%jK#BZ13pofa1zMTme@}vKf=5MnY7W;(9{7 zfe#6LdX+HG9T*rxENF(zJw|YNxldF)=eIr>3@+-`Ocg>OD#X zNX9XXhmTU0SsU#yCk&=jRLRzn)~w&~#1l^dmyX40(RE~QL<$Uv{35{afq~r<>oD)V_ukQ?NAvUZIULU4 z27i$(Ww-(uumd1L)b@um$M*`+hujuH9^qTfsPv& z<}Z(HZ_Mh?X^N`%y(}y98{zD_tUB?L_wTuhoAQtBG-y@8jx#gUf%Y>Z4C%5#I#b}4 zN2DZGo~pE3hvBKbm(R_Oo$mPf$BTXU?_9j|-KRQsLPGd+qw=!W)QDaYcJbXvf6 z*fQnY!AcQ-)_jni2mTu}o8>YIpV!7~Ywhgds^$IW0gXW`@9P!vxvh;2HGcjq0n%{B zm}Gl0dnMV(gmuFskKf_r4_6t>%h!h$=ocOxwP)WaDe39e_4VxnzD%hYG@GoWBUnir zokh_B6J}J5Y3S+c=5W{mjM>?lef?r8`T@(xXmKHbH-{d0(Qih;iGE<6A2ZI4n_=+9 zjSA6_XE5lyyM*kP=GK-LZW{;2kpZJ&3=d=!OU9oilo&vHPLlnF^02Nn^1Dw>-(Q*j z;rjevugzZ{YPhCOx}rL9Lzgnv{!UkQl1?VjN`+Y&X=%wxO^r?BzCOJ{zwjS!l&)S> zTtvBl97&}W9Uw!=>2x>@$#tK_6#YS50OsNIv}=+0Y>50qy)s8BGlagAUyRod=sCb5 zJ?9MW%t~IyHXF*cL&O}oOjK&M*)k-PE8E%yj7f&@_PXZw^&2+0d3lACzSRWYF?Gk9 z%no4bfuUh8?(SjHv4HcwLBYVuo!#95c-L)z+T`fr^}EM^2c(^(#{@@4#q4~0`HJOl ztyzO8z0J~fo3@0-#NcWs)K+8TR$DtKXD5Jk!1h(ESV2KAzxpcRb^xGyP_R#6kdvDm z{0O-E+Kn3@fBbju-rg`Yuu!{doF0Htovt=TQjCX}myfr1baeDbAANM<#EFWEijIzd z4k_wxE+d^a{x*Z106Ssq|AG#)7~B8Nmreif4W>U`UA=OJ3V1ut>0%NFXrewkX0?tG z5r&S4B)vD8!cFudyl0Fy!vkXTc^w4FN&9T__`p0liG1t~mJ@$F*%U*P#|OG^j}+fI z+kF4qfxphQU(nQERHmPnomh~kHf3#p{~*FMJ0)Jy*E2;gbP{HZF?ecfeB`nyOv6MxO=&WMueY8 zOe98qvIV+=mJ--0eTJC}Oi$~7^tzKtCv)@j8k!p0+S?^k>40g_I%1{Xi5S-mNngjo zhr`65Y%-adD;KTI62githqKh$<;;Rrc3FPphned8cRsy$`^?=h7k;>G{Y;bbl_hsZ zxPPcCU)I?GsIKl8^mcNK^7HHK>jeTN@?hID86)QDkpcm4QE~AsWdXu}#C+lO9MViE z@=g>O@{t)zqFJE$`5Z}oTL)EoeVKG1kF z1t5a}u8=)V<^r&rq%!#+jOhv$m)A)Gew$l)L~k#zYFM*wou{uKGN{L(I7h&6q{(1x z$FIai@7xJ5hR1IA3kh3)j-qr?;|##=K*Fzu)6N;=MUuE-J7+{#^$w^E4_UE zo_OMM4;BjmAJOvgaNm$n8_eV#+}v%JE!|{m8yX!$1a^4ClTZC|vz^@*dxz!AmIAhW z_^@mp9lZVhQO9Z|!uSKWd(i5-hqt#Eiv_^$@9!TM7kA*mfsBlQjJmoykx2A+lLSby zIU}%>UU-XjnEyeeMz{{yzBq2rOpE0^#H|4ev8k6W0O2dv;z|mfSo${?)nB zFQ&D(&RV7gA6++QUmwW7q)pFz_tl`Sf9l{gj#`0&P9vI%Yf-6h$#inXg9Smv=B9>@ ziW3vO_s&b=Z%?*l3v>jemy#3MH?i2I;gW~E$rKCr%QNm~Wd>)V2 z&a7F`{{IPPjsyP$P&sz|Slss5cJIR@13p4`duN1TYf)0yejkHBe@;b+Oz7+oxfl0(|^ksGwk4x}Rr4X5im& zC}ncF*4h4YDLOSeqs5Bjhg_6L!)9ab>B|iu?LboM>rq1Jv2Jj z!PWhLp@$yYVrOsb==kWPk9v5s!eZh8_K{6JBJ!b!Rv;$t>bi94k~Qns!`3|g{QN`1 zf}@am(%#L@)ysQ1#&(~8pr`-zCm;U+(pkeVIMmt06Gnv9>(;@>A9-knldG#=a4<=O zr;C#On4TKM#Lnn2$BrEY`7q_ndS%>)_ynXf6*CJ65 zOcH^&TdgF)oYq^Yc!4pzs5(Jq4$#WXgXfeEgOnMWOl~k5VLP3jo$$)wz+jiC%Zd?$ zFm~EnNh$Lalse8V5zb6fDehx!9JWfWnjEv3#Wj8P$CaWwgGR1F&7Bl#l}fMInN22t zY;{H;N0*L{k5~Z#&=_%Lu=Z>Df%|8gemJN5_Ot14Kb!e-K{qe@`1(NJwZS}oVVuvV zX9_bDl?oXlmKm8Dq^$Cm{@EOGHFQj{}3qQOvuKnW7$Tycw6N3Gw?o3@> zRO`u2z4^}ZA;06L*bB1kYfpMLWWU3It1lSG#v8IlAnX>ixereJzTT#iWMP)?CHaZF zHwNzCxpZz=m=pcN8B=>-Hj7(ZqE{;h^g5wX(AwHUmTrk#X3@8z!Vmz@l9Cdw)?qZX zO;1@YX4pB{mRVC!kh^#9N6}Fs-ac-wZjL*4#KLx9=j3E(6%-Y;x3!77y8vx}#J%F$ zx?19X+`ISVsMzRF4(!j!$*!)i<#zC3$Tt`bba5_;J3~juWExcB_9ZnnRWRjAO-)Wp zLB+O>&CR0jZn&6-aVJDF>mlL%STmvOr%o@-T|H;{W~S|n!Gd{d#>Ih}g<;9W*pON& zYpAQOudQosX=S&v>+9;8o0?F6mhv#_Gk)gGX1Z}+oznCl=X*tP8^ST z%h>Qq-KY@w(?pX|pft!Kz;+&A)J(0Vl6yyXUdiUITLD7DF=-FSN$h}s=i~{zh^tDs z|MBUkSwSIdH*H$BY?(dsCKv>v{6)RqT^9?6=_vJ{X*@%mk!UIA=P+9BRwObt=Z5^H9<7+o;^zijvyLKI3 zPNn=XICR|~({&a@*IBrKE@{u6J){wyKp-G~7-C;10qjhoBO|acPIM$X%s);N_;-$T z{FiUv-2O%&=#rw8Uk#F0sHCtlQjiQVB`oLT5X%4DW zK?}Y6>rXiGQnqA&?s~fTcu;fc;r8lO^WXsSQoK-=9<0?21_T|Kx7}Q~oDGvi|M?gH9yuuaZf6yM+R*^N%)vH#7(Zg2smW!NCDIus|d0 zYHP`|=_mX4da}Gwjjb0|X$yBRmRD$G_@2EVr)OrIs;QC6<&$`i-~#_?q6-n8Z!qY^ zVlf;V6quQxlai90mY!BxUe0OfN~AL5;NS=jw5OBRNd&5V=l42AS5|+hOB0ueo#_`E$&p1 z*F5Q(L1cMa)mdQZIh{Oqnhb2006kBzrP37l4HqBufOK*?eo~L zA9M5ehMxw6g!zYr_yh+2V#)u0RT9H5wyE;eZm|roEj9jE^j;()qxX6I5u+ zqA(c@?!Eiie1nC|gAIwUfwP$=x{>+9<3G8zm_QtS?C`%ucN=E$Zsz!2(nNxJ0 z6+Kc=QV-m&>58v)gkMtDUpqHDC2ei^#O3x`le~yE%KPY?{Ny!racg>D%kfv<@m<+} zQdid2TqoqQ0hy<%MbAmo;2^)HN?H~%Bij49Dfhbz;vc^}cmK}K@2_d+<;kM7jUT(M z*zT~R)?_32rZmUOwv9XW;q}yCwq$6dM06_WaM&MQsWQo4t5K5 z-Lxy*FDLm>XM3YwBOlOfhlkA8;USoR2#i=^erzEXxINw79XuYo^k!xbA3o?C0GF*d z+yUENJzUY<-NnV-*~P=z&C?YyAD|uxKRPZm)6`-FC0tDrVo!${Pm|#WhJBcu3k3Y; zrpDspqO`QM%&e@^it?7$)}EdoIH1EQ`wI)YsqN-PJvfM~eKy0y5StZtzOA%$xlW&KVk$XGtP2aqdvfmFU_fq@|xdJ3}`U zoTG%AIXYMp5q0E+K_dbY*v~M4&-ic{FAZs;M*tsAZ>dxUyj`u;A#BI~b_DELa?b#4 z-@1jtcGA*1B9`LtD3~!Sdehc_Z2-L6oSZzoe1K*n6Jtyaj`oUhXZbE)zHIgS^$xCX zD^@Ibba8?AhepMOL`DUMNB-)!zj<@b8u%D$x3qR`NMtl{Z$CuW!#CU8+qt+py1Lrf zEO~R~N*52$7yj}Wpy;UJ6s?^41GXavI}zB42m|o$=@}Xt`tG~$9zA-0w5X`4t*s4? zCh^0N0Cr&POrj$x#QO(E$Dir?|2VM24fdo+1P4W?HyBYS2?`|{p@SdCn9O!!R<~l+ zhK?XWKPRscGdxjQTU*)G$B}t&s-eDtv{E7;A;L3mMMU}_PteH&NUoW|Z7c|}7j=nb z*hdFHg0sbdSvpYnK5-v^T-0!ZcZo!B3RP8BP9ja_LB%W6?HWPisO9vCV$R5yaSL_w zUaeNGl*{_Xy=t|}Vlfj*c^Xr`{DM6CgHu?6!L6XCCYc`4u;r_|((A$<7rIlfpB}sQ z>Ex9W>5X$!v)xB8sgte_2P=EQ0qGlhgVkZezx+Xm+}v6ZI6GwsXP}DPTbqg=CG+oMNEz& zy{16-m7RuBiOgN#_;6e5^NzkDWQyhA6mi*LY8G^%R9UYw^P8AHl6FAIGrBZfv3EAwH;-Z4|w3PUh$1}1r zYwPRV+S~i3QoX@o9>ARe z=`_K1pesYeR;60oArK)!25T}zc+bo!*sx^_z-d@?48_&46a(}dP#Qqh$-{HQmaTy8 zz`Emh>B+xwS~JnVoo!GglV;XQsq!ONB}dwta^dlxEmEFd((FPPZZ0o75GfCr1^1)Sf9 zYKQ0H?agAbqN1Yyt`5UQ^)A+7$R7JiXAMHv|EmIj`_I7sp9FT;SFr24x_a@EK|?O^ z3Z)Xrlv=CR=}}y^d1z>OXn1&pAUCNS355By*&cT_HJeOGikX~{No76VJ*1Zz z;`|tY255zbiIYTJ7sx|rC%>_wLEI~b(@!K6!e0yEK-fMh&dkftn?*%HR9O&1{ueJ? zUa)k0F5Yu@rt zB0jsNq54$myYKD{j|!vP8zEt3f>PJe--v8WC>;mQDe4;PSpmLYzCMAW!7)3x$Dce= zR#}M?lKVAU?Fc@m#BYQDlqo<1gF|^lXMVAN1`jK954`pZu%l#hh1p_Js5IOTVM`m2kai-=q-W)A+`1L8 zop>PO4wM@`kBI{?O-)VSv~8P%i`xq?{v`;dHO556#)U>jx%v1k!yZUmN2ld~%a=R2 zxJ1OnhD1cdXMvnQ@#G)YZr%b+e%VqKEiBzT2}{$0Af3Pd7^5jrAuFa^G#PT zuP2^(!qv;0h3k@t4nypY2+vu#G>OG>_wXP(%z*<3GBY#l>+50S48SgxN|}C1WZBe; z6SkQEc2aQ41hD_4vj#)g39$cvylnd4#CB$n0i<{Lh{a+_A38*GnOrHCqgYuio2lTr zOa>1s0DGMdMr2@1W=f?YE*kt4cY4RFJI47gp@`ku3db6|YetC8hRL8IMhYV1;6Buo zR3}ynz{$cZl4bG>3u_x11VW)&ryIhZg~=93-)i#l(a{HE2LUU(#A=*>6bb>h1F*B% zt?&i2GBbvTENYbsrT~nR4i|D^Q6V9mScI9Ln)(lxdxGw&{*Euls(&2GzyFQy?nT+{ z>Hh2Hrdi?ci<(q($I(4eb_oaHZEI~FvRF`zEiTwW{t(jjXLjc5l=5tA%=wm`m!_>Z z&R8vpn{SNv%}cYmN!!kUbbWA9dT?H}ulkc$5BfaJV>bfIYSgOM)|N@y&CX~JlnjC$ z`0%`_xDdcpDeG@Y-##zR{q|hX{X1XWzx&O-J70Wz-JJUN#=PC@O5b~?Br{&CR+t8j z#FI&E^VASFPNg}+kMufCTWdp3!oK4>SnmZpC4BsDOLc)(A+`*E=q-cBQJ7AcP1|?I zG114Q-`+GWXEDpBfOL^jkzS;mIm;U!eb95H_TVNd?!Ezjal5u3PdHvxQ%zG?&4^^J`f@YQ08G%4xi6i$VuLuTg4x1ywVg6)`# z&(c`|^K_XKsX01-jTb-}@%#*y=n;mWrf?fx1b`xh78<4^b+LnnnA_(TDfV-C zLV+|HnH-psTBB>{3!B-L-i~>D2VgtUW?;*J=RnA#;FMt0RUwR2}8@D%qjRO34XZZr`zxw(cj;?MG ztyp1e?*Mc?kkIvz(BD1B&U0V4un`&(<*284zo`30-%UVg~vh;s1qs1%gc-C zFvJhj*4D=4^fDbz&1Umr`}$9GnEy-w`_I7s-^6yZyI=>x&b)m2a(B0w*CFWOcXoDm zi9|iXJ>_rL;|!I{R1(4H7ZE}w70-i6Q!q*P=e0*;wX5; z)ltuPqSzDmPSa~5$1#15#_)0~#k?`zkbZUm&e=IxNvX-H>1ie9<;`ri1ZM6=;}9NZ zFmE3x0XTGy*%$$Q_z_SDn2Eq22H&`+yBp3%I1eR%{r#9%Aek4gc-Z(1rk!*jsA&eT zm`5IuYc=$KJHz>5F!={l!qx8W=VeDGg+~On>G|o2Wkq>y>=vUzk7{=CN+EXcW2QZg z5dQLn>}+eCHOKa%RsF@esq>1)8#4o6jEl^zvDY+7*R+Wfybp8Ue*T?sPr0OT0xwOr z^V&&&S5PM1i+o8kvmjrrxTv73rHq&AGug4{_Ei1dZ>I0xy><87h09}26QX?`>GtU# z+ZBHBRN6c1T5Afs1nndY8PoL%#$rU=IKx90UQ2D|Q6FPvps8*L@6Zcl?VniM6FTxg zkoSoO3|g}Zg>5D!Cz8Skilq|*KSK>YupQWcpRmoa@X(O3kl45wKYw4iQ>gCc=IY_% z;^qW*SJd>%HEw$h7V4*X?L0U}FcDKIm2eQLX%rq+;bb7`>!g$n0sVQvfQCY@YUi zwx4D)+i`X38QK+(mTLjx;7h_)1Q!ZiG~ABPW@aIk(*gIijNA=dHUpvpfTJA9SX8M5 z3_KzxCN3@}Bsg%Zy6Jtm{;F= zYpbIpigsU$3^RVgAuCs}@j(IXVXVM^AWvLLYO`d?3opF{l>V{D9&>ba^9u?hbRD*g z6c`fc=0kDfUYlIHf3}eCLiV}z`nRH>1Q40f9l2n zJM2=}v9O0>0KInY+BjP4k#aa~bugW7Y;I~{bK2V5d3-)!h%mpa2hsaJiMUUH3X?E2 z50l9;&sV?`3H*n`m{lsZ1^{1gFd7F2VERe;J$aUuLN2qausf!|u zuw!%zC5mV_==CzG6ejOw<)vBKnI{uZv?QOTKs)(LsdfV4xSR4C-K z-tKO-N@+Hk$O7doh3(90Bf_Y2lg3Mek3Q$`xMgg(b#~(R z{=18^Yvb$-`kd+mD{BtC!9MbOLgY&wDVupoYw8nytJB`=Xefkl2>X#re8Ak|`Z(;&=$L3+AG4fVBInW=j|d^a$_%gNae?rt8A(a{lO=*vu0RaI8k zRB<@1UAUvJR-E2$OO!LluQm ztEHH1FHpI?4|-?N!C!OpXK=1N?R%UjWk-xRo(S@@ln6uh$fJyZ>zI=-%u~|M8ML^1 zmiEJAO`dknz`5Knkpc_SX!Y$KLXtUvR#Z{!0M=wMZwFKl2nmUdivx}w8Wja#URYYR zcHKI6Zy&&R50-CGM8u|Tc7W|0w%R(lx<38%)7}9A!Ki6<4A6B}K;Tjw2!^DXWy`kO z*&)owbx8qX5l{Yq@u@dguXc9#ShjTOD{sCD!-tcLE8Scp5P;po*VmIsF?3EZ(P6f4 z-@bqU{>;qGhK2^B!^q`wrr?xRuKj~Xc!27+Zr%FZoZi1JIQ^Nf|2MInFm?vmVV}dO z3daJif0;}GSHR#K>Kn?+D+&vXii%1~N-L_XYwH`Dnp-)4>^3eJ0KZcx5Q;=y-QC^2 zz2ZJ#`4S1KFqX??3Z+6RL&z^fhA0)G_XfQ7Wx?t_wHiwxoe*_KR3|M$a3gGr^N-O# zW!^)y{V|GjjtvhD>2*4>xR=9Wmz9;~t>^yI|NQTEr8gZIBy-@T&wZo&BZxZ;Yw=)CmU1;z2+(zrwK_?6|Q^^1GS;-<-L zYHe+0TsqT>28$VN;~~`ag1+XOFyflN;pV4PUtOGky?tr=tg5IdWAmwfuksStkFjI9 z37dHdYjfWIed$rJj*3HF4XH+*nydv7-Cio`PdvOQWlwNdN#qwpCHKFbxOe9=YH{`L zSLBCUGQlVh&(oMp zuzd!D*FmPk6_kjTb1jaJ7) znhdp;iXvq=2-`Po-i-b2vB07u0pWqSBgq{QJ8bh-TcGRk%8KR7T|7P4ZrrrYW~m)& zr4;S$>j!i_Bsyl@=FN_7?v5TFq~_E+FzCUGl06Xkh2H0U>g=0ac(lD!nQ5X)KL?VF!y1l)pyCq^zQ*w!Xfxsfo=-4JbN)_&k0m2K=7xZkVz4A$l*7$}zD=qP-j#t^xpG zf#YkiKnEuVDriK$$`Pv5ww3A$LJ@Dm;fc_K1spm*9l3g}q}LxA2&nf`Vh>tE)oL{& zp|H8Bv8b>hF*z|QIjOj;q^Y?X5E%g9WHuAEAFw?!DUrB4sG6YZnZ;|VSi~QHhw)A- zlTsC?laqk$z~uYHy+GzG%K@N{{%+e>75&Ek0EaqKXkxUR{# zDhR!5>A7`&*4j}t%FF(0K`YLG*gDi2JKMGIvN}nS?$vncwXm(f&OW)Xswjg~Uum(J zrzt1@G=QqCujkZJZwu$$8-rPQKI{GQ^P&59uKsXUc}{*pR_KJjlua#M4UeVBKD?A?mY!tPCiz+wdUMb)OB7}z~9 zut!Bjee}^sCr_R{b?THrAdp}|mdWW|+z5}H1B?#C0Q=uvHvL;*{~6W)M{Wez32BEN z4tpN39S#Saepr_ngMrv!Fu)N6IEFDAcXR9N=;#2PZ*FdeNf|(Wetteo(2|mpPMkP# z@?>I4N=jyCR(?T$VP)m1>YCbyhQ{WW7Is@3kH_y22!*09VEDlA3ECt5Mxn$#wG>LF z3a!|pypPjN9cP`5 zn$70^{ysjxqq@2(KR-7kD

E#X8$mq^I8_G8@gM0h8Eg|6_NFA$&>JOEaBsi?Q7 zXW{fhcXt;bb`1&#u&U4uMLkJxfr(xr1yzK@&rJ+ZOM$B=oRcQb%1VahZ2+ynSGz== z8np_bjQn1}Nw{!o>uRaSCAj;^f5?6zQqSc0=bE%j9bxB`%{R_XUNMWt+A?mRpPX#} z@UkZHGfm2W=L1=tSzC8|KX!1>`wE%FG&o>H4NRxz=Vr+&0ASN#XXy5~mhLX4lF&BT(n@!CclQwTkkZ{DF*0<+JOB5~{eJJ9Ip^%X*IK`W-l{|k zoe_MK+!p_r3VXx)=^5g=U$zDfcj2k`OBlCK_M-L7#|RQFlE@!(GBV;J)q8aCx%vg^ zzMM7vpWpFR*i`5?XM`Zkf}QXP&nXW6iPx~tEZQ&Sq35Om1kf0q8;rFZ+YX-@Yl_yN zt$G&oLnv72Jjrr_6Zv0K3^`?C+!=E5ZV4LEA@KOZADgVurktXto~Ep%t}+%-Z(2f` ziz#U2U|1|YkY+GxK15GgD`MwL+Cwk@DSPUVmU6SB$}x|$jn8&!-Z#a|vav=cL+P;F zB7vk=Uri)nPV||reQf)kGwFW_QJE!$>070Xw-ebRN(Qa>$VlN|M&H}R?mWXa|3I5X zKfYVRn)2gm>@8lN$nfWXPomZPXlOUO^@65{5FQRs7GSPXmFHKN=$|dWu{AGq>djXH?U$a9a3LBf`f;5rxTqAcd?gz}3N_ejI z8HI`+@7FuX!a(ojvva@e6Y^dyorq(k+*jy0eUda}$h6vJzD{jS0B< zymnQ6cLezTv`GQE9QV(^1lK%f>|Ug9$&8QM+#*=5)DL*22F`i8-i-cOnm|yy?N5Mi z7suPhl?IM!z3FoFN}S$RXZIAktrx@dTrl;tE8gPJxw{UtC7y)^r(fu~90SKPU8t!W zx>tJcXIES;!sP5s#UQmmV2!0-FT3{pO}4$BzNw9;i;3h$VJ_F24xWPDA-`GUKS7_r zQ*dVX&N^sUd{d)Ip8GA)C%Br1pH1@-94*W)U4mfwcVS_U zc+&-_BIzWQbs)rtqqQj(H{ zlfv>@VMKsKojzau8De8hY{m)`v#;K;Or(VYmyF5T1+qmH8CmbgM$=eSRE#ZayRLUg9LJ>0s#0k37e|V!r3tYGdem=VEXQ^xvBd^g3#e5gUhVJr%~K9d;6E5SSMFe3m4icfS>sCoCK*=3umq!`L`%{3^XHG> zzwhtEuCHSa!{KkpgZwD8?OCd9PfoUPNy*GG{s^>j2C5YHMB)0=niSuxTzp04;3Nf2 z?%!eH>&Sdn{=w$$bq@q#B99jzsj3gu>yG541bs|QljGezlQ8Qw*7x<*`$m5z*mD*x z#)@2uyHfhW1pXuY##dK@_CX$VUefJ^2lVjaSu;);8|i!7nmk|TW2f-=Y3Dkd!2e6OTnNr$+-uh1W%SPF?CtfIE&;G zKHfJPDBbu%$AnEbi;D5a*Ie38-*H?#c$D64>*O`+IPvk}F`Kx_@SxrWJc zQ<{Ow%O+*U#b9Oi(YffwS&@+^nPH&0IlLGto+SQqvFRQO9&6^`X>t-Y44iN(ZL6~6 zamrp>mB(=)-XC}zn<&du40sH_3U%?=j8anZ3255ZX{&15rO-aB3JJ)%yc%7BizGQ5 zy}v>@LXxs;VwMo#qLC(aWoKj3E@L{gc4}D@_BAwmS$18+qog#{GLqv>6uli<3vZyX z7pA=W7>%?zw$eLaA%~utk^62gh@MB~`%wKB3EXtX_%A>)u}K~~RPcV#wkaiLz)pXu zcnLuy6Ms!7GGlWS;_jgjY4M1o*Ut=Bny28)fGOG58d6UZ+yp3*TzlW3wADS=zk_KL z&Vcx(Qb4U z5r2iVPfM;62^;FB4ft~eikCu9Ogb5)mZx?oJPo{UQFqKRkbg#{oKg+cK&1c5v zdV1XMKyHo{qww@x-XbF-6Iw-RKxtmG=5;Pb0MZl34>B?`V6#V9#ZXXC0HZphOyG!9 zkrVz8gOHS*otTl6lV?&6-@cT(n^jcU*w{(>SB(34MD~70pdqtHwWZ|EITxe%c6BmY z2~oPUuC9%$K4^eL{pB@~{Xn&j9N{gnqIlZ2Jwz2pGz(B#Sb%B35frwHb%?59s%603 z+@i3McCM*W-s4+6EiB;pQI{-jyO~G;DdZYs7wY^-bYZjw2@Akb{=_!P=8OX)i(X@4 zK~tlmV?TJ&n)=mBirckP)8%DvZ{*XFq?BI ze-AWQ#t>IlBz@w03n>3_m2h$!d;rk7S+xS5cbB)FYD^Fvl#eWbq-lPcDmX{R@9;F;h&t?!7xZe zhTOQbjN#*WmqS)_AS*iD_@w!2=^e@9pGgHd&zyzh0qXk@y!Q<<_7UcN$gFhCl8cVq zy-&AV%fkm9dXK4AiT~ghfErIf6(^IjNn@?Ge5R^*N9@$U8H=qPx{oN|j6R1!%G>sS zoJjRA-%*JVic5rGDWSL+&rWUl!4|Uszte^<2U&LK;lD0~I|$%B-kRgbDQjBQHciM; zH@W7;YI55mqW$Wgm2lqX_;Q#^A!1#Pj0{A96Nfq$USY93I8AQA(bOoV-`P+U9xO_K zKXT_Paa(NaSU7HBTNpELAzfhVPZ9XJ#kKcbd_$(N(T&O=jid05bp?x#5( zyPTNwo^&_Y2No`BURJuy$;w4*K4&fMu26sRedd99W;5XZ!pCgJ?WU%#wbd25+pLj@ z2y`PMdmZI8yjL-AVz&cVV}+b;p6bz&5}Ao^(TDKh&8oS@J3}TacbQ(ZRIKAY$Rv!2 zqiz({+1l9%wzm?BE<)@VT#8qQt4?zFcfa45y5Bm5Rp8Jj7VQs_*K*dnYU8Es};n=dsoFdcG$hJcYpQ4zoO= zx%hEmNR;?)$lRy(4Dd=b}5xFn+P^|iNpet&&_x$`V3DUR{=nM_1p81O%s zQ(*{{Fd}hiu#ovCWY$GY%Fo9|O_48PfN=2HRB|5EOD3Ao zEBZEP18E5V4y|D?iZ>gObJ1k>hpTHS{)=i5Ibd%O@mL*|MK*q2h-sX;$~YeD2?+3v zL!VlHDh`%4H@-f=a&yrUL1e<}d?gI~NL`b}ng zjR)iZde6oCazu1CJ#;?JID$O6%bhN6jattl*3R24t`;F}>;AwTfo^G>-SH{yAEzC#Ebrz6Y6*%9Bc3>oZyB?4zsg}Z_ZER?70ZN zYCS`;d)&epe|mv^LVP9t27SzL&KnORuIRR%%a4M+5gE#rIpGkEne7|15R65;wK0Nl zwiSJ`AG2HZ;Q@csd(gdMe?qJ@Tprx(%GJOCcLpm1KQe#FM72E#90HH%@8QDbjAP{E zLw_s`y7##84Z!oc2;L=I#f&}ViAd0!)6SfZA*3LWX4X9&-uAU^==mg!W3fwD!#fBe z#X?S%TeEIj!@Bpt>n4(w{jx2}ImnP5Z|VyPnsl_Y2kd8T6&jnGB&DRL!n0Mr%1@~M zW~r>)Hkx066n|!bUb({=8EwGQY6k1+TuLd4pn4Gu;_3g+%en$oj)(q1ehf#CcWGKZJ9XXWY~(YrF${l zu3r>G0gdp>Y<_;UZ`sFHu%v0QViN8PeG^}1S>CJJ-=2zDN=T9q!1&L9_NeuKw3pG3zrLoUVd(&IvzBE^ zDVp#DC6Vl0^4CIK1n;tsw#a>iFFbU^sQc2aHOeu^aJ*~2wypRg^p`I-7gu!r9!r{< zwhND$vw>-ot7g@#EaDftTt1$@T`TKRXG_PfH_Kg}wkM=;%Y2D?%S-8cHOa5L-y&ZDP=jisHiA7d7Pow z`3j9s(BR$3amxl5mwKXp+z%?h(o9r;xMl7L#3;B!U%%7!m6j6bWGI0~lt7ojk9)bO#l%Jh2SlDUNlvC^JPrS9qzx;VIiXoj z+3teo4_Y8O^(_}aG3d<5U&_l5?n7LZ{CZiiBx_VWx0T%mbY z|FygX^suo_3NQXAU#=WaQ9H4X6tefCG&OJCB@$4bseRGqzu6+V zhGN$djHkVv5qXKVe>;s6s9kP;7zoP$uzjT|L;yBJ?Cb@j)B_t{k!ee{MqMzEUsMvK z3Ijd;g^%291F7TjsXB#hW-mL^?P(M)H0UZV1fm{x^g)7SYC8N;29X^5M!oqcMQ;jX z<1*3be*8YJVkcamW`g&}oK=&DyZgJ0k9;RX2Wr$=h#@xlV)@*tZ$f9H{^m& zva+%abPS~>r2yRaIDrpRcsO&4erWg_cRQ0N)Xw%4iAwyFSSj;QUnlNgVxyMF_3eh< zwWY;f;scGS{=IFm4nsaHd}~mJ-xRkJsrKC_?Wf@bp_OPuq4f{`Rh5;bn|wvIMV?)u z^!pYmDGC0=JMIBJ&hN^rs${A}*Dk&Fv}4=LR@OsM8iD3&{3#0Qa~J-|IkaY~+P0F4 zC?r}DTf0g)^`LPB2mV_IiUWPvM^v;Q;Hn_RI4iY+5sk>P{nCo6hzz11Wu8&X}dI9$>k5^7{oq=vX&pkSkCg=ZghqHjYgQN^+y8d^sG?|Rx^d)cN*OzuwseWbKiQq3(U2X^ek)`o;2JZi^ z4IqAKdD<>Wk$75p$r9Ll>JJ@H-EdwySqS{x1vEIask$G!VqSxPq=Vo+Ezbf!);p~= zSO8DA5EL9r|HF*$A)%qck^QG8Cy@mgr5H*Bdx69Pov#h;qV6ws=>!au!O1k;Wb*)x z9+g5WK2&HvX-oFM6QVz`UDJ&|5@e!ZcpxajP~3&VjUDm0Y7f0cC`O7OFsQPH`GhMg zgVxd-Wv+7(#Diem6JK+48gfxMs7jtV5CF4Y;X}cLg++xh`-+)Je{EGrh~#_dFdaqE zldRRBf&7WqR>Iz&djcB6t$1HvR=t~#L1c_@Ke0GZ&t%7azjWzoR7coVe&m?e_y}S) zlY%GzJ@#LSQGQ)rUxQj5)1P`~$Oo1s^CEV7I?l3Z&hP>(EF8H}UA&UWQN(|wK)yi4 zPC{IwsdOV2LHLueUsqQr$j5Y?n3S*;S)NpCN?e=)`=gmR=4h%Xo*||EcMn$n+S*pa zf345VWm+rIbf|itt3=PR|fLnIC$ojTc?N=u_u80~qJMxr+ySEia3qpR#Bk( zKNljK=h)=~UixAY^m6fGgY5Q1oVHN6Ko4QN?@vx!J*zhMy)#=D)_+drfrZO;@(%;b zItf)}MB?w(PRaP1GBM5ld{fOKk2gUhVMkAL(Pmon0e`I|KzZl-O}8e!ZvlNqpObqj z>;0xZCEgCkIe%Z|KK(OkFdr^Op$zInTs<@a+W5Mz-V+?ox*sjiS}bBN>ZPpeOhUISB;NLAho%Q9edT0Do#w5 z06C;1_Nul0P|H=CYLzZn)QPX~Jsa87oD?_qjqWe1_ndhM;ty`+h8Shaja%T;4CYq4 z?eX+nDFOrc?Jv?J!=q&-B?tAC2H$Y)I%jRi|8wt$WU$~lc3^J^0lEz`54nWTxSzKA z8>`s}F@73@v|NoYb62SO`4+5NT3cFS(RDBp&LENVJ2@2v7BwQf7ShNK>@1nUz}!Ek zylq(&@$8B_X1^%FQj)F>f_hS4`%wa65+_PZT=p2$>4~w~WZRp`Ns62t>%s2?YoBi! zO2nBd4MnGD;3McWfRP{%XD(+rz6CAk7TEAZF^V)~+`>UVe|JbnM1!5+LHWe3Rx!c2Q77fucKj(VqBQOp3@k9RXAN#0EAv{SIY|%Hcte!_#e0P|zqW@&Se*{^YR@nVFdZaTr~K-_?V)-Wz$% znR&0cM{&VZn!Z(8JnZE!=(5T8Mts>vw9cc0Z83G(CuSWV?H8#{+7vXTn3uHYp*nuFwvSF@^uz zO@-Ivcxl$Ok;{-t!*Fl=({0|{cIuBA9;+nWKnhQKZ*4}zy&g_lCw}@^>*v^?pne6Q z%FWrBvq8h~yjos@=_7P^+ddi~QWU&qfp+yP2#YkJqa~1$`)u=&R|vD_q$=C#wBdOg zq*bBxme+WJZ!hO3)?3K<@9$AQv?ADi|I8)0pE)3cU9*WZPa$!>=><}K86jZdUk{k> z!4dyGYrzlM?2~YwHs){E2YJpfzoY|y{)~Ecwc*&F85^TulMDJ@f8@+KJG1wGnOjN1 zI9tcrBc!cYee5i=f4qyiiphU5oG|&ZFuiah@h;8a+oBS9N54n2oUxC-KrGEsu;BbtAbh8gGF4a%9H+3(%Bd~YTLivc*Vu%Z7>`xoB9Iy{JU*QoI78V9zy-1ii zM?~byudx3>Jr$= z5U4;}A~g&}ay6_Wcxda`_5{eW@{r$~D)JuR_EzQ>EmK6%@W&DrZm?-##NhZ#F*EhF%!V_$hlcKvI z%J1Ql!M-9TslTiwm?xYLlwR@n@YK|BufH(Y>%)n&=CBi;Q5p#j4IFoWdR3pWBAVcr z-X?J^WWRb0Z>_@O2;}{FJ*s2ycC`@v*3EshLsq1dbE&f`xm7=+T|y3QKF#!nlfTj1 z6NVzZIAb{PIg3ll{J4okUpX#p7dTbU%dOdq`NZ~&**Z9SD>J6WXmIe@X+2SnCUab97;BIM17FI!;nrOnQpwYHb@noaSb6S&xhqyVGe zuGcpRnxoUk#;>oh3F41`8!Se*JurB!j45QT7gO)e)@PSW+&60MJ5}2%$~cbCQBUfk zZZXgV)#W9e^gMApjP+AJG@QKGSiktWq`nB^SWr8vuoE%$0Fi0DWp~aDd<}(6Husi) zsPV)J9Q5`yZCqTqK!GsP%FpNPYxn3GTwnXp&~H19>3`Fci}xpDF@0)9`#$|pl7j0i zOr)b|KX`mZUUXgvb5yh%5U6J`IDu={W!*SiwH9TQ<3O+v;d`b(LvrS5rXS|h($ZH# zJEI7?f(k(G0NB|kq_<){Wp6vkv|}XL6&6=3)2fVD2j!UyXHCTx)Gdc)|0eJMoY~&4 z|GA%>Ow&?XT3fqe@7ZZs{09BptO*Gp<>65Id|>)XEqJ1dYs13)2MK*i9i7ZkoAOL7Q#JPp`bvr$bM;cLK5%w+; zx-{IZ54S=a=ZTalHmIn4^-EamJ@tq7Cmg*?w@vUFj-ryz8NyYG%#w3Cl{|d;KSo53 zIgg68aNthG&|WbN=W|m32ogtZ`5tk|f~KY8%{Qo!+~ztb0denCgjj7uHk64L)yJ!T zG$6DBM0PCPu9r)-TcBhEYYlVxr(A?c=how3gwId6NRYL2GU9gg;b@dL2ZI)?$;*TB z^NzPyBfmTNh$nM##h=zuXwXYMN#Ecq+E%~+ans<9-frrEoS#2IvEed)yn``Vd8pd_ z^b)aa_@Xu|?ghkf)A-$Wq}v?D%hLu)M!x}l4!)hQeAyktdNz8g`ME4YvyIgsi4!gw zYHBWWT=wkFKJ|K_YJ@YeO9_e>3X1QB-n{6JD2{BX$mSn2 zN84HOYf5S=DFq&qh>pIjY=OF-nwCwgZnl^%o0VG{atYdqci8t~RkPpoh}e}$GQSb0 zF_Rp2s9ChDg7v{0Ow6p(X=)}WMh*bQHyQNoJig$@kvALPPIi@qp0~<}q=9M`L)<=| z?(0mU=MeGUMou0cJ}wbjE!b6mub-35oo~3lr@C5`reIp1oJk2rXZ=o^Q7WynhmV7l zRdC2q@jYVvW*s#Bomq__g`q0ZC6UMfu}r8HY=&wq13H894kj6@YX`>~6#*J4+efiy zqVtyUp8rzjRlJ%C7FaD!1^S=F?x>Bn>TTvayUt(BoC4jl+PprgzVjcCVd89h;M5eN zpZ#~x0+S_|%%N>;12g|oml2&*Dp84(=0?&Y)S680?~gVe~%D0&$rQD_%dZXzY4DvHWb z$rHM{q4E$pUq4GtIm}T?R&PuJEsXFSS)` zW|bNu`YkWFt-X$RX#n_N{n`YCK>@|tlt|XRap%K*61xr)*prLiUY)Z|5p@NgcSJMD z%Oxb@-88$f@qIS~7rJXE4DSr6KR+@3>c5guj$(|^)0SYHH|H3XLYgk9f|<*%Cu{5p zJ%vDBmBq0(+|hieiw|e(a^jmKYxHgZz>n6fV4W@*4ItHZUj$QE)T-% z=Pm@#^WO7T zJX>2^dFK}fY^1lAK}#rIS{=2Rrc{CSu;SD!RV`UvJM;V=%_$D3ej5XUuZO!pH3$(08RgpuPMycc1)qRw4$6wqlAdCk31@W zB^C$dSnz1h<^)B9!3vBe(W_IjoEjdPDB~0L-J>xRYCN={CtjOZC|0{){pY*uTMrMf zrNvVPUAB~Rk&9cHuk2y_T?qnRy@n6|PQbMBha*@wxx;RfG?lU`fRXfr*Ao)bMh{y0 zb2RYMw$}D=pHDKf7TLn^F#ACi{WUrvArc5BelWW~Ma(s*oPstoDGh|)A?1aPS|G0f zeI%OuUyE2GeVL==gUFIchji%6ZUi|KxGY}*-e2F1?QULQCS4_HI>mqUtAc-ScAR}S zYNIcs0o`6wI@n0KAIhW|`~+RFSEJ*0zN@Zg-Lz03So=Bij^sq>Vr*;-x?$K+2;|q- ze;uZE|F2?8KHcF5y7-|z&rv9vcjMR)gMM_znk8%vD5UyDq-b;=cCN0*WApsIB2}ub@a<&HX21#H?)lz0Q$~TqE4m)RYam~j-GXg<@f-EewVk}L%RSwqk1`e&8 zuf4cCM_+udxe`7(E6Csl<#_yA1QzG}O$PZ!M~C_ukVY}v*PKJ0%{=&8N^fr+zYsmM zk{c(>goh9$jToyaMxzOUUM(~d%__p4cEcFrH+e)2A~4P@Q*e=sxi2};x$~%@yw90U z*K!51EQnLxgP8_9701WN;cQL44RTdgGz~dwUezVsz|)l24+!d+^r{yGKr-EGa+{_E zT|Eg%T+ijbt&8+;Nqqc`v)2dj)CFlJbLzf`YRRe-&NURc5(6e1t(%zMciOoR`wjP-5)q;~xy zVp^4d5n4}T$~pLKj*UYC9Exr^qF6Z~{F7#q`M?bG?~p!jS1r)%*I=)RjWB6y?bu5V`k~L*@Sr{j1uf)!0x~i>B3n>Z zds<8;+7Pu>j+4vh|7L-7#+ysTboF~ULw<-WK6Z14KzZ~8z}bPoToIf}|00}$qLPwF zV6G@X`{DXSlNq<3tahnvm4hwpOcgN_B-L8}5EkUi&-L@{F4=s>jDK(bJo>+XwT|uf zMFXnphO^7d{qpYwbI=3dfhz0zaC%E;LiPCB8=5e3v}4;W&I!aqcfCfDnu*L^bt9H} z^;Q^%;9z$4G9)`DNvuCAQndG95G)rj6Q3CdRjCM)zR7+}^ZJ3cidS!x zEyGPGn~i%Hv37RW+}{B2#(jnF(!jNYyCXLy_we5!_rw_Q^4aa{E8HW+?nBs>dlPn+ zgQ@9^Rm4L9jd0asgAjxy16!`kr#$L}K}h3e0Mr)1&_J?|IA=+v)V>Q=t3Wl{d; zid9Dg+*W;ylxtSt3!{54>J+`;|y}ai& zPmVgEW~~(o5mEH@q`VZfg9uiZf$DHj{+_=1;7%;S4LXp~WF(>FT?ocSY)QY!6iNztvaeu-vtxXi%s z!82xf#$T}Hg&sr5OrGQ3xg?*d}O4&Y-(3%o5X2BA!;P9svRqt=yFSt0+S zs11|~2+o{4FUQFutn+*``>g1$X>I-0(p}S6JGHgCxud0J{5T9^WvGZp@ZS3?I0MKY z8X~hgpPm{!%z#LmFP|;VDZ1yqQ!((5-n1vl;r`ArEJw~8m5~2b2u0%PZMx=k`58%< zZzVst_WiUTdIrWJj_qIb>+H1h5kco3{wD9i1itkUsfQ%1Qg{%XpV^m2n7SC=#4HHF zhMHMUoj${tu%QrJ-^B>Q*5i>=4Pek07`YS=la83YUZ#~P=g6z5aImq3>tG<&Ypmo% zBwrB26`mG@S?AN5lN~j1>irghUu==a`U-#CQa|o>RR~i>+ihC0*w{e~mm`P2`3qD^ z==2luz~b{HB5Vd>~LAcfS?`X>A^K?pLL?uX;*t5}(dRu>Ho==bN@=4|QYK$guZgC}s=)a(a{4XmFNLj_iXBt1bqeUhCL+ZcsdjX9Z$z5Lf(Njuj0OM^6P?)yC0v_wwLhJ@&Qcf7)( zyXsPnZXm&9dTBT&3>MZ&r_X{^MVIy$>1Y8zZZqp}ufss!!0+*~Gp9D9)ats;?!TyJ zgx2qegw=Xoi{sM?E*_u53UC%3NZY|%Z(k%H#@=2w-=6+?^*v3uZ9W1J1E-fMhqiz> zlr57U-sKw<$kMtvv+kD5iDj-ZgrjZNI@CbJr24Q9W6vZdEZC=WpPa636PHsl<6# ztH}%pg@a2>N`l)j0s&krUue+pkE;jxIqLG?-G;xv{0jneaG(sq?#~YWI|sfr4@#IP zT%u(?6r)S}HJVlQ=t^n6!A2*XqYi&Gd8A41@m(`nr@ttur5Nz` zzHC#jQFt!@_YTU#W4>n&wls@k8jB8jhN*s2V&a(0_@7*InE{o{@%v@LBk1*=bAQl_ zi+y%vuF}sFar#4$3WmLZ=9jR7C!$Gy)JX53wBG-`%@yX2Yy>mOTfzx zh1Yrm%%41&1qeJnJWvR`|9v>hi;N?ScS=b~>2_sS&T#J-MxDs&o$?^YF}kbn6KQ^f zPY0Cx^N6m91mPq=VM#Zqa zAT|)TfVLgusVl`dh6%L+8xJ$r4-GW~*V5Dl;Ua|#zICNWn8^i>T>9!^_I({mQPL?;lJHy*n z(3ppH|4GDEmZ*Iq!va7+q8A9OIIa!xet38o2?+`D{^H^Sbn{0I_1@(IjR|zGr-we# zuTu$v@MWsU&U}WWN($B!Wk4?FLJ*&piI^70`G=2l5O`US8Pl0wAUiIIX!}n-LDV9)p=n=X#~`Q;`ZlT5J~^;Kg~t&4fgtVZKaE6< z-;dT!D_xzP6h<3oC?h2s)$3tW++Bi(9_rbrbjzzYouinU-`NXQMy$^ur{|uXq*?l) zwcs|Eg;kmeh>*{Je5a~OxE|@B`f`B#;C{+?Ad~fg^B%j!>XmvkaH&!jrSD&A008n& zIl7_nGaem=*amEwIyb)Fls1D*BG0}Rcjx>11PZ#LKvLo5vtuZ=8;t21X2LduOGB!3$ zAADdiQ`lfsU0vPKp7qaD`?6r{%-DqHM||F))^_Qlxt$@r#PgjcwQ1b{S|rC(F*6_x zNei}ajlmK4?hHdjIA|^-MMDcKjxvpyPYm*67DX1ciPBGIt4PH68cobD9xkY3#7k=~ z@e#xDA{71+=lZNUL#HSx9Kg2s%s)r%W(tJn=2ghBt%ue(`u;;YE;r=8J z$Y<9G-gh|5omfPl9yfdZVDp&^n1~$-1qIxSG5yuU!vimiVsYfM1lTz)LP=VUWRe91 z<=oM;ZS?-T0DCX$kVB5*h75;Fn!Hn|XwuJ1cN8oL+jYL6-)HY!p|v``w65PwUh&wp zQx8|b%_BUjjlc_e{#Z*=Nb+@pgWB{`e>)zc=^IT5yT6BV=VASPAy6P(CREFoFJ^#a zF6DGNzv@JIV$6~qpdd6+EI?-tBG4%CT^G>>HiCX(TX7D0VUmvyBtWzDDl2=Ny5Z zO-+1ZeQ#c4_v#c#agbD3s59{t(U(JY`AOVf!n^ zQ)GI4H5Ui^xlP4C@kT5!nUaFAxKK#*V3@AtbYhrIfPw<+TAW&(nhy!dA9HMCnuC=U z@izz4pX7#CmgeoHK@zyG+TTfIVHEgo!XM#>9W7484v$c8M+O zEwaGp=1BDN3?!lQ5;o#ZZOaJ<^hMONg#Aw3yH7F;5sKcx zi6P}!vHnqs{U zqz8P0Hkw3L-wtHAOqyPz?e1fK`V06(miNx*F;Tel2`EG+lmC$v9B83%;oPeJI5>Cd zBSmP+ec_LN4?0{gl)|KH1(<^2s%QgX29F`dF4Z;9~K z5b^Jq*sq7B8L}4$vXo~3f?@-y*x96bjllk>Ts0#_L|5Xr8(=~ezffL>Qiz?UAK8Jx zE~%%xyuPlksf+s7KK4V6zvSCDzJ(Tq(9lVx$@&emoaFQlRpp%A9M=9vT_54#KbGcA zLYyp^-d&kyB5;1ajfnLd<4Xx&yErsf;TCql0-&O$;MzQ44|#^90ShfnO~kd2d_Xoj zpPk&}AtDPpYGlfVpd6D{c8eW(< zp%XLoMgEGy#&WXg6Ig=tw=A_>0#?z)67wOd$i^%ELvJ>fdhEa z+u`JU3qM@kWfE0Y{s`KeZ>NtRpZq)d=j!f}&ITFrjJ5mQ+{)j^jDb#iauT#TxA^Jn zlzi=6_JV>8**)!<+yrB2i>8BKcx5|&P)@y(alUbzSx;IX6YPAwlX%h7*jrz4y$HCcFA^8KA6TG1m$|`C1A`2-SKCMz=ojR ze@~7{iaB8`QHnwRpZAv=E5mmCOhRFX)sHSj{TEvy*gPS}qdoW))4eRFPxkNP1mA_( zRuggb!UJe&h|B++-A}XDK(Ot)CANX+h`N=i#-wj^e2ED5Kgml`4S+_e?1kH_XL&esjI3g5~Qfn#<-^37G-0L^R@q9 zl@12e($M|^3PYKMi4(_=)2c|8Pnnld*KAoAcAN36sJV7yMT*9(xif?@YmSx_+?LeFF5MyDx)4AXC0&Wk|Oj5@zouh+a;vW;+ z$A3+5ijrGxmeS=uw!EwNlcW$EZ+f+2X>|;e@KS$}9Gv1iet|u^cQO!fx~<3g{Qph3 zX9W&#q|+_oooO_&McraYh8Br=S-`h33NX+!TUuJu(bLPw$imM@M(&jTE&tnoAI3{q z5DEdbW%KOjwU^LnSLZ*9wvmdkWP9&$=9eEm|B`M16dug08=>$vrQAVlY)uEo4!Od&flTx`8j2`BO zg-1k$hmTp}ay2xJjWK2Dt+*~aY8l3wp&t;W5NPp%Zf>l5oNOFRX=>1Ba_Q~$5P|;D z))z|t|C~|tb02euG{?~7vx=wp+sdl%U8to3)w2g8<-XNtxPyg;kL?|~tW}ek*gnpp zLTg!HkN-=lTB^Rdy}7x#+2{k_V0;^!ca-ZQg{M}Emji!2qV-a(gyf5sHs)_QFqXxf zTc6K={a&Fm)G2mAh$6k zJ+Mr4pYFMXl@Bm)95pq}DzpQuBraUgDr}Bdgo5tmODd%ev}UlJ*B-_v`bmNPR6mfv_{zH(V_0PSOj3FI z#~@YyA^vnFwuGUH=IaT-P{ug00KG@3M0oq|ASFG(#3aE;`_nmAglEx!<-huEZ()%C z{w;RDALtndrW?Q@iU=1){2ZP44&|YxxpkR>*nDOle%V;Bd=WiF(OAtk;<;cl3jqNk z52j~LGxlZT=O>J(cD`^<{lJ5{py(sXAu9eR=Drbn0y|~iz#srP#soGCA(9U^G3jo_ z^!iNm3V)2z@7145=7Z(#r^)I-#Bvh_dOEY5mYLp?YBrw|=VoVvHor(qBch<>i2&@Z zysVfq3Y$^3<=s;Rcvx^C|H@BAnxu255Zl6ySux)yZZn^f&~xG zg#ZBpfdIiBf;)lW8sOq~aeepu%kI9jyXU=k4|mQCJq=aWRn^rqUB7xfKR?&7{A!sE zU|fjt3BG4TmoJ3buF@San)6})_RYY+NSYSMTiQ9Vt_%~FYIFS;Nf)VjHBpu6#@sii z?;3FK92&MP8Q@51s^H_gzeCAmHrxW*Jp(;_GViq=Srf^=O|3Wy@n4Un@9!HH?)E-$ z$j-O!tyV?HH+dsI1zzX3t_M3-MDl9J0=H(Kiwxu7x}5MEof<@fG6j{<@vRSI(ELKh zHZTvSx3_mgLxbl>R~_hcG>7xRd?U(1gr}CfySbm^s~t}vL}eP)O#MNwzOJgK(ypST zg5&w{3hs_BPHaqU`rnjx0!KGFm%OLMf^UuuTU4Q$OTnta!R`H9DN08KH;Df6fDDP$ zwXEFczrrx6lVy2VQ1yPf*FR1!<=evSB)_e#y4G<7u|qLo_!j&F8WxVh-z{j@ znT~$!AL#$R$F_Fq5FJP%9P%*VQJ3S!t_m08q)qYW&Ee6}Un{JlP-$uSIKdwdqo^Re z;b*~~b7&zmd^|iWD=R4Utmmp?NQjq`lAN5Ll9Q2+53h%>07{R0<4@ox%(wLJ)D;WH zEy>*NeY==eyQ{W;xnYr`Zme_h+UJ*aLFc&a?u^CpK=c-G@3gfjic0bHebHjkiDo$H z{_Gru&hpgV@S9ARgT*gxY^1*7hwyhMdVcL| zR(0n+`AAJyE}BkUyZkq|w~%!$rqcdNxK~F1K7}&h!rR7aiKIX(E$nYl?-clF192IM zFpPB*0n9{!;`=5yL=(rKa1s}*tQ2N-We$i+GY7c(?(P7`6K1mOJCSlNrdXdl@T!%i zLWJSFLjPj%=W zA)a<3U?h@C+k%z{6YTNpqJI`qV+|rlXDH`cSdYpGA(f>K3Il%Z$I8-aYuxE&2|z;F z80LJpiRQmOSmCuU^}YA^J5bfF)B23Q8_`5GT>Aa?#uqBHch1k~2;YODFQOV>#6OS2 z66taCQ*%hwvP4=KGfX2{Ae6fjy~QRwqDZit{(1gwr)Pu0%%!)D?Bj)8i$Iln?1A(7cUR> zzdvYMT&C~@m}p{RXx=_vwwA7F0n1rhX7C{3e}@h^D6$e7$3Mq^QObqJp`jydz%J+L zVykB9YD>+?&SB~1W9#N-$?joe$Mm0O4Jh$yzOGibUey2Xq3CAkF5_qoWk3MRz7~`R zJ1O@7YGY35)q8GgK^{{y4tXzkUk_?-!GGVNW$W$k>t${0P5qCc{v)D)oh!O>QSChd1cI{4aC= z@W!EI8{qRl^T#E?^Ir~|X)NFqFaRDNXy^a3DCg^D?c?a~_OHQ%Dv^x4tEHnGR8*YQ zTu}P79fNG47u?X(|EQF=%Dia-vZ`^HbO@e zst`WV1`fF_VN-ZCsJN3%;hBMdhWfvx{2yyNmmv55Mb`gQ)BiiR(5JWpP&%dEq3B=Q z9+uWnJCd>WbF{YAl9&27L0JD#BqOaOV{7ehV~f_jGXXoz0{o+1|3^e|zlRd?AM@i8 zgi7)M!~FjL$k0}`^meA^dH-)I{bQV1Q0o+U&&SXAFZ2BO-~s=Wbsl%d2Imj?^5?Fu z<}KdiDSzG-V2^WY9f<$SaqlwLWMZp)OfBIPUSPrSMiEAaL*}g0KV`qupY_2iSkk^+ zL9sMr=LP+CJU=H8Y#N?Hp-gmUeJQwVf3uboxMBLVH-45c=)K4BvVGqTel2_remT1b zpl4!*K)a}4EFIFXa>Svp2!rpCf4zI|#Va835ZpU1ekCu9Gv;B}eBJP>Op`Pm!@v|O}s9k=op$wY8fj;u-QkP58KL^0VoeOuM4 zz+T^kK7p#}Y2VbT?6Ddh7h_N%{gC<)#d2(w&_58sSmE}|xo-e**XrpHIK%lH)r(^& z`wL~LP>6qkse{)szWdG{i|Ycoshi;-{k8Cf5O>7&ta1+&@yJMWL=$*usXB~I@HC=V>0-}0R z9q28k7PQ&q-G$BEo@Wwa3c`#t_Av62G>C_#HywmJe0Ys zB4n)1;M0T+^uab=^-5?wf(iPmHkadCkd+RkGo@G;~iSfRpNCA*529LBI`BoNWBxaloC0-+4KGwcKj-LWNkp zKfquuCc@-#V^m$4_ud_t5Cy!skw%yQoR>8zFs|mseGq$1xDi|+7c#&_h;HY($c!?`(Ijr2E1`x2Rj_w`33s7fzB3wqHy13MnN=fTTW)V~*MTxK^Q ze{7BePRg*a;xyc*+KbNKhSp%oPw~lFfX?%spSH>mzntIZcTs{HZ{?!cDJ-sx%|Prj_R^jTYyS`Wzxg zM)c+!c3J_^If5t^ry=qC6`vfw;dq7tJ;4$sZ?;_-oQf$?Ng;1 zm-Qz$#pwpXjpKizOQFf+tDH8u2j1%#4BdLMF+42ehv8(N4LlJY+<0;N@oska?icbe zRFB`PP^3;x_d++W=|Frj=O+ zze&WU!*y#{+L#W9B*TSa<;%)C-SM|q8Mgf?>RDhECkJP}J@%e|CSq6O<809Y=TL(V=uY#d_fgT?8(}0mb~G=YxdTN_1tkb#YBF)a`W=GdM*S z!4N~Cix7fXL9y!7~7ysGV0-+jzV;FgF)k8nC9CXAk} z%kU^=Y5lIH{d{$;5{FU!ef}x4(94U|@JU<(=E2a(^NwPh@+UqU@?Y}t?VC3H0s!*v z#d1RdV)=k~7f)#1YQ&K zP%XnWExK4XyM3~bpY4^mSI<-tpTM(pk@w4gUn|>fjxh5pP@~{X#uKihoHQsah3GiD z?^3gCyCw3>-({Z(qwf}4b-&dA)>tHOO~Ls=^?1xGpq06Uxtp{VUenhA_%nRi+SYj< zsrgcJHif)FiS42wYOjl~d+ zQx?Ho;sY$zQ#GWf-Fr!3%ER+vxpG;Ds^y@wvS=?K|LY|B&h4?VanAnzdI)C*kJQ?r zv$}+8=+J$H)*pMxjPgndMuz3E$j}qWXv)9fb*c=;c%w4SpgC9@EH;Pq4zYLR8O7x1 zjY)PzgeJ~EIwT6!A(I2-Z1X!&PW2YmXTjxF@pS<7{gxmj7>HND$|{WN8$8d6f?+sr zDB0A|O=BSV6FcckSlG(5h3%hTExfK9u;1B=-aI(DP)^Z!omSHpA3`?Ud7iq>e*C); z6wd8%_9;aCBLDX5F#jRDkPe=5;r-s?{rYx;|DYnsdS3oeOO#3l)GZp;Mf03p_QQpnS3(A=R;pX9K^Mi!7Z^cR=u1|ZSHHp1}L&} zN6P!g(;E2zzstq;%TRCwaZx_*p^%<80oub24}4kmR3sy|HS#@$#W2hsaiR5#dJ#B} zWKWgCUd%+m`AATYJb3f;ZUlR8iXQ2NtX2$#n9bB47_8!ufPKf&M}gi?IP|g5{jD3g z9CAOBJ6tI=D|n^IxeX~-tK5X=LgtjSS`B`FWLVBZo z8(PRlo?xi=j!x(yuJJ8X%cAc7e9B%#=wRVSm9r?^Zr!0Z#XZ9>@AW+D_wDE*mITsU zgXfj&z!#ooM^K3_@{!i+MvjoL^OcVDgQhZZW$Sc63;TS*Z7Xv3vCB4^bS(p7SSbj#@OdJ3R*T zG>rSk&kxE5p!?L*7{AL8DhnVIR{L(S_c%}w1esZMQFxr%pNN@|{|)g!UPSf|i;D;z ztm+WUzisd-Ag>a_Mr_F@-a?u$5;5_N+P|mY0|9M?pl_nl6Mvs>joPs!Tif?N%tt&K ztFg%yQ5F+Io4|p(bZIXO56S+7`E8;~l#ca#7WQ4Y?Y|k^u&8R)MO}`>V2Op%SC4)J zCUxpPV68Dp#$;WJgJEI%LddBAlRseq;ZTcII+^rPaJ&JiBy+uyspd?DvirSP2hH=x zvh*uKV6B;5_W&O%oW_z5w)V21s!(~Tzuze!_Jqk@r4(Jy4fgT=$h$B{@lDmQn?LM$ zaxrf2m^P;AFVwn(Ogyi9+TUoYVFR9|RhJQaZGWtv>8hum6!=5Q?j^q-CByAq+=hI* z7smwgH-hdgPAeM6ni=h03udH~?V*iB-$XXQltJzc<^>shWFzleOQ`#IW5WP3aowZX ziNEZ}b$$;Lt?lO;=3EE%of}yeg*QuuV8g(9LNw>+q7`*G>S7VilixXKz`e)ea8fbt zb!BX|X{nukmviVL>~Xq9*Am%ik?acOQ#`ms*pFn?^uBO_t8{N~I<@faAFx8Sylef~ zb6h`vY%*^t1)qP49%P~8P)i2Xe$hT6BzM(18;mn58eJHO%dXKP>Q(w4JiJHk zSW|gjsTz|<*~Sx8%5?MtC{8kgs!QtTrANF7szun(S$s5Qw%A9gwje;h?;z*Y2&-H@ zdAmW%w;>;PiwF7c@b8R-L=&v?-I4>u3oleLRz>v=(1<4rV9I$k!V@^l)BCE=G;%mD z?~|`|@x~X(hxQO46onc{qci#;2x!isg{UvVKc;R>Zbz%wH4K0g$O-Ft`}+`*Tos*Q zznxa`{Hs>3ePdA2^l~5$v(H}pT)B`nD154n-k&j9@1Y4yfjbrGKbQB%hvO4Xs2kSZ z4MDw_{OFof`t1hQZL8qUN{Zj`Dwg%Ce@*Xq_UPNdPocLtNE;EezrRdnQgSff610J% z({r0+LXEw#+%W+1DD`ru4ySai9#!|`J3d>A+2%AcHVR5Y)JH0n2MIyZUx7a(MZj7O z?m*mZc~|rkb*_>57jSFsrQn{p=WB>zMcwr#ZBlI6S|el7*$GXvyf$SVZ2REoZNIGd zV{hH)Zw;6cbn)=$Vy&~TH07UyspVdIA4d*LO6N1=SEGTo&wR7e`Vs!_Gc=6V*DdsS zXMVe{VZ^`Gg~W-P?Kk{+TK3S9n3mZt#KZS>0&51`wXmy2Y*mL&|(@ll>}s_hfTzIU6!d zciPA9orj+h;T2AY5xYD8l7|QnR!DOI;rPsRm`O&%v-~80TKcl7Erd zz|gE5yWh@frSf{hKYq8YQ_UzTqrDkSPB0Z{KTJAW&^kFV^H}r)I@g#6Jng|qEZYJt zKIW?1h3);5{14c3o*f8yxR>*pRV@-MNGft7j`58q4LWX(X+%f2AXUR+KI-b)6jwATZB)g z&hLoJzloCUfxPp?aY5Kzyuo6*tImMinl?e>(Vw2eTZUVDq+=4c6+~iKJnPIbs4=x} zP5vVpPx$fI!jQ1~LuyB{x-5$>TkMSX%e7$i&f*`-jj{i@md__TsS;=`rjNpqPwU6x zF#hDVP`Bb4Wbbn(SF0Tw-%R>7Zlse!u>CO2?;m3tK+>XQ@^_uOAOxlYgHwFwa~f&| z;tBo)-}n=gcS=5zv#)8Vw;Y{L7fy(kKj^qyC$Q*be_u1Lx@v`bT%Yep5*Mg5U@zo@ zZ^G{8r-WK9GiP(TCk^X=F+gg1Li6uV+eLqX|AcF6#}Ln~@7%7MQZ^sGpj76EEjgBE z5LoCPveCA(fuVPSN8b~_WS{xh0d)4L;af#ib(P8$u6md({1Ha!OW|S6E3RU zO>r#>F0Czi)l=-VM5Ka{B%k%qf0uK>n26p-pBB;EH)$E6DGkSLNo&#^r_K|CXxcCt zu}Zgmwx^x*-OjDv>b`guBc$wn_Qw@%ZRn4QLhZ`hs=2p>6b_Sb`P+nl^02tP8u3?7 zry;g1qazv*nf>snn|kRp-Srga5B9I|IjvN@LBi=9sH-o?M7>gs@s}%H6V#CDdNe3g zR^RfxJJp!%ss}cvRnSfZgSn*@K`f@hZ+JRgDISYNjGCHR-Oh||CmT;iuN}=Gn59z# z&cX@Serv}J$yr`AmE8{f1a^lvPz)5D(8;;9K8I*!_XF7{t|2n3+vgjoYkC15BcJm* zKz_yB1jqi=JuAOAChqeeSHdW3z-uD#t6{;b)*FsmfCr{fi}-nkeoFfaVso>4P^+m& zZ0_S^@EN+$R$uVlyk@fN*=3%${EfLt>&6E0gJ-wIgOAt|(!^~cWGQ%y+Qdgtp1sY~ zBRU~?GT>BT7ZFh(nCg6q75&g5QnW{!yjCt+{5`LG=+qn86kZ|Plwr-k(C7BtKN`)Q z^43EL_$x;>Vvl|DJ5vk{`;b2kHfB)7=U*;IKKdOROLZ?a4X*Ky#kxyJ3sz4TTia5E zTU{5C>u&E}c|jLbgN^NkTk`i81WP&)-8rzHyC(PE;qaHy)Bf!vVOg-Zw3=%KZMLIfD@2A z6}OUEx?7yVP5$?hu`5HfuOQufTdLZrkfS{4xOImFwyitQ!Um7GU>Y z9qv)a#k0g^3Xkqz%`IN&?903F#=2Mc*v%-XxSo*5pfOikHn6ntm|*f!QJ=g3Y`mON zJ?)yaC^Em)c0aafndFN%y}VYBLd{{sa{c!2oSKBSShxEW`1UkxB=D7Z)l{;-`&jz* z)7141bXp#_c(KhK+DvZjHv5{ZgraRYHg3KHiKr?s6X1U*ms z7nWT8eZJi;T;q%ov&WsP4mkxDx}UtQDL7i&Lc*p_iTygB`&QgL&;Pia->v0=f*}i_ z$B9}oqCn4EHK`_0Ui_5Dy{-CfH}JO{fQ+(G1CO<}&(Bj~53S~a2oMT0o8bOTWCmgz z|A2IJ@gQ%0#zA#;kA}NZOa1^F)(0`GJJmO`9t!_lGg@DU=!3>y0iCYxqh~^@+S-R8 z;JRpP=nt4?0}$DVV2ha*T@}6;eSJ=6@H1`O$0zm|xHwGx^@~<9PCh;D6CDGEvZC1M ze2m&5IziYpv^1%AY|(^T+UliD+gYFexC`Q_IPymo{8N7Cke2hb*m$MZR)`DHh6W*R ze3La1X)wJXNxOeE0mM5)qsLEbh8K96)4yNyOxoBMPH5?`+_-+e`aEjL?iISM8}oF- zdiGkqsu2`SuiQGYbRu&q?<+r)dzYnz{8KDdDtcieRsMXUk8Fz2-~(xAJCp zAD0j-FDIpv8I>t$*__Go$%)AEi4WtNIpzkX^)R*Q35-T5vH;sKUT8F+yj)gBSKy{t z4z88)34)Jbx0pLhI(OpC#kf0UTruM%EmKdDYbrx0|_V=M=cQx(gFfTu+_WnBRjr z07(1BU2k&t>t3OGE0yqh=j$DB$@0t0{H~MHL(e8oNN?u+yzN~#G~KbTuB)!K&ePf( zvbUE+M$PZG+UBW^^3?7NAsTkgFm9GSUG0+InJj4c2Tmhb;akzY&cs4H{cm4F88_Oo zFDFBp&pIHRVuXy)BTZ=8TQmc`b+Mhx@NT@o^UW>zU0TfuGeBWoEMf?G3-0SGC21>7V*+Ayq+1cvsFp~{r*&4RT;XVt}*kC(B#o}6NUQ&)0r4A7S`@t z36m@!kCERB)TJD~0NieUu76ie_4K^O_Eap%Z#Js%Dvm75{wPRidd2ifd?}lZ*MM+F zCx}kuVb1({-aJ$&TYNMBb0%hPsITjqlR00uN|6mKpYX@|E-Pa*#JbvQ+~VC`UB>D~ zeLYQ!#GcH|M&FG2#w6X#wyw4=$$hMO<3!i1YmcQ!i=eKHJ0(m7_^HmFsFtV<3c{$N-$j>E$jNjaiL^S&W4n6pi6J zi`wdyj$T=dV$$n$mD$nh3E`_%L7Qgl>XfWqZ9$Y83!pWls@doWjcxA4MAUe5#RhPo zw~iqCj-3co=aqWoIp+zV~(9G42A%h1Pv zII5vnSB;CyUo`lWDL`0zrZ@IGJ8Hnx`0~k^a?l4mJ2$&9Pd86TH%;VPh|yYKT9_I7 z7uxy?V-s%HAKZ@wH4>JZ_Tk(izibq1=Si33Jwj1y_J0P!>qtj%J63hP?;})9G%Bzh zv54$TTSp<>^c}IVsYObkbTIltHG@Xa#sXu@eK1mP*Ev)D7t!cyk~~U)l6|_ET99(dlH6c3W98EM}dU`@jS53|6s3P}8!i z&L&zsqWQ^Pn^n_yMye%!l|QyXH8!DwDod*y-TdY#8XIc^1F!MIAAX7Xm8`6i%geCs zqp4VQ*2jnGjwF8<+F}*I-smaq`lv4mIG{%9G zhC$$%98bOMnO4wOKRe$Sc-0YZmyoFu7i|`3|A9ai$I<{XB9ZsNjllytq(aF}G>W8M zP=#sU9}otZP9K7aGSH+fFqn6tg;kPuhFgrSXni8|{<>dF4WG{)#-&Iq4OYLkf$78H zVP~z2)N|j~S9q3XOSJt!VkNL@fgu%>DQZot{j&HO1xqA|5Q!r~~&9^SgjRD8#^*7~;`<%WS@4NTiNIa3wYmh(-~Z$g=RX%W+B!wuUPlT|DG)`Gs-KAqX@+6B;0Y+rf4V@9Ij1XWD3M5ZWZY z#ALA>VOznKA`;5{tDW#HgWQ*tJk7OF(sCy9#TfDDj735gh8?#rv@p6VVK2AX0=6+{ zZfxfx$u||sqAZ-$zNZ-XPNR)lVG82n{h1g{QnrM^0H>7xaY>4Od$AWTkHBZtqSsI& z;R6t9CV%;XR}O=YuV~-mSNr*TcG`lM9&M4DJ^9yH(mkde$x#_+Bb;+(IedO~R;wSI zMbenvzsgBO7tT>!EQ^2iTK%dUm*JH}NBJq5eL?_nE&{(^_jHZ32pd5}y=YCH>Bi4O zA+aE_y$L-DbO~Y$br_NMo?eyg5PSWzx)NYWqQCov77?Ntr)c5zmiVod^K5fM;$k{Y zKN8&Ed%P1GL@t$5QrMv}UJC98bhKe9EVrjQBmF(0>t8Q=6Dr5y6(6I;pZB!$kmr z$C3sJi=&o_ADbe@G`Tb%Y%=yx8nRJHn)x>qt%>%+iyo}f-XcyOUiii}_eB;ESD-Lt|;ipbI_9V()6}guMj@Y z^{D9QylUGMl%FcNUl~O&@;Liw#=gnpBK>ahe%~-nvWl3>6Ha|z_;*`mYKJXg1F0-rLKZL57a>+ZqalLH-g3)|Vqn0g2~{jvj=cnUu6QEU z#4rwMT-JAAZF_#99d$)RgMpA1yEp9!f#q66$b#0Hc*Fs>i1WaN2`nH;QkI|#b|?Sa z>fqoWZ7kO7b`q%j;x`BublbgI`FRx4l+4VCi7a}VYEjj1 z^h0(B5i3GB`F6aNuY?tUGiC_!?CQ9GeXD5yp$Kavba*qzR6}xil%-DwM*$SLSa9?F z8CNl~;ULeEP)3-`Q9vU_#?>CiW5eAaI2vxVtwysdxikIFw}kycv?y+LO+fF%d9{}~ z^EJS2|J66}dhbLy{J!xzDI4w!m`5sXKCOYD-|CeoGH|Pz%h1Jpb@yYnnFraZ_s607 z^5)vomK~?Q`J;t5#6*OjC!+v7!eunYcD;j$Ns7q)evj;85&O?-Z|l{y_Fk{vUgoe# zF`#V0St%psgEYjfan>n!#1r8zxCZ1?DD`m+A~5+W=r~t7O05g2=IB{qknpLo;YBa(*=Y1h zSvu6z?01=6T3cCMRVpoOtSoD6ZNxNN5o#|ombAt>XFH)-$TNOZ!~e&$T?~r6@CYsj z)f9I9x%u?D32PsKEtK!zlZ;RZMh{$B|1(2(EYC(t&{jNC_vaJVen<4&frIN=)B;gJ zS*IlE=ZfDx=2t-n0U@!aKQpLs?=_7SC|DczJZKr48>Jg-^d6Simk{IOD&PCft}m(P z{;XVXnsqA{JL!fu8=^1AdHS3F`%=}hQSGi+s6BY|tdFD}$f?E|*^yW8EMZ%0^v_Uhh6ZqHNMLLPTmp1183Pvm{I$R4P9 z@$<|@g#el0-a#gviG|VTSkXBV4jCySDG?DAD*+WR36Fx5(v$Ap&g||OaetqbwROoR zTF4tbuZ!(6AOT*wKhgzeuD=Gltv@5=`p4KbIESa4 z`15Cnln-H6UP4TQf}D)u>*%?$@nJP4G`9O9ycsAuEgoAYN>0pAnlQf83#9e8>yt*k2hi1W8Kkj-Il44}!{-u|MkoxW=i!^FbUx(`SOxpQGgwWEh)yyb2i6}{^ zw3t`aJKG4-i7A_4O5nyLm zR!;(7;xwa_T|vIiCutWo9iDF+b8qaAu-A>9js0>vILGhR=O-e)YNs|R62Z@jzNMoh z$R-$kc0h)J$?<~5SXrqUzSX;hD>-KAlacXxaEQm^!=$>BniNQId<+*?e`jw|T1#u2 zwazb-I%oMICOez)rCF^Yw=gCG2GCaV@zJreij>CYWE>qEBWe^nG~#mLs*$K7CZOn2 zv-I@T(Ggfxc0(z!w=KK9xjqPl$@?S^w~t{(qj;g~WVgq|!!w|t{#aR6g_vLv&qZBJ zXKPzjM&X7g<+i-y%!}UKD(f1CMY(!d z;G9ZSi|6I^5G%)SYEidj4ON4!S4?esOUz8lvmWl&Gl1`b%z3ujmL=<~MeJny@-1erkM3y7cAm zKD_wv!@kr{eE)u~FE>WOx(n1Ps(Lx0{Xq~hckYlweF{-?tI^1=?cj-{oo-8o#qIeM9*78S+C7C(J>e2Dnc)R=yJJlJ@ej%h=hnT3iU?{k_sPHPN@S+&--eH`-PXp3w++5Lr4cgRQO28%T z_%<`guT>zVjT}-?Br87!Zz)J#y{T-AnV}(QpJX(y-A`#w7`BILB_SZmagi5$y}J+^ zc)GFc~?oSsi7(XrVxoN zoQ+dR43!pE4vnw2`kP59`g7a}XV><-HTDOZ-=UJ0l3`(#N@iwQjO$ldKi6Mid!{z0 z8F8%dyS|th8Nqdj_jDM@T9qmoro1JV9QnZ3&`1?9uL4XlD!*o+U*BLx)*YOO)?p+= zL4yoXuuW28)3QM61?kX?Q=7)xJ_C4Zvhgj~m8Qn#i+%H|b2+qlc1F>Qo$N9LZn4b$ zIS8Eh7&WMF@ybT)N98l0-i-L0jy^|P>p~B*PxpBqRB?iBHbK$qQ2>B^=>L z0m_du=H+XCD^Bd18f$NBuQoMa93w9tsO{|>5J2(=R+^9%u?H_3&jNkS70OIT76_Rl zJUne~d|Y*Eaw3JXsI?UlrU@SwGC)bid**9z$){BLIRxS+UZo^(AU7g-n{On1!#Z%s_;Q$y7%)e30l z7}0_yEQE@>IS`3U{U&jIlC73obV{nbLQfvH;%^&sZrMFzv_-sIqo`y%oW{~%N;F*& z6?9r6Ct=cHWMziobg%=@@^IU@V}C)s@`FNRz-=T&PeQU6_e)C=j=NK?)Jejuw9@wV zK4)hSr`B;r(G9-aJe(ClC*uiULf^3joTX<2HDTr8e!OQY=zBd_relGrDVkoKBPS)T zYozKq&#=oKcz13I*DdX0a@>S%Vrr@g7d$P;d9Gm1L{j~|1fPC%XXn>D=$gA=+oXENy!xDBHg)-TS}!Eu?IzzX`S$mM-) zyMWcpuDa$I*m(oBipID4(6xC<0NKQ=C2Jg-`Fl(^)jX= zIpQtgZKqJoYv!3HkL4`2$DWJY?R-M=g%!98BSbhi`S|?u9&~jxds=?+Nz`nqzWY^x z1sf1vACIO%kLAk4t!2CdeWhNPu&WP`7cAuA@PqU(r;mi;fEvDF2av?Jto5z-Z@aVX zcxmsre(tY#R&{8&4e-4kn@{w914yee_pX0Hx^Df@`6tP2=5SS4Lvf!ZeeC;VrOGP zW-6{_gl5D3=7Cgz$@21=`4ECY1?i@GW|~Tf7J5czpWyH(p0;PxWOV4u?SJ#|yo>y< zU>Zt6oh`M%h)f8r&s*Gj(zAPc>0R}$YOCu!ij%z}ManrC8F&LHw2gHVGvw`no{ikl zT>tG`M?D_moUE;`FJguwb|#zaN#FV0#jgIAK7pGYuK3qw_~Fp^N+wCVOBX}m=WH8G z(t?94B;KP!$foF<6&V7t?T%Sk&Jn>5i<}8Y;4m^GwQ<^B3C#~~?#}L@IhBR?CJBfT zR(fV`ZgLeJYJj9j!E(JDPfc$&VyN#7dl-2IpWi?HC5ow}v9q&?8k-ruP_u~eiW+?r zjhEAegN=ohjB04u?{IO!*T)yUXV)u$HzC<00mDp4O6M=NO;uy2nw?uHc^8oyaPrWY zn8>?t$Q#9t!Ct0Ikoxf>3pC1~pPx61Tl_HTau%+8Nk=|+Og zUAd^LVm3PHd=J-%z#3YS)r^4S%sI?`lNc7Ie>anBYy=JY$WIlX>$Wtt`W4Jj(9s>8 z+~_&?RLt(!==QAfXVL`NeZ21KEbg#u3fpa?cw%j>f3W5WY}UmMbb0;#b5g#4Zy&Le zVnQV|1sJ2!m>X;trzw-)v)aNYVU`HP+Jog8zDlq_(GNa<&V-uW&h9SURI#QVQy&j% z1`>{ziIGro&Y&v!+b?)>fBL=1|YIk4aiXOJ|YiF z%sNB~TF{n`T=A;F{^XQy%Pq8pv-Jx7T+5X+0|=_eux+_O&Y4K4b8`e)aj>VJRE45i9?L3L*b&>GJ>F&p0Iw$cuuL=13Sh-8jgJ_&A0Rk z0lw;dR2i#BKFLd5h*w7vd`BJIq2Es@*<;wGpUo_*>sHN+dJ+oID^Ph@p8e;QqS~}$ zQW^q+O;z1C^7^VzYqm43=T(>0a7aCa=lc%*jWJ)oz-g4$D?@ABy`84n+~To#xj6A9 z!5b;@OA3)MtT!YpX6H6KpO7zwOVF_ga@bYgBIujw@C_;EDF%wW#A(Z;G-x)ymtMN) zB{sen!|lra5Pf-wF^qmohJJeFg~f` zWtrq|v_#!oSl|Z@yM}bWE_A=1spn1Mzlwaptz*+O#eHoFm9|O5Z55c-A;9hHv4QF! z8X6>e5;>ZRk`jp*9!bJj9{dh-#P%^S;44;B=7-a}O>_wxcSI{QgH(qcA)C_FCet5V z)R(~yhC*;#5d;_K^mVH0B*`McwEi!Wa|*4F%zQsN`w%NRI9yQAjTMi4XT5pea^il{ zPa&7z_{N{fXFV%!Z4Gu|$m(E~ID*{+KEX-a5vaE#hH|g&{9L5?lS$rrHOt7eGHu$x zy5Gr-u;@Wu2|5-Tba`fa2{Z>~<=?(uFLd1;EdQ`;qmQ;RbHUEYeERYU2*j2B$gweG zxhb_Y);GIB-GO!Q5_RwhJ}efF+9x3#!^*Nd2&Do^Xa>buxZ~(z$%v; zFGPmRE)Y}aSQbwaNhb7)JwAZ5*v`=SnopEM6{RGd&v4UEKQ$V@A1Nb=ObdT0Ve&bt z@14%{Fk^g%)`z?lJzWoCAo+~$Fhfe;!uK%e?*wmel3-OJvoU zvRbgYmtPPnHX`H(Vdcj9Gh0s2KrR9Fai}Y)^*DL@NJ`)A7qlHT;Es!=5F1vMo{H8f ze-SYuUHdn*I-|ueD4-b;5#i2`U4*QjiPr4Ql3;g*>5d@(Tq|5gvp~^Lv{*~y()&{# zc8MC9L6Rp0hR@ollf)>rUgO({`=;B6MpX!DT(&hz95C?lTtp2Dxb%E=m##j1h!7;Y z{%`|Ayd#;>Zz(9)fP}2;PsSI&1XY)IY5DjLd3E>tQR9YGuM%)RjR^%_OdG{~yMbof zGbfs9svNBBBe(2h{L+^cKf_MrEPYuo@nw%3>ley_Cp(v|8@}ogjG?i^erhqZz@^`z z!eo5Oi%>*OJz)#!ireq)=cU!$tPmKaL52HYi(y*tz~~}gz+gnu$1CoHY`K_68w7@h zONu`VIW{|x3~q%83?(;Ax!7@5a8H_4{JVM^tKiebLukr6~IH8uD_mx~J~zHLYC3zVg8Qo*WWR zL<+(Bkp)Mei5qc^ish(7GWMg`223qu%IR0=ghcCvvF)qb+mZHF!iCk;f_(5@n(xP7 z$)kG?pD#bsk@sv`e%?)dgBb6ncV=yyS6jAZqiFSrwE}3$B2KQTj;iT)B?T!ewSaL_ zm;$;S-j+o*DhNMjoRbKSn%e&y<~lcqN7~6p5~7=drB$|h%UKoK+k_L)G&3^p4}2WZ z>kSDoNqRf}_D71!cLCnxs-xyp4bfK&ix-I6W796*eig#_-`Op_3iS2KNXoLPitLZs zttN}y6=}ekvO{odA0ASjMHpv9C*6lcX{M4?O-1hhL$Xp?D*P!LTF$9iO|LL3fU0f!0&KSw^=A8`xA1S=LGD~_PjmrH5wV@_e)X>Et$9?I3xj_jn!sV{x{ z=CY43=2xYPda+zjs~hibuc3c$Ly$S?V*EbXTy6*`LFB=MaHsj%oJICzFB1G1&rb7Q zax$m8hQ1c^ryFl~Icwg^7zE?90bysSCs!d@15ap+KRyQ5Obw{fiF-9OvKaAHj4C><))Kq%;c(u#L=KJsrF2y_hsB~?av5E=HhHWEDmX~jx6(pt~+SYpDQ4!Gb zSW3BLqFLlHeXD+`W5Vt9l{UK6E@JZbQ}TSKyZ*$~qUfD#Np>xQ$zVNho`a|XG1i~{ zk$GaiGP?X-*k4>}YV6w!K5KVNFgTrSYN3=9*p^i+8LgK@TOsnS4_67(%!DZH5U5hNxIEoRPk?r+(ep;umtm2zcUE5-kz?EEEl|gx4x7NZh>M%Bc*~9Hs_{hiWAALMtIqLflzFuGUcK@fNz8{78Jk9j1 zZJB%p8Wtt8^)lx<@)r5n0vMw8kB^1+&?djP;m$XAr&mxKuIV~W5X;WR0h>Dk40y#a7zWw z6f))&Jd4;}d7V`D#yBi3nMH7y-NE0kT2wNN4INfwCMFgGgCyV4-!3WtWufqeiONC< zWLKmNewFKn0UmK~wl8Cuc({G$JKxHUcG(+# z5;6aoZ+-Lce)u1ABQa10^Ygnu`F?A~>GGUo*+u8S_V3>dyyVtcdRpHXVwi~g$3w*T z{VVhWcklY`zlG%n{63f`{&|~S$^DBNebM}X)EgCq6GCEA zoy5dlh{Rz|mAqD_@svo@#2rlK@;DYgC=5oVwZaC}%7=GI%Rp@PU${`z+0-4p>w1b| z(N=G?NN3Qf$%%nwdgKk4J?qp>Th`vRY(N z$h>@@hH%axytR6N>7*y4lHlDSr4A5L=%|F1l-F`D4n9mUQHDv%fQPm2pt)JX(Nx+A(ZE36GJ2!D#U0veZNjfn@=8#%Cn|47;Kb8#)WnPXX#knb1Fv zdVYPAa+@dn=Rdz^*DK$DwK>Q6Qn>TkV{hbFoO=1SZvp0CXZkLH4*%<~eYGmr{TF9F z{^lEBj}HFrTW4Kg`Oa4}(>&axj(zzsB{trkpLz8gW3}G@`jdZ&3fU18wkzbyzN3fV zIC1s3@XtSq&ugZU&)Wc93yZ2%)OnV|S}#tQ-#P*qe?}Z2}ce0&$IPY^|F*=oC-66F(2-h zQO1Z}e}TH$uJ%l#_l6D-#_;(tp?;gYzYm`WMg2G5cqKdR=WqSyTe-O&yFw0q_FLZs z%ujb8e`)`||L05pP?qWRi!*MY`Nr3y0)PI-Z@%Z@`_tIm!vJ_eU4RR97Vg{s_O}y~ z54`r1?>6S{Id|rl-qD9Xg4<;0BId33l|{bCe*sgb<69Q%&T@j8=vI9ruJ|}ah>4g+ zaXf)In`3L{YH6|FEXDN7Zbk*dZ+2y^}OVZX495{MT?-h_!mcmzTjnWAq zM)|-Rhm)0r3tbK~5MzO^w=%Y`m-Bkb4jDC37hwZRRG4x=s!f$ljGv~*29(jFe+rLL zHZduOBg?y1jXeD|8mDM!a$D6dMu+UBG+PymQuxf(YM-$hJ}wkzi}19o9FI)BuUI6) zPe#Ww)9pgZli{$e=y?_9xA)Ie%)7e+$o+g?OU`!r>S1rh{Qv#=7pqE~JR&^5^ybgM z^M78A3;d5$em@L|clpZe|MvPDf8U6`^!kYlzdRG`!Z81@ucZY4prOk7>&Lub_}!bo z{^cuU*Y~~|S8MROS)PRiJN zMyho3uXMPiK^4;_K#Q&wIVwzy7uj5eQO3{vw#a*(M4n#Za$MvQ^{SXgf7R-elA4cW z-mEfC#iEi)$=NPb7qPcg$!IN|P$16oM$#@E?9vG}s_fQJiX2d4fR(hU%QD)T<56<3 z3*nq(6=)3ex2v}}VRNdtSHM6y#3pM_1gJk zKj-iI@%m1Ce|Tii8~z?-1bMoDY0q0bg53cBPuKHl**R01X&bd+1tI4F13Wa5pGq&x zPxbn#a@^8_>J)6FL)aKr5TgmRn2Oa^NduFUtYyz6R#46_lWkt*e>7FI`T%0Hi0>79 zoj5sX8>3Wv^!QFCt@0!mu~ScsDLnaF9TIO5=VglocWhstNy(?72D4pSRI-ab*DU&x znXAiUfH>^bQK5x`JwP7h6s0=tqNe z)VoQ2V2x3I;Hha*0WfZK;u;<|^eKD#RLQ}ZEy>S6T2h}Kyk*meSy{TG_9i(mThZ{! zIqyqS+=6heh)_wr0&J?}B`>8x;xlpe2_rT)ZNJQ9TakS@xarkuS65^90$H53F0Tnck9}p0`R6xp zJl$9Msjb5z=IPKDdFmGVx~jY|Dh`4dvA)v&4wLGa*|4rf(M z{&v|*FHSENe=ZdH1U<2kDx4}Jz(Cn~tt>5x&7@|L??UZSbX-p5yZOv2w~U<8cgwl( z5;zZCL7cT;_nsU3hlkKbQRNiZ{}zC~66=R>igzY+S-T z*9{7%Fh$Q$$&>caQ*sbgcz@=3nJwJt|6s&Y0u9*SpC zrD``hZo4+}{78B!7lCRwp9J`AsfehcS{RiUi5&JTiR?*i&$UF_Wj(A|tmuT1ye^Eo z+gI6|e-Q^Z0@W;_Zd(z7G&qPD<^{+l0z!>F9ke=bhJlcxz~?}m~Zin=Q-2jibtvt&X4PQv;(( zVk@_ZD0WEYA#7d~pHpyBpxG(c&|Qz6Sg3zq#1ey^f7R9HOTYTXS9b3BrvuJk_wj!9 z*pY9ZIQ~sPCf_>c_svs&ubw>i>WO3DKskQYLB1~J*b!M?5popdFvvf1`SKy(f2a9v za&i&#CUQE4QC@6C*kckKbkuO5vbjLS%wy!35__prd3a;l$4D~TlODW zRp~g?CyQ-&Osd35Fn&y!f1k{SV%xIqTG~my#T(-g?kj>Mc^wQMUJ>*j-R6oPQi_eS za7UtuftOv5GKUc+DxoWsw<{M{*0`-ogfN+vb!7Mea%456;p+P8#tmk}Qq2G4kZWYn z+gb50wRt|h^?pIc=W2(h%s@Zj_`M^|@%T$x|WYhl1MyJWfeUpuQ zC$I0BxVC%Z+OEzjuh$R!?!{d@UVQs^+w%E|$tg2Y7dG5mf!X=wjo!-P+Diu2p~o~? zS!Py7MP1uaxFJJQ_`5CS^x8&qzCnb^7IZI26uU&71TMHdtSX_KH zF(D~Aabi*t;?e~W&!78ne-Y&DhYP1am_PO5!pRTk{XU#O{=wX_$8$#?&mDO@d+71Z!N;?{k7s-y z&3HYU_I#}Ic%*TEq&e`u#^uqJ^P{Q#k0$rMKe6}GIoc$(BCnu|Lr zg{8?&78zMPy1S9R_YDpO1_kikeMybYO;-DgmMu#W#KtAWU%nj74}^_*=ix(`J}`?l zX1Rn8Q|9A{349B#zRa*`rnFd3Xpgp!vN zizy-Q@>(qgu-T@LjQ!t+oV*b9^C-rp9f4IOgKSwbC z!Q9ag=8k+Yd+3ANgC8K~r@bBn=BGU#PjA8eq=NbPCCtA!2AFsK#onL2@atb~#r!`w z?ISkql*VcUo@U2*FxiVDuOA_G!6Ps83-g;=nwy$inp#@w8yZ000%kI@GDgQIp#H${ ze+XheD=P!8*VI&#piKkw ziA-u{5Lefmnophb1Bg~uRW`S@)YjLRmX+ZdG_`fLV1pQFUU9fcU>qN7;Do1lU=SW2 z9trxy@73JennII-7ZnxNH(aZ(t%D&Ke-spuot-hI(b!kkL~NKz+0f*WRYPJsJUrN8 zQ=XDcOkF`m!YvNj2}Jf7p{`eyl~XCqz|kk8ggCCs&_!4>^HX>rdB6bkKuSm!A@Kz8 z65*k4Nd|trLcNq^P{1qjoVAUcckU_vc?I)z1oID`gn6pxKbSrG!K@1Nk7p?6e>EPD zLC;Sec%*T8f6Dp&sr~Oy?t3(`_x*`&F#qn@o2Cwe`Op1kd(4BL2h3Z@$)0vWs-h)hzP5xt>bG|bkW=;^M&-unlK0|Wg*dDhj{Mn+yKEX<#qUjVX= z_UZ80_>m)rvU4&sGSkDu!vOPCf6p`ikH>{qR#%I_UDbYVIxZq2BZGqcOG=8C^ahM_ z0ajC0Q;nyP4~>kW;_d3`O-oM&z1`K_jT}BJI}4_R{DQpkNe#4`nO`g}E+PjSW~R^1 zFXD6nBg;R)KQ#0b47kv<@2&J22whhiSrhVUCAwA5T@&`Hr4v6 zlxhzTtWiY*IG2!10vUg&T?CRXQ}j|W^JOUzInqF0(xRWPqgd$%@YVHAig~tY#8J;r zQ_L?s0rQmGY=ik}ig^veywLNHo~-9h9S5F{`H871(DPu%>P_-FN@m=7Ey4rP>yDVO zt*he^FD80SwgHesuGiN?tGi5#)iaPpL2PHt9S zejY#<^zb_m9-{3G*hb8gqX&5Gx*Y3^ju8(JH&E9dot;3LL}rY!iAj2jO-gTHKQ0w5 zlJj(mU?2dbLDl#652k0N!AJz=kKUEZ=~<``gQBsyS=g!z|Hhu5zVHOhr(|Z2Pfl8_HVc2cI`$T}KNj{vX-QUupKiB@Ox zLVITyn$mxrU0vmsmGEgsM%viK6t0wwPD}#eqoN{!{4hbh+2P0yAV*}pG zF~;&PC+4o?o3%0aj4O84VwNh~FqR!t2cw~C7ZJrO`;_l~MaQF9w3X8W3n!$)f3_E< z%vDCNTK}sCg*qC?DurSy44(@jLaXZ{#_W&5{0D!3H0FP{`zJ3vQO{>jOil@IBZ7hD z?MuoAaGinad7{sG*t}K`sug+u^~NTS`2fH?P>*xx&Vs^kX=z4xCD81!D_5eT!fR@4 zs;a8boH+%Uzfbu*3iJ~m9-5PzTSnP9e43n`l#!V+HaR6?DG~G2)6-<%y0lLuCMJ?$ zo`-)Qz%ys(X5;xy)X9@jT~jSKw2n_sB__tha{}gNf4hu%zTZTZ&`;SdV!^Y6tul0# z1T~UK=71G#TP63qRoT`g67I2MJLI)m8_navn%ESNx=q>Nq!4(U+8ZPLEv22{GSp>% zJDW|ol4ndt+A4w*hlo$$#C{cH5ANI*+@^ov55oLo3G>2l^U;_e-->w`!2FZAO znRv^GM<*_agn&Zs?&+SI3eq#u;ak1`${vESIBod1_`BF%JVu-bUTo-HVvt*w_>< z7XeWzzQwN28?YiG1hATw(-PI@Yev7hcOCsF!sBOC@42(7cnC6ZhG%3N0)cj>X>G!^ zq-LpzZ^tWwq5wG2I0ac=-5{1J2Q7bdwv*tQ4K!L2>WsatZY&c%vyK8<9m8zI+qI1w z61Vxi{WcPxf4rTZf28>XFmG%J%)kD^Z$8p*vy9m-SmrKq5U`v<+GM6@U&da#6b$?% zB=j;61HdF0h5*jSrshSmiNicFG!n!yUs+Xs?%e6vxEMX{xxK6B(&bBF*cyL~CLr4s z^Dz(JeV0Xo(f;Y_X;=FO2f;F(nx3hyu7ZnUVIduzUFdQYn70AuIe!2cE0|{+_w48c z$D@$pA*-sY#C}7D>msdrE z43w2fT`8X!yrqji%5tYg9VCB7v@s0}q-TgPk}yl;7Y{Tcb_1ny!`fz?bzs=0S4`vwVA5D8c(x`0M_Yw0GdmlZ)Z)1OKcP5yBqOX#2 z8>+bEtf$i99jYBn{7BynL=n8^=4KZb6#^hdNEl#V==q+$fm5gbLPIYBw};Nl$}0l{ zFTkj|d+&ZuULNXsz&t8>KyPJLMPX4vQ*#S&BphoaqvN@GM{K)vEh#!ON-93GR+b}<*m3rE( zHnE9AB(G+9nWVKOvy@c^w`mBzZM3LTxQmlJM0Q`{W8cQ#Zf9Hbgv>2yqhn(Z9`ZeO z=wMY%t>7W)nVFGMk$`QpFmEY2IePRk7+mmM1qBB~!wdcw;4Odj>>n7AnUw|QqeqXx z+qRC*W5nGJvHrAJn?iGG`PqUYbCn7{FdVty;1|Gl`)ABg$X?Cf!Zc^mQjiPP@Xd!FIbD_WtoSu=9nwp%GlLhk;AiSxm zN$gP)n1_KW+nZfX&nE((7cp8=T#ZfMVJg;@lyhgK1tTSqHD5&)j9sL^7TE)2!q4_! zOCv($iWCICps*08u$A?V)s4-70Dmx};PKizI-;Yava_>R*Ka7hSt*|f7Lf8xY( z;CO#)n>WTLrXr&v;4cLv^Y*>_fY@t|O=r%Y4h;((AD>v?xH&t&n3#C=6BlPoF-enVA75gM=TUPDnl}Y_4zKLO#E_t)Bk_*I~E!+f05W=Jx~UKlke= z`fbK1CV|$OX&i`j(4+{AWUfnGmJ+_o1+9O+yu1v^d_cg3*7go5Exf6h+pszVXuv2FXi?%Q!$2>@Jp6qz_FiBf{+c>z zY7l&$5gW4=eU-q(U?7y0mjk^?OG||jieY2pQ`1b(kB-CK1lsIMc-YL`TvspS^Xq?` z8^R|emX`D^Ws^o;W_(Xi+67le3D6g;zOVR~5v|k8m+_))x^61h>@WbmW;WqC)aZT!}n8$dV z4`w94&Gb{(q$Zw#`L_K(+x28UpOrH{F-83Iwq<4GlC<4PIkrz;ld7-BWgyU>(a{lC z!mohUBUX{fIxNRLysfFL4+*&x7It}Pc=+_0Q>kew78=8u!}a_Fs^>x6+}(e`_^qt0 zSX;j#0&4;M#l?i%q@|~!R^PK{S7Ktq*!VcdJfSx*vBQ&qiP7ELi%K3WvVy{bveZ2<{dS_;)3maB!EJd7S zB)NiH^}?up0F6j|E%>==PoIBPl}VNOaFBl6lXmKCnwM?1Cz3| zvr|rP_L9K>bY)Sehu=IP;5_`KxFrOB!%LTf;Wq>(fPiO0Em>TUg8P4>4ZFE*?7>!U zBiXQzB^&nf%oFwe``dAw_r?^=8(N)yw)6GRJUjzCNKSy10&Yu7ON`>+NQ({r zrg{0f2?=qE-Gt>G92Qf^stEU%FoWI`K2*86c z0tyg@Ku%8f%{4iMAChf~Zu2NZD1-5@`c||248D>vVL8xyj z<}-<&Us(fVt-7YBvZ@NkMSE9wR8(X|MLCQV=mD5aU{GLnbu|zk6IgUB>k*NWaq+Q* zMFn6f088)e?um#DFDWSwj|c};8_m|lq@>c)QkXZZs%vDACFME9GrzKaW1WN&Z^3-d zpL9*i(B||sJ)eKg*J0`UjyQT%NmD@Ia@UPXU>*m^lxDWHtQ3F*tf0HMAL&qEKf}Di zKn&rDsp%_M{y*a0yFKpgI2Zf^yOORgt?ys^-23d^^{&_Um9K4C^4iuNjV36LtS}l* zWE$q214tr~0Fg){kpu}6j0glk1SaI1W21r2jm$JNlD~h#);V=fojRwx!C=dtryo2G z;MWas@Sgg;RrS_e2L(AfnFjf9RaK?XEf0?ow^>?#j2z~4R`%x28&gwH+%CT@&c)aS z@Q|`=Wv8<;fN50SsX?j_QESVVjVFapxJ{H;$0s2`oy$K5zeYj9Ir!7VS0Gn~GXl2* zQIm)4Yg~WC=erG}Ru3s{MP=p4m{94Il#~D+I&$PtlN3BZY;M_qU>|%14sugd)3h%@ z{xeLwJ{99USTUXU2a#Ik|tRxM*}@V$0S|z#)^49f$u#-WlKC zy?fwx@Sv#~?z58~55%#otkZC3OioD=*N;s=vH-V2xR31Kv%9CaudcrS$dSYFe|Sok z?lI2e5rCiK3x#JF7URVE*TTG`t9)6^W1LUK=d+Q|3(V^w3stuG(0A5VH23E`OZx{mzw`hf{!<7lF5@ zZ{x-dNl8cc?AZxNCRa$pM7bVb2qd##_?wApOym7W+jndSwsY{{{`7P~(IGfPxQ6&s zU0aK6=fR_9z&4x$$k#^nq_))Op8`HpP>_G$-9G@(g+C>57;$C~?uYj|c`_aDM>#pC z^YhOR4G(*#{d|;zq%zbGC65}KOSL*slg2lO4{<1A@FbhXQ_odkr%ot2U}KkaTvz6? z@D9JmrOTHj13w4!64(pI|I1gd6rC>y>=~zmXjyBGmzN(qmUQWIDFpc`AVq`2kR{!z zsX>rW`9w<#%avH4pEq&7@Kx(J)RTJd=qh6|-)eeNPk`H4nE&bb-uc_aeOTc05G}i}}N&qAEP|F8)#50@e40fB`@=Yi4# zbaQjFJG;8E+;Qfd;5H{tBt3roglyPr>gv1b=2uf zuZ419K3lj99>*~0u*F^aoK+t2*Dj;Vd-&Xb{^g&7?}m45{k^i#qiFN=sbS9^!TZu zEX$Aa`uWAB@a#PN2;}fy(Tx&4DaeK4%@-DzzxeX2P$--ni}{Y%;_0c@nB zr?>Pf9EM56I_RSH}F`B-B+3%nLq0j&*+g1oZBb4Erzz;ux(_Rfy|UGXw-(l67xz| z19yQ5?Hh?j5>$W1Ag`bw2iKdkpvZOr+eSt(qv7h&FDGV#aa*8QUZx%hX^C?WT?VmT z<6M3kfcP)!Ho@@1B4R#H-Dde^W=6Ua%#6r6si(Sb^RzAg%!t5z#ZOkiJj8jyZG>6_ zxXmQ`+A;I$aqS7F95dL4>v1ws=a@I<7(|Um#@X2QB-?+Wr%T*iaA*UbPJ}ajG&aE& zKFYd^-1&&JMP6;`q8%f%6}MG&C5X87Xm=V!uRIF@6Sw`r z8OdZMO@eD>=q(!xmi76zhc`1xzMxY+P z0F83!@UEiw6n0J}Zt+TS4G-@=1$)$zA>fg;V_6c94?-PsVU78S)E*?@^PMl~!zR*I zzLI~I7%{)XoK%a_+jwamjN?ISmhFyfwUs^ZzV zlB3a>vDNj`#2htx#>@t46R0gyJLaQ~>t@i%i17{G?$HE8QD~uf^lBqtWkaeoQ`@#qbs) z8$lki=|S;%T4$Z~90ANPrUzbw7hADieuRfV7(u{8!V4KOV*W&7;vBZ`PLQ38ZIqq5}?Oe?+E9Y35F%#3w z$dTIdeCCcuO36CFIxj?8%mE3I#GO6-ioHzh(L72{S%fFDjhc3f^G?2r4}7`07%tOw z7(r<$;ENNXpl%L=ehwGVK?sDS3rl}Ghb<`l59vw02=k(DGd3aSKxuEgUZOhgEbIVC z$83sc3x#!UUxj_l4z$)+Z*evI;)jivY61xoQw^E_iDo!b9f>vjd*wO6@^- z9x(rf$YGOtoG(j&d0Tt%Jb|uKVBYaPuya^mpC2v<%>Q*F{rsuyT*SQW!)gm_IUZtL zSQ{^2%eI~Gm*k16oSTz?_aJ{UbH&T49^L zkdtxRqvHyMGvizaL$${#vqX;^Rndbc8PlZPh0iIn=O z;yLQ!RieuH55{wiw#`%}aVIOPEC(2<@X5~C;ZUM}r za7FI;Fqk*2#<nSGNdlUd~rN0TGHSuT|<9uQw#I<=6BjbrjNiB zEp_6h9-=O$utP^fEqR|dqJl~9M9hsqONB`f@Tc2^u4h_=pK}-t@`lXlYj`3oW=7^0 zu~wO|58LXC5@%W5g`7_)HHrAUSIalW$v zzwRN!YPA$wW0IGBu&=~7?rE|5B>5m&vaX3KZhUGSka#hF!nJKweI>mDp3Qwsb8C0< zka46k9=0!1uw{>_v^%z7j^dXOabqcRl0)6=oAg>CeS&{2I8clot2(-n&Pk5xqEcJd zt9g!n0jeLd{^QXRUZHx%YA~ssRHv(W7r;i9S2v!J$vBv&TBWJa|9f$pC$EP2?4}mL zJVZ0xXE*ND=lO0{YBO=;XoGpS2-{TJ+0I|u1#fj-)w(ecB?z?3AXdRhFXvNBbd(g6 z(G^Zt)98O;2#1)AMaxO8ROd8iib(~uz{YIN^UUzQ@WvBNJA+MlU73wxI5GmOe3L{4 z4DGbbgCe%+F6oaRoo`MWHIDKqP~qC=S`+X#tEtcHf{&?c`U1RT#nV+JHUw;S1lTdb zg8;-v)NNw>uz4@?Xzj6P16_|+JsbG6{pEU6vwhZ@`A;CXr?^dfPPs4uF|XI8njo({OPQmQ3fCTI)w^ON+P{=QZg6WV zmgt5@pUOt9*m*t0tMt~AYtBZjmJ^eZIka3|$$C<2OhP{hN)}lxo$bx*6x~z5Ql#;>IKd41(CM*=xI|s)1p#^N9O&AF(Wpv0m)mZtdWBIOy2Wlms4R5FYs*i@XgKP@BvAPAIYKhEtW>S0C zAl3KG_@``Dm{)hH)Nz>cQ>h;*jZ>dj4J<}r_;+XQ9+qmw%1}@D1#ES}N70-LN9KPQ z6KW4$TR;EoRr;`q`4!^4%wZ?SCMK2d!LYk`9uv}@{(-KZUQBGediweXhugb)28KuA zRh{xvmEr0&fBKFv?rfh?o5&Q@)s4WY7j#nKcv(AapR&%_iB!G^!7QWHDur?FWo>Fc ztoSo#5h1;jLyHsQ91z>Nop$r#0pWkkB^|k zI8{?yOY4An-pb`?d^J4Db+}dg$iyVo=c!_&aIX0hH*Du))C|DhQBIBc9EUEs^C?tO zdt@7dd6kB@mdKYtMsn>!U^bB%QJLW|Uf*PlEh=9kJgE{-A7Nf=4-{6}J;EyZQ;D9! zJJ`8S{Hn&TyGwu5Bp$;$qPazf^Nh`mJY{h{QBP{<_S-9CUOHV&;A|-=)vaB7(geG^w}0Qhy=B*~m0Y@%Uy$F^ zH+b>V<>M!g->#_Ge_&s?aNA}^j#$RwBFS;9jAN>fdJV?#hQN`KgK96jim

{<(Wyjp~VGE33SV$ydWrCA#5N9wL>GP=!bC^{?VP|PQ`&r)5@jZc zm(|-md##?-i}-xD;5L7izroK~%52Qw`sG*xY*T*s&u= z4~ePm2~W(XFa=kR`4P6Bz!cb-_oHq|DH5*b!PXKPM+Q%$A3APNyUQ}L2v4pWp6PL$ z!1J;UPgLDyk(91#;z4#v6sW0}f@6|c3Lt-ZYK8}MBba0z9d908U_GoVZEuGoy%WaPKR#kvVAN3m3Ka$0^AS#2UvW-~ z<*+Ybt9%j%^AP9%$4Z!QY91S#n2_99Wvtjj)p8dS%mec|eB@yI$@E@n5d)uIDlOf# zd1I3tyXN-1oPK}nT}YFo@eE;Px@v+vR*gnkGjl3%$yu zs7!dETBVH4#N?X+PGj(aVqgNi2=DBACCEexF*_GCfiQno@}-deBR4y ziDP?G!mrZFVcS-khkXo~za=ogQVt84AD^6@nwDioK)WnCDoy*OX4C@Do!z~=ckeuM z^hj%aCtM83KYRA<+I6dI>*}}$W|Wo`sE|HImW*Sz;!zJMnYj$CURox2G3`+%r&m4$ z^1E1aH}ii=1XS)XO}L$)V9tDixn@!|p(u+)BvapK+NiduX*H!bVw>%IQ@V2E(T2vy9-3yNBftil*g%ILxrdS#8{Qt&5-&^f%Moj-g7p^(=ccK|UZ~qrs2L9HuY~C` zi0$$b)^g&oKNJzQ%Ejd`zxpa}4*SBoO+x+rOZa~hKhbf1@YY)b^NBoKb8->$9`CfO zd#K$pOtq^;yq8N$fxssxCttc;DwfyOH>9VhLD)}{ekt6)kG(;sdFlojDA&Xa|; zhYx?BGFuGw+!r9rYZQR-eA5}?KwC&sdFdD)q7)M0iuH2}zl7cy`%2^_vCrwX3hIP& z`L_O0RNy=yK^}_uHPqo_AS?hM7PI1yCFa8``5yHB0X1fb`4#42A2l}vpP!UHDcXyt z{lT>F?t}+u|K5Fj9yPa?UAvx^p4Qddmy>^+lbe?ZG5_-o>swmeRO}s_93x|1-c(|w z-R}OIrmAvrB=b_+(N4)@^q|wYy=Z_7V923;!d;d@1J`Vbk7Vu6!guy^tjRmO1}wn< zby~HNyOPRyeVnLcQ1wrVZ;m5l&z3}HKoVl|&g<@NJ8%66?5APuCP)DC}J z10X7H%VrbZ6l9R+XUeZhJ5Gp5*bAr!LJ;jk(nu!~iq0-9Er0o?#QcAdu5xHa%!|6s zqo$FuaozM0Oh#{$8RzPP(yLce(^7%Pw|8|PI(+y}b!}Q&DlRN5EG|w?NgmgmC8_Fy zb5&f*9-|-7^RTS^s62id3!;n|zX*SC&Nn}jnw?w9kRdQzD5EG1F>o5wBO4iUHdzYH zb;2IC0+@M`vE9KF><&Vt-LN34oHK0fxP4)mq`9-3+XPjC9X4B^NfhBuT!hL-Ka2T0my5WV%PX7g$Wl9}LXhjd)s_r$lxZN9R8kN34eKqFe7!XnOp@`bnUH@q;eCo`M!4M9 zhzBO)2?l_q5%QhY@OH^@oEbC`&dI)j<+h5Y$4ChDsv62zWj0Eb#u#oegzLBRQ_<2S z2-BvWL}DA$PGzy(5wXLYaNVz}-mo4MHIGa_YxDye>T(ir2Gx>&26(>;;6B2?4DUpr z{PHXaJ|7Y!CnRSB<6wXOrG1H?$Ly1O){($}zBLh_7nuKA0?ePv%7HjPD!iJ#&iZxB zT$;_Ia_#Pz#-1i5(=qnEo>A7s$7(#^`GwkDQUy?LP+Np~H7%K@f;o3XvRzMQW{Ql( zGi@p`tPbPME3qfW=FUSotnL$0=^HEO9JEuc?nhNVW!|VAIZS`Skm`qQ=FVW!DYMvh za@%tt7(0||M2|GJ6buu4SHduq#0dHwRy7%&@JjZsuhdy8R$~Iv@e+7De8j*GDk zf!(h!gGV?zyC`$mQ26!dq+)kvK6|ws_J`kj>#q{W`K*VJ1m-6_UOrwy+5ps#A=+Eo zI_^Jee$dp?(cOQ8F4+&8T5y?>v$%G-u^*~y<)AB`2EEirjDLIc)&jgk7ReR*vHm4FeKbcg|npxekE~z zZy)>)@Y*i9)MSeL8*pbZ7O1h_j+3gS8N+HM(Hp8US~K1330KiL4JMPrnhGTGnGn$) zwCqqd8R36dV`vPKcEmi=m>C(~)u9MVN*@e`1m;DpGOpLh(!Wa%J9zWW6)`X4{P@JA zUMJ0iym&r7MSA!(YuBt=^}(l~esbWze)#*=HQamSjqj(Vrof*TfLBmd^wwK%=AAhM zFi1L<^s8U}^QWJEvVQ%#%cWP~7En-F^vS0m!)t$!CM9+Ei4(DD^Tz7Cb^Sxb@U~^w zu03dK-o0nf>NTIOUArbbHy7S>-MTfGN=pG(yLazCd+yw|>o<1p+yP*&t#8<}b#qcu z(z^9)N5>~C?^Lf{w-$b%J$v__&dLHbrky;wXYU@LH0FiaF4_uvc9&ef4FACW2lm4? zSvh|>`}XgH`^e=hSKx=j1@Knzd&0ZH*WqVjcn2WCIo-T@Q*B)XoR0OMuRnJD*rv^! z;Qtu>xQ&}OmRD9578UKdx}@FZl-s17 zey-h;0bc@A>0W$B0K;RuRi)J7ol1_pVrhRp{8W%3_98GG2uC4kV;x33!ch(Q2$~y< zhYai(^Ld01>eq&6=N6X}#}r*vKveA(9U4g~=}<~kx|?65yQEvXyE$}sNh94Y-5m}f z4bt7+Fu*aoE;_siEyMbdM2a4ZFxoy4A&y}pSm*Vp!PTxe{hX>>Zv^$wi5WJ({aqr&B68f2w zlbww`-{98{l0sM?rR8M!y-uxP*Z=wlKH04>DaZ(W z>>j5n(s&jZ-QHgqb2hlGy`DTF1OlS*`cmC$*AdKnf0ze zh4$XwzJ5jqPcb&?RVjsq#cFEmeK!Mpkyq$w-xxnX1gZZ6T3lI^>_!hClK|#*MSQeB z-(3V(i}MU9q72@|qefAtg~u!;*}>cH{8`jI&u~KxLNtFbjY5rfi|W!ZFt>VfmqymPS!pVu{o9*YP>;X=N z??~Ba3Bq!~hgDWp>R(My4k(nBRJ6aAy!m?Zuc2IfiC=4}ZE9+&(QZvkQG*Ih2I&up zCS7-c^}h+r<8(U`TC1Tjcq5F|>G=G}*&VWAo8k@IiWRP~Ge@+~=JjfEKGheCg1)TrwNtxrizv_9W zeg4s^^PjJ~p~a%;!|v~D!2aBPD*lAO5y3CsLZ{gtu1dghn98j=4AF<+!|4%lg9>?sXnwWc6YxWv`yYH5gh(sT=S7}`X{&&An zNEMdkums{@KX4V)MiN-y(gYFf(RWvxo+_0y9fiXCj7-_D0$DN}*aTW`i@TcF~g z`$KIp3A%hG1)nnuJvaRxG>y|r{qFj$CYRJw@{(<(+PDYb;0F3G_ z+SVu9X8tG-pk2l2b$(3H%Qb>OUDm?C+ez;%0^=e1Y-#Ke>bN_&;f*SX_3qWBot@EA?5{o!ldC>$eV5{W z5)Ap-tH65R3$%m zEbDi_+B|Q}W*Ztd%zt0>^!Ys9W(v6Ae$`oBtZ(sX(OlF-3JyL`!1D6~FRMbPlq51? zhxWQwV0U^#DCAZ5oNg%gGgPz+&3mg4Tm3&%vvcj_q%zvvv>CyvJjSH~t z^KpjGmwDX{#Y_kSP)>2Qn{54`P`4Y;cb`Q8YP0Rme;GSF_Tp8MNFGuL^a>j(wD%~z z&!`EuA}(%g-DWvH;1E7pl}+(wTvcuU_+P{G^}(0nW;m@ltm2}=3jMC4;_941*7jC+ zp~B*t7Vr76HfPmX#y=Xg-{842T#R7!K@Af3xmus_j6M+iYviN^#Y6opkLiSGr{FPw zgL}sREM_{WzRpk2Z@jlT%rU@v`Wn4R*x}GFRN=88U&!h;zGt{}?4c1l!7T-SJzx5K z{(zE)9qF~xPIJu}42Cd%Vr0HO_Sd;QE{#$V?07zJLiUE=ozQQFXztY-4>9R>Vl2Kl zpr{+4`mFw`tZbcpeL64{Yo!vjZy~?{3%@ULDYmPv42^Jl&F+UYQtnOA>EexIbSNRA zE<+pI9Xb^<=H2O9X$Lw!iSK5%j~D&+r-|R!&dr>VJU{>LGpF_So|&1X%*-!g8|M}( zGD}5_8RI)S{O;!vSR|yJ+YX+zm6L@7enya%w&hrBaa@-lrQfr8vcu~xMUMdx^xY() zdWSW<@`zk3T}lOQ*d(kq5B8+j07xmvEymLEU4@tT0AS@Rn5rIg8KSfYEeG; z8$^TnZP~xJoAZAOGCvh^#-aR)86JEpNR~ictmCd7`M)>b)L0t8zznmo%c5$WoknDtmDEB z4gCv=o|lfx$eXa|&{%Q5WdjRA(-%~@SjV5bZEpW%wmToN8C2I7pJj(#dHF{pOsqB8 ztv#b)!*w7fuzzH$3iUw6%PnUA^Mo^NO7+rgHQafr~AjJRh4b%cIb;oPiL>D z-j2BU*qK?KJ?}-fHmF12lM6ZTE1s-qg_YblL11P(KlB+tXQXE@w%IW+bAk;C9cE{? zXHjRc0d!DmD{8!T02Iq-@j96rP1T$HDN1kk^b1AR$u+m@D*3M`mMAAvqu!LW-To?N z4D*hJzqQq`(Z%&{W@eV0&)eSGyRP}(`*9=@R0G?~zd!PSEwrCEw>bNSqiXr=#{d~KXd(en5ciLa;Z_|Iz?1NZ~YbW1R@Guuoi$U4Jid) zBp8OXV7CgSwWHG#7C*m$pN%$4X#cS>GTzwg{{La}wRvv$9z_(;v`p;xdaQ3j&Zaes z-!mXL_xj+M;QTEvno9vuVYQvLUzeENm~OLX9Iu9ix`MRjW&Z9vci-Zo#~OvJ(w}D9 zkTO}y&r3YpcyOjZ^7!=#7(imxoV~SGrsC-mzZtk^a<^F0M6gm?2h+dfCtOB>OUefYBaNb5nub&Yl5v({Y(gfR$F@6c6c1rY&!>a-d1JkuN`h}m5 zVISJxuFAq<(+LjrKJuXxf*I4jO+{t_fPHMxYtChH@CGSduCi{@;1?lxyZg`GgwKxD z1^S2S-kWt|7}=8#V$CBTb~kR$SBTT>Lh_vATRhx7oDCh6ixSUq?-|f#VmB%wDd!;h z-D*t{q)3^iFTyd-{6%8--Fnsr$vuP7=jo}fq1c=r>|Wq$^Ahi#V4bM98m$@=m>BCx zCR+6f4QqSiQ*g&gz>mUT3eP-8+x}fPQKHB!Ob{$lh!_V@mDL`FRYu0q5XIT=NZ!iK zW96}a@-lIQySI8fT&oyf^HbSqWUnti$TLH@U*O9UHoyHA0Kbd3TeBGUFd|ibxV6M3 zty3+JuF!!;QS~R?v?^9>?o_D_@VS|Cm02uoU%vS`#KYa0I@LF>Vy!dW==9tBWZ}H@ zWZAr`n3heJBLCKbM>PM_b{)#%q9Nmoj7bV{xm3TG)HVXkz_%y?>_TWfyK7_$qBUom zu)O|=nPs?PIa}<&t-UID!iOM_@sT$tl1k@rVQR<0!ESk{_)wg~Yo#ngKr;;mCK?8T z0>L*Ay?N>@E$3nauMcL-d+HHYU2jh6hvpu0~l(YU9F@zHNgMWWG&(+3*2+pIr? zf9?_RG>kS2sc!v_AMAw%C^Cr0`rdP1isG+6v?qM3=ZSq* zfxXLdaZFbnC-*njBOnbdYp_H+Gfa+lglBeKisL0Yb@KUG^Ct2LsS9>l&Qd+m^;^Qq zTH$ap@|sIwb7oI{n`<#*!fRVAdh!ihkAZf|f~ZzRS}q17MV|*IP;VYSM@)3>8KoB4 z!xH;?TZ4NzCDkuUFBaZYl*CGX*Rv&KW=}?7%!z$Kv1=lC@?HcT%c?{xkFEJ#^`<8M zq@7OHH^^=)e7!T>;DF~KrDG9qRHO@w^)&+Aw69U{H-hp5SC+B8>Tnq1N~nhi)wgZL zk*MBAtTVD!`~`*=z$plwB!8*l-D^CVn&C@%b#FY6gYQ9u83Mn4DLrk=*d5+Y0puz+ z#AGF8`QI!_`kU&-rO){wso=Jgb?Ajn5rcMidN6*P{jc@$v=h!FCVKYExt2T1FyGPHN@xy0$ER)WbKQGsN*&i%xS*Yl+VICgug%BS z$DVj4chUPvMjLX$4g|R|Mx!zlYuskCAAirSAVE~~o!V=VuI|2~BBn(}KYfJDxzp7b ziLuHO?ao)=e6sueqxUf>5xlkA-A$jJ_U9B|EQGv&{B0YQ=&-b&CBNl^r?)d>+YD|U zjYF*N41-YfVK2BncGcfBjb}AfoSnrkY~M{IN@CRQ_6XPEdd{&*c2N*7m?$ANcM(mZCQk8pkBTD1ZU3#hQ`(awt?Hr6_DH1N#Fa&?sE-kElX+X z%UWY85b}f)x$hh%b6N?vc|38o+mEGBJVIcXYW5rn2{CiC+}#cfO?J#8`;TK8QbP%T zY{_~Zo|iv7UFF9?=WDSUJeZjuicNVre$S?0rUxP^w-goPVkZ3-$HI!^;doIzmDQb9@fH3HG(ss=0D)={+ ztcw?!k(iKhs;b@>E-8=mDGUS$5@KVo%Z)bL2tA5ovsnlzcd>G^?+6HYws(4S{kSLi z6X~6C=wt4%F?#Us>H7|tzI+O(?t2BIm)qL|0s>}!|L)EEikdx?sDO{ZD@sE8XG!f> zVqPl!yTZ5O`9PWfB$SMYyGYi;6k8)|$s0P0@=9{9KG2x{D#9WL$+{+<_LONw zYl&`j66Q34oti%h6Olans@Hafw7#6WJCQ8F*-M`xMDRNUeY^LM5k&9ibx-iWR2^A|N4n{s6 ztXw+JPEJ+}#iDF=edhBcs{wp!w-Y`F&d=E{HJa$~Xv_EfiHwMZOL;&-vTwFkS0&@m zMl>_KJJki>`(zMb_}*A*+Uha+z3Y9NJ6Wnq(H$8XYjJ+SU1kRN3f;UNE=RX>l^JcG zo*MypBlKVkX;yq%T22o39r}GGm$inzlI9x;NXQ2Xq zZ=fHk?Kx6H;KlOnVGUJmmy``=Kh6j5x~@#WLW^_W36>gm7yg(Z?Dd&)e1iZ5{Sl&3 zj4jTkja6``Pv-%E(*shD&n?3@gRmUt++# zD{phW5D71{yWDYXG5xv?n+G6!#AMPk3QP57^MzB&0#=}+TF~8Icp2aCD`W(RvAA78 zWaWmG8-&CReD>$-ojzVv!;t}dzp+uFdpXqz+oIA~Ik&(ycD9g@=hJQFj&dmESEZG? ztel)b_4MQlLR81bOJJ<<%g4`8&JyZB|1w6&y?gf#Wd0EH1nKI*9u|A{e_epSg1&Ho z=4go9W?H}z`_5BeJobps#YJ>Q!vGxRe>aEk2!#H|54tA2F$WArmMWh)E%l@#QNFes z5f{++n|T9px=Qm?@ByEP+FPmKZqmBlWWKRb^(4*cb6k)xqjs7Jjn?qYsGFa}EzedR zDxb4~Tmdc03WtVx_GfQ+5ywK|jDK?c$0A^V4*84RywyiZ9`JBW&W}YQfQUiN%8ZCG z%Xu#JHUe(qXs#0Hpa5#=kAd*D&dKp&8bxl5vf>f2@$lePW2n~q{Is1I3t5sZfy`<* zT95KOA&(uchpn``SY4$=kJ*r?)@F}F@Avc7gaE%X?og}~VUNS@{e^<|RrKOraC`NS zwqPS2B*7Btr~QmJGRfm!)yjoFe)^O?XFTJAi3!fU0kNpO!_tteAqBFZ#`Ex3aq!@7 z8Nl3s8_;xyTs4YXfH1O-F$h7vaw93z)x?x3DCFY4upW+o zXbSv9MXb=UIE%_!J@>{>0%)+Y`qU$sb?(7u<*x-{^{ZLt=D@IDsWV|`0aRaC+g-e- zi=y8)feicljvwf3z6?S>o@4a0GP7HIL3rY}hP5{~zI&1NGrT`Iw{X0C(+t!@{5Fbz z{4lN1Z7Tvx54LVW%aGs6@k$eld}7$u9R);9MnU1|h!U}&r|SY1d?jMNP8r->Y1NJ* zY;?A|5=Uih->KmU7h~h#PRX}IDqNR^v1lRTZm=Q$2mRxoTfl7p&2AYm6Q#P98`gcAHjpx zdY2Dt?{i+U&zn48AHX9$-uk+}!Gb7J{qfD<>Cb-u|Lzy&CXtp2s;n(7mfB7540d&1 zTAop`mOoYd{l@8rI8cakWMciA)6~>#@i0pWLheSH^cosJ5m|>zd<)QTp!mEzJO=cB zrIGq-BI7;@VlKtf-qv`Aa0+&FpctLDXDr>RIRnyQNDHI zA)K#X^D|#woJQ{gx(8%v&%NNENQj7$B=tWs!0mqberd|HRIG-$aM5(&AtD*Ygcgd*){P-@m-BuF&VIwDF?8t!txTQv@Y_O){FA9xQG@ zujY3;{SwC^DF_a@8Ubg)0107qopn*}A=> zYsOh3cvfbc}+c zs;ZiM0Reya)Wi(*J!E^|4Wp4ji7`TET@oS+|9gzJfZumtN5oLUJ~VROmA%U=5Ric$ zi*9|gQ*sM>1uV>15&IBP#Dc=zQ(eF7**Yti8%%p2Z8LROTdZYG`E0(~6>dm7(0Xf2 z{>>V-cSZ2|Ezt&(isy}`uFvz%l(HWl85E4|DBAsg&tUK5k51J!Jocx&RmJDz(Z$1& z9%N86CFMinuz>!T+>QE&hv&dRdl8Z|VaUvX-J#so9oj%!JN%{RJtacvXRt$z67|*l zKI?s{KX(uUyaL2`tn!4n#p4C|MXb4F;$%s{d*vg9FK8LgtXGjZ#>4JI^So0KEX-O5 z8f>>Oi9)+IQe($IB)*r7RK-89C{Kde-K1twW95%t20bkDGSFmaXlr=Gwo5m;g2mQ+ zUkNE+Z`-uzx*Y89+UR3nH)RK(9yGfcp)WT7-98~{cKJ&f-r7af0lGlab9wKv{yWp2 ztsL}vU!~L=J;S*Pbost5Go&g%ookdTsw1RTA;pO()H zEl9xBkki=B_{J$)UjT?`yUIGwt2B})upz0O%_ zdtV=~a(tdAUXO*JZ<=23z1AM)?p`+(eD4Qy+Mjm;->1-5P4A>wH@$23r!irVCluxz z_oL`nIpNNWKJJ(OjvSw@lcr6B7w43ci9gu~1PI+h zDrm-F`ZvS9xzb;KG{|0++C#n}C(r3VIgExK_hiz323W>o8E00>Wd8KX+~s}-JdCe- zpX9vYtlvopzaCJ&KB}+5PV8O;DJa`t$JDx>2ixq1jD*OWqq||Lp_Ns;wORt9%irxf zvs2UGhw2$mNM15x%G4i5YWq6S5+OX`FX=^_&fKCI2)CwQ7S0yf-PMdx8~^IpAPt za`vL7q!{>Rp(D27EU=uxmz5ZAObX-`QHk2n9e0FqwH+c>w4Hg0oESP34~t$PIO(I@;k5sXFYxKtbX-& z3Cm^CmP$`|qkGsCoZwa!{!MjR6>_`_(Cp@xrsuKe zhmDfLePNr(HUU)h*dK~1TSWV46ynCYke9X2MB**#KysrcB0(Zof z+D*HI(WH=!+{ue8!U*A4Z{6n(aR|FkTy}PPR)){>uAImWIM!_d14+);jGguu-!3nR zSp`*-QnL9r(m=PYq>CJ9`^fFd(x*?KgEOM9YeVPX;lJzVFD{^2Yxcl1K(_OG9*iz9 zmYU_{TqS<3(&hhuVvm*O1`yn%SkRt#_;({PF;S(ol);`DrVaXmJqTlZI-W{PN8$?M zd#4qO2(pB+nGvC?tEED&0v1zS!9UuYn~7MwVg2FggyT&OP4vYy;B2=BoU?%AlA9eR zO)t2uG!lA-rcHe=+#?M z*%q3p;*vvDbAzoX>JaLW#Y%Z3UnW1gU@DVioP~M!!=@q}UbMep0Y`mmz~4RaC1>L& zed(v}ZIqW91L!-vNBih0M>E{+vRAhYp9#!`4wkdEqB5{5L5+97( zO`w_Zgp>@vf3>vbX+xqs&k23F2`<8F&f9h8aCSQh?~YO^jy6lCH{jrOg;AS3R>AWT zB?R2Sx;Iswst%SO9+J4voyhE%^^!rhe5^_Z8-<~YU-yzr`P9p{hg192PrN$G-gB_=by=@Nt z8gT0g;?$MWs?}zPzU`!8O?evnwN@YP2z#bJrIXWxwdM<_X2{#mhnd(Ey>`kF>rNCD8tm7E6P9pYklEI z628j<`p>pF7u;$=0SC|gZ@DK!b*=IVoJgsSjX|=7TsP}&8Jb_ z3#fVSZGk|$)lY@puX|9=%=Ui3S;0$B3v(o7XLma7-Gbu;l?4dQysr1-K^@D@Ep~UT z`+3PjAGYu?f8vrb&qrCJ!C+Hli1)@O(hRh_;|Hw=q>MbK&vs2CT>dMIgGq>O-9pBNci>GU}Q!Ph;ok1nqDkB@4`Zm|xG zLipLzP#%mV@XWC(J~o*3JBhyR_hg`1Y5&Bm1f36unZMMg2TlT3u#kjO=&Uw@%nwd2 zd8tW?iJymkmW&tZn=s0IoSdbw*0I3cNmi+?S*{VOSgj9RsyMX3u9bAP9tb;i+iY#N zp1t0B`9rK%kT*Jz7w*9w6jhX&smb@*8OSQ+YFg;EG9sdCRmjiW$!h6vHU~aO$)n0` zS5+L@kLxXlA#rgN@D_r=N^FN&7wUo(6FvhCo01dXJs8X2hO)?^x0CJn%ZlLJ2bmXF zSWg#Wo@W?*=LdKMkeiU3H5HF2eG3y3BJBkmcIC_pt7}aJr8Q|137zWSq^-qnlEoMtc=GUOB>D@raI% z$>Wp@nL0_Eh;Aj|W3W#U)8f`IUwyC@n=G9wKUIcaqX0O*w{HoEim`VDP&dLn#H@FB zc`u_=cruBuD65oXW4}NDmqXtzuv>%YtrC?^Uq{H(>$J&5uaG6+zE1_KWM^adckG*o zBLL%fK<)K7NSk1N?R!SyWE&4P+nY2e6zZM#{{$gUO-)beBSZ*|C42GiYi)h>ynlUD z66oG(223#hx)7z#*8|>ex_+OtF!&~N11G=IfgmL%^>)zeY&G}@ZV*%i%?9u2uOerMvC=PQb5JijQmaEJROra_8V){>} z(RHSnW#O053gi5y;p_T^(AUU&yItPZ} zfLu9(IYRFK@WPMpuD3g&jEoDe@SH%BmszhpH9j6r*!dr&`Pn|aBN78LO!V&&a~Bn* zkQ`ylArim>Uwqu{|16@qeiuYj*wEp$_TpnQUu}mkE`4@nzU{T_`!z zyZw5UV7T;s@x>$ToD3Mih{N9s!imOrIQb9@wR}lZa#N9X7-e{*O8t{3PSnjVhuFx_ zQiBknS+;$MzWc3a@UxNLhW=)zdAqdM%_J36*yHiIeC=5XY&&b-U!sH^=EttBwBM+s zVEH7tTB@9;k(*7N@cryMvVIv4$Xfxy=uY-pmUay%x0{peDNuBr8NJ9$T30VTF{+0h zJFR)drcga1(80&<bIw(;r@8f*99ZEl~-a{?;9C-cvZX-VBHskk< zesK|ukMrTDL~Qlrv|HC}wAJ|0dogelm`=&d) z)9UviU$^imoOzKAtXJz=^6D<-zCf43Ax+%|J6pdESJPliz{phj10pG&jXU56yfWe2Tm6UG)C}SHsB3 zg|hy*J);U?JP!q-f?l(IZbv;kEiKZeq9h&`Ip4zEs-}((1_~l>^mXDvaBwh#MJXsB zgAC^nB}7aR_92N_dwM<h*?U5#(|*rg_CAt|1b`ccQ}tSz8onDq@#fKjzL z8^DYbtss$qW^**Ivjqcl_!7ayyl>ex?&epWv2i5iQ(d~k8K>|$a$WVRG$}74nPY0S^ZZx;;K3}wC3v=S-|p5|zj`y_IVX6e z_f+9^GhH>2?dtRR`zo9c8Z!(GJKn1`(uR?!bFuXv%;|Jv#mp$AC$Ko=N^lp zS#=PJTJ6^D}7CWB1=Kg3;r$ z^}jG29FY6vpjy17)tha&nIG*3Uf65)Zx29Tk=aO<@>kjFr%%0R2~ zXZp5|a#G*T`vR0s_@J8BqL2z>cK536XYC{z42TkV(5 zm$I5iX}=}l7^`V`{SP$a|HEwKtl8ldiq%807C>A0B$y>}KYSM=fO&6(MJte+E7)7M z7s;8|H{$Jbs`o z!h|}lDgI$|6AIIQOBF8my6l89ihqQ}ZGXDsg&gf%>lxJk5CR=qM?~xZ`8L(|DX|up zNZ`Wzhz<@7@Vs#uS$`lvV3VSp3=>b@UwmQ9JB^VkNZShgwgR6|o)^w=fIqA1o@sB> zU_$*}S=NWCfFlVhv_Z%p^rH`XEd9KXBz#QmNa-5WxDkE@gda}PS%d{F=OpSH=4nm~ z2}*dHhZNwh04uil|4LtZ^4LDGlzkYD8u+cAU7n(P^lA#NlN?G9FCVt|OUEokmRh!D zq^lXM3M{C-E)z^R^aHIH3=JCgbaQ6PG52ZX@utkn_Eg_DBN50mw=;O@>hg2b=*E65 z2YAbhqD7vRt;S60U#y^(BB8z_+EG+V5s_)9NeCH#1fm6aG;VW`AuP=IF!ip;{;Q^q z<-zpOlZN)@F8AcD;jjmKuHDy{p|xkN4^Xo*o>=yEOP|Ie87@y9Q&Vz(hCx<)6|Tj7 zxdGNV4z~yk<8R_e52ypPd+g{tx3FXM59{);-IS&OM~Hj$wpH{?_&Zxm@t z8cs=G>AZGs$lP#)iu=Z|%UAfRPSVPN(W^XD@s|^r4ah;E8oYQ3KeknOL9UFKwXuzb z2%pm{J8?TC3+NY*LpCPJeouQ-|M0to&!8;>_=Fp##BWQT-#0dn@MySH__%x^PS{Kd zWA*>>V!)9f`aw@?gthVxU!&~}etb;7i(i4%M>98yJrz*b3{sTj^1ZXM z-paA9GSYXS3760B$&{}9EX9-rhicNpNMbkn$jYE$q1IpHr;wk%w?@S(XL?x3d^x<@ z0L-r&SYNBRx$u}xMMNB-Z^xp3 zA}+WcTi=8;D=uKK=--o-3n8kFfw;-C0m`fb%*WjAzI|*PfBMe1@K)y zZS!RTN-N7qSAP^2BV3T!;mEdii3j>^MWsBON0NxmG_Jzf@p?9l&1JuM6=%*<{+^@c zVKQuQCF0MQ5T&e2(Fn+N=Vvgx*14@vtBoxc9i%-GmpnTpHm!74y9TF_3H=+h9cWl) z=(Eo@XLIy*xlT|14MX{ofK8-2&}4zziIVTOsttE_P+U*)aa@5^DQzgtamvIMpJ0j8 zsbOQKPZdo=J#&gl?}zsZQ&$RSnv{wd#{O?r#BGM}0?u?#=R0)tm>O2qEkCJkHsAIs z!h!Z;!GOIchyopg_~^dI#)We-Nkyt}I($qALk63o0E4p?3m2RG=ZNSVApUDAp1V(A zO$_qvMCo9!6wi%pU%#t{Zy7#k`p7g*USV1cB>OPOIntXiiW z*0hlP01q`Y;T{z_p23)(s0RZfY8BY`T-lLJGNk_@W*}G99*CyyHAt{e7a#DgeR-0% z>#&HRjN zhdYx{vfs}~k6v#Mtld{#Pvv|!U#!$u&rKfYYp$=t)!YsxA}3e&wMn%R(qy>-j2qv=IQ{E!Z>KAhbe=V}osf8M8yG4A8oJl8c zvBSS(iwzFu^EFNB$w|?Ck-XO_tmTjYg_$JOH0OJmYDi^Z@T5yoTm4)wK95w8L^w7r zVtrr;aezu4JS_Ka0+~9|9G^F$Yq%+Q6#VTNKSrmOsF6VT24b&j+t|A7T}_NuLOl3z zcE_rq@7&aP&1WaN?oOqbi9OAx7YyJXz8CD z)Ut?6O$C}7*@^b(-I>1MPO9tq-u&!AX?R4c zo_w>FIVyX@5N7@#VZ*n{x2bjVF&;C|j@{)JLgDtU=%@gOD2Beqx7&c!Jwu&fx1!7; zW}|H|q=fqIEtf*hv%FQfJ}5*k?(mmaD5KU}p}QCl#tDD;woJ##j_0`0v!SG^`sQOI z=2VC56PW}S_4{8D9b>a&P}W?hjpLdkz{ATiRkAUCR_td3Uj2ss+T@Q?ZDe_Oo+9eT#2Fq9> z#m~7!f2JY6N=UbSXvUhdU{7q{b(}aKZiLq=7eEI>bR>jJ2EeSFYj~ z$^9w(9O@ByRa#n7?~_DljM;zcAz`Jz1+*8WVXFs}772gQsl1y_mI9-W4tx{kRvu<> z88Gk!;cF?*4Bf0)RtPIJF_ce8dZ1q@kyVw6xopPl&`^a{qSG?=m^g4d%394G?lsk- zCu__&eCMS7YsdJCQ)9Pzoj%DaPTc51TB6I;9HCv%aip0Ew~mFM_ZA=YjkdXx0bznv z{apH4cRTYR&eHP>H!NRLOkk=|rGYf!`rD-SN`lx!>dyn8uM;$MeMVzK>T?6P<`jLb zliBQQiM41;Q)MCH9s0HsYU3yAg;x6{Z7jl8*dUdVY~JjJaY9lv7-NKlkdR5FA5gCR69rO{Q(UL|fM5eh=i+1WpQ)-^J zN&lB~vb%2(+KoHM?m*^@aXRLgPtwhw>nCPxI&1FyhQKrnQRo)MIaizQblD--unh(G z8z|t01eMX<`PJXP%kIml!hOlYi0mYH&hu}!qA8nFJwurofu4=%7-5sln#TMGX76}tDb z_y*JLR|u9(Ru#mi5c%b`siSGLH2>RLP-R~9?VgQ!A0 z7o`uZZ{#`iE4O$F7;#$bRy)DyXQim^A`*s8u6HzMdzD(WXQGpnZ*M##4RZt~I^?8} ztDuBCH9;Q9eXbomp+03!3&mp*OBgax;N&U%kSk&0k8XL{7>%IPVtLLs7_e@XM{RHcr|t)7NA@Iiw`;*LgUu~+;g^M&C~dh@*? z*8NtCP=tg=CerH8Z|kImZO&ve@=El_XTH=uC$eSna5k0l(gO5U{2=PfmNHh$@z{7x zh`S+*VWj zoLZm70x|9scy9*`Qs$kOPsJDB?-<651Y9}(0#P|wGVc$p$(&HVXIv0=2_*I0x2MUH z%K3(i;UjT?$HNQSov)&|o)x#|0k6wsgO<8EX=brVdV}w=j33({bI-^lM~?!B9@_64 zq}Q(;tdjGvmj;}Z`Nk1)ig^@Ln=F&%z6uM2(Rax#IUcQ@|IK|Wo|Vl>Q~zKSwS{q} z#>Rf!H^nDOO=K$37o}Ry{aY0+26uH2s*j@9u~K#jES!8g!r>rI+P+Hj(^ba~VGRB; zESqu3>CrxAn-UrPB@n)Ty^rb7Pzv`+@{jnpc+k|jWC|n4(CQNhVdWO517;6+t8Ba9 zhVSE76AVm+8oy8I+LmOI7(OC?@8iD1DZBmVoJC(|C3J;$b#Zi6J+jA-YYxQ){r)(+ z_4W!KfZLz~(~*{U`LEzQsktM=CHJg`ncpct9qe*ey$Q>SyXTb|SIio%!$K*WCWfux zb3c+amgg${Yrv10LPz-UCYncSo>iCr*g>B#p{+#nj}a%~?{gExcdNgDa*AmUb!i=R z$_oCaiIpb}`!iEYBhOrm2uUyBiv9IH9^t&`VEtLU>5q&BfJ#3+b7Ed081HUO0zML)XgsIDlFO6+TFXWKm@74un@adC0W zPET!TX#9*zk^iJ698RK5Wa?Upe9;eQD1%0(Kvb^AcceNK{c(jvA}hl! zHDpF~yk7i}3F20{KdTW=f`?w3QYEc-uIWwx>fXC|nuC^DVZ*^YV586%OYA&{ zLoVjo(CA5u_OF!RcWV3|y7bHD213(3kGCmjZIr+G;%in ztuJf{eK@y7OIGtGkS>}oR#r&F^?3O{E1Lb#^bPrScw^#QZoa7V%x75Y@^{gS>W zXFY$1N(ix{bXUpY=0>%tlSrm?+|E}q2i+*+M5W} zHf}PuKA6-Q_+avrt6mM^{{65LHQaXQ#zU&1b3NL|b|O@fUmmp->N9nC3P;KGIystJ zZDmeIMv|sXG$$m<=QWG1BH6SnWbL0;2fXRmtopItiD)_|#nNtEY>|$c_ZVmx$xzFc znATo&*s5nb+VsWYCO@Bcy}_BFk5dPz3_g4RXZ`1$vIl0UY1kJ9cfnwiw1$w_W=TKw zbtwy3ry}pLK-l{?q0)@qe8shSB;Up65ls!_uL?_~#0bL%Q@vfsr*J1MmD2heW{NKZ zJfg1t<#P({KFKPeZ3#T2Dk(&GLuIj+3>`JhgpctKyhJ=RHZI+|o^JI4!P-@zs4Dlr zWNS4k1dWojdX$YLl<*@(@H6Dm1?ud;vlm#t!x+(4-A^7 zB(m?t8%ej>@!A+N!Xns5N9{1fJj^EAI5F~4m4i%`4g_n5@ME;_KUSTvyQ$ch z`=g8|_sblF&Rqznp4eCV z>?>Bmp%2Mc#!>8Lf}v;G8El~ z+)mu`Tc}kj^h5ajd@bYyL_osgt)aJgR}c=->}p<0O2))EGZRql_YlNuZ6}NMH086f zK<0|d^6Cl-=M6G{^0$>fo!ujs@Cr3*&PFlwdMP1%M<>`Q8;|+ol7NAGAgD&3)`YAc z9Bed6@jn2YKxDtrp;$?1I499I*T%3qXnB9BO};@x)bVz}DLS=8RXv9p1vpj%dh$9F zr-bhGo@`}1t(BxmuGqU7f6ZfMOqr|VbJThnGBY>tJg5V!>h1FjEVj?{_cS*G&FaHi zMJ8UTISjR5qq>Jhf_bc4&S52oRbS^8R1PcVq+)tf|H}IOQ&y`qJ*k*J?9lCZ0P|l< zg!zojyY&r&LqcOl3SKUBq_mXVc40XY^)0kA)lm!Jl}zaFPB~e6e=t>MA$d%Qi`Y3Q zcOGOr!-IU>HP&WflfkW8v==Lhas9jWF4Qp7Kyo^5E}NZmR58S1P&{DsgaxNP#0iOc zGG~MYv-4J_>7=NdU@UNfnM_@mxNN`(67)wt-$xH6#hFtBP)KR0jE@C*75Vjq6nqq6 z{`vFY{r+EEz0Jyff7srCRUg*muyP*ug_sw0o8eK_lVW->{+thA5a#K=VB`d*M6Vu> zJdy@cHDh5@8&q~mCZa8+XtX>dCSetzqvn&M)!yE`AhSz=g&vL9O!TxXtsI!F+21%s0OP^CE|B zXdDul_mQKo(^TSn-f2M3nYs4T!)H8XjIok>2Q*-he@wID3=$hvU1Sm$XBL%rl#Dku zD>?F{mBv6~Cph>hhh+{Kj#`WM;)y4*Zs}-U6l0mQ08hN#vBKjGCg*zI_rc+7bi=b2 znep_~RAc5ibVV6weu3^9wy4r9c;zA-Q+rf3nMGcZXJAs=;@?N( zVSb5ue{sj@!}fgkyhqQ&cH22@r^;bteGlT~u(#j-ySM*G+@6#Z=e1{PkdqKcxXYUU zVJ23OV32nl2}mt~^+rEa0#J8J1#o8GXjz!*6q4dRb7-97eIm=(QI}cBUW2&0nKnvL z1CKbubzK#VHG$z48K%Ff;qAs-RuAMQzKE$Df6i+InI$3&j7Tf33+ieRX7f6QjC(QC z_&NP5E^&9v3IL^wnZSE4EDKt`h~#_`>+SjnslX23n#Y&Gx0aUiQ+&Wzgmd5XFMj_o z{}PSPrWP0fnxVv?Dtx{n=F}Klmn;Ay~>~a{NC9Pq4Fcs&iCQ1EP zf8BdECIeWCnc)jHLSZiSB~B8%1=u1gEJfv}9BRLCbT&4bb(HYRG%Px6SxnQsk}GaE zy9t~zC3lF)acj5D@xp9RpX%wWM0nmXYBglKXbmDUGGl~fa|^sn>)Z~A8aeV{qo1Ur z4a=IzxQTK8MH(={-wIC$o(omIp~u3Ke_SUeG-eX>MgO?+Y+zr4*}$&XpA8gz{+7Ue zLT+>VbiJI1orXB?%;Hh34n|P2NSxdjdWA8_%WtV*j@PRhRWp~W1HL2ECHF<`xa(}h zb6rN`ZtQiosfMGmc_=rjGj|HJKETomI6ca^wL!j9m2_FoPSpqlDoZwvzKd(Xe|VNk zPbh7awUH(MsZow`*}#Iu!0|>v&+$z}a9%XwT~!?=Zc!&jKM1c}umiigQU-Pk^$W|7 zQCIow`4^DGzDAs1A%}eyS8o%~)9G>Z8-usrS{d^VjrWH~#(-=G1OlTZVx&*~62lV4 zQ6=jQMSW5OjGtk>0q5j!G5M$nWYk}(~x zJo5rLQC7OZ_|!?9L{x!pk>_z#?xP%y7ZM4ac*m!DouL^E=7Ai8;}$D^T$hMgLZ?%L zA8K@E2wg^|p?=oVvK3=hq+Qh4Ah4J4w}SAi&2Ka9}~Bu0GO8(<8ETIW|YFNe3$!!nKKfdb%wZI|7zo>p(d4- z9+Jsj@FN|fxc8kncb{4FBzBrLVu-ZKi%BY}?l`(=!*l`*j?WU=*YLq`ezM>fP`y-L z8s%nve1e<_XeTNTxIcvHJ^V{J3i%9B)7`NIiX$zBo&ixSh3G$-$aXj_A>} zoSb7~ugr7yi1AISY^PEr!~m}giE~cw8H`wh0d6Ma=pM;Hf5~*6baF}v=h;Cbo*&V7 zji~#uMy2=-i}YX-T~3Uee0I(%*Q@;06mV>{z#=Q=m^+BB{46P`%h*oEc?1YLl3J4jckU^Q*)f_VZcy;wlxLAe2HGH!+_oq79r1ey$G0SlI49( z)X3REV@+`AK|KB{N*!d+6H>MkUr0=D}2`58P=ZD&IbDB zCK;hKMS+^+k*vGAL^%kh6=pC>r!7uVl&2x8$hjnZe-9FB%wDk%`^?T^iY+Wh2BQ%gh|;>g-W9s0M`=C%15;mpJ;Khk8M;5n1gXGBqVr&*xtHmr=ZAgec6 zt9&VL)BE|Cz45$0UP*fpGY>m>^Ud$P^;Ze`d`3oXeZ#=;ut#7%%tgP7kn7Hr(~~0h z&Mjp)A>p5rnG6s9E9^W~0!Xr;iEs&lB@!^Ee*uVCve&SOQdN!JcGciR{d`87BDphs z6lV%)&e)c!tadI=g;VVp)7YMMO5gLm=|At3&3VHsLiKih%v!1gdYBYgC$saiWaK2a zMo2?}T4Gp-bPV#U)`W>I;F)?)yhKSaUtC^Zdd#>@@vG0nI(^ue@FgZbPdTi_{I|cJ zf3OcLHD)6t*oP&FFV=AUdU*$*zs5p6*SZ+chE2&`**w~YFhsVgfWu#IDPbaJl_Xtn z8bc8?Tg|JNWOf>1Bcc}lo^$sOSo1_|3d0#bBJVreLExwvb<|xTUg3a{u&rh1i(Ie5 zZBFqc$KI^nMb(l3n~*R)7?oD2bUCZZf4RQE^iNGehJUImrH`p@qn=BUt0%I0xhRX4 zD#(k9rKnblKCGSn}O?n9lSe_cy)+@Vq1)K>wXFPfoZyHcmmS-MB(Nz^P|qB>#x zQVg#;a-lE3HRyUEpX1;PMxLJ%ENKB5ueY1K04uhelKvcz@Qbm1TdVoS6g4`+FXA~; zF`R-t9t{Hgf;j~UY{I$fYGFLrcZUVmx6)PpCHSJ4k}`Umm(W%A#>2ehf8Dq8-oO~l z58U{{cYe4M=I@F)FEwWNwi;>@naVk{u%kLIHMc}@KNhV zK#f|pX~z?lbDT6RgF9xXsw^CtwVmNMWLxcwn(C*2Ykb4Okk%*us#Tws4g&ugP4c7tqU^hy9*5S z`WB$#JbZCUl;^+1IR83)-tI}g@@$}r^FK($=MA?(U8StLpf*6yE-C#CcdO${FynW` z>ngT~7zuGLfepzfiKV!kd1qsBYc`xJkJBjag^3zlb=Sg?eVpf*f2T!DOhCKHweI+J zt?6Q-tU1@wh}xi}QsCZ4bNnktl)l7!uZqUA3&>}Qn7_?5F5(%Mcz6DKV@S}wNe`77J(fS;wH(*~>m|s{{ z3LJ>=g4;Yr!Oib2%;(uN;0bD#YFB2L*_HX+*_GKIKZmvSHju;KSPAnf3iFV|`pqOY ziXmw|jcthMsC=y&yXEK=ja@)s`mOA|#9`o0{5OKhsOIzBXVP?tsCvWHGP90&l4kVW zWLBrHrop6be+PIO+^SN>_+8M{Dz*OcN3hBaGqSdF(na2NHF^LdNOVRPtZ5E98Wg%s z30*UMsHk&;o zgObmGEfKfL%)HysFf=kcA(cGE+n^^F(!Y!X`5%#;!^?x|WW(rC6;nFCT)j!^g)@7HkZYsF=i- zi&{&mf5e$c;2%F(q)$;xtoeNEtNPFPxVp;M^PeBQ@x}@{tcddsjdIV3Un}I9w+5xL zs__(Z<2-k6jIfP(p$H$ii`RZex}jSe5o!Q`n^CdQ@yTe}ZIYriyiSYr>RkBh3Ms$AToA*Hir? z4D$9A71zU{=6Q+hB&k-pppw}|rmi$+WYH!w3sjRg#2!-s=}V0Id8a=A(mCuGukCMR z>NfvV#Q8*+mpv&F=K}#gRq9TXG7}_P7G}Cma=!-OdCiBcjX4tQ`#WYD&fuPEq3U5h zf5JIVj2h>S**UIqvD{r^`k_{NkfAY5H5u-DG;389RefgOX-h5Gy(eoo6Rq=LOSBhQ zgUM3q$4>Um8!`Mc-9)U~qYUg+hg2yi26JkaGR?4-?(25yqCzjbQoIQQ7(+VM=NGk3 z9v@2>=aJ7y8c!+hqNr6q6I$W~_4%blf3?b<_}+cwOZ+_X%t)+9>wt{&D{&j)Z!LiFGo(=oz_xpDN@VYE9}IQYMQ6EEUaVdoJ^g?7!kXVn7SoP5OjDq#3GtMqlD+LHe91D&ZAIOL`9`*mT z_uk)CU0Js9Pv7{)`1-XYcD1Wtf2H@Ty1Ki{8Iyy_h@6o?AR$B+IZNaWCPy0wY;w*Z z1QJo8fWUxllG4pd65#6h2YmaSz4zL4?{n@2T;wN@fx%`+B)>e~r2$d{1_f90emUR3gQHdUJ;g^`Bg@qq4lfG4R}hj3f4T%*%UTQ! z@|~)%fX|!_*ITY?LJ)E-gxtyJwfRBlE>Vk?CbPu(9-nl0pX7|;P?hD$D*va(s~zWc zKwfLV!f6&<$!l1Xd+@xwGJn`SEMb+*=i9uU0H3$x{B;rMA8Nc`&D)72_COQmKxZ}* z9;eScX$Fvc3lI|LKAaP;e?}9Q)KgIk74_T8D;mie@-B$oT$MnT2WqTW7$)&AG zm2lg&Qyh%00x@J%Sq(E09$My$vlU7pod%i&V6J?UXke&ue^;do6jZ@#C#4CjvUJ*9 zqkc;FVZTA1#1&4}j+r}&w+lTDDpZkdK+uZDE&#XZg{^`gWtl0vvsff1tR#h%5mO%vfxPg(~VM>5J#8^?d0)gPZB+b9M}-zKnz?R zAT>*l2x+2rYQw2m#zCUH-2D`JtV*rzz`hS^e<{3OoumF~k8G!c`N_|T8&fUe6yU%F zr0#)F_LTw#qXzR3g44-$sUanwp%Bd-o*X-fXpD~(e-EsTJ)#aIlEcz?+w*Oouc>+b z_=%}|@a)`!1T!N%pO^T&tIu2c{Pva~w0SFm&mTT|jA~e-lNnu9>@K00n94d_`M@~b zVOe`s zG!DFY2E)5l0@2J5R}&BQ%tDc$iR@9#(1R zHkQwSckcm>CaJm6$|^)=l+J)I=W8s^$l+O>4@KhO^Itym ze>^Pi0l)b48dl)*dOlyj&0F#E`FTs0T5-PQ`d#Mpa%4&I%F0byJQvvw%7R#GgiLs; zgNJ&mhK!!B?yjw#!6h9oTb5+=i->9uh(9kE__|QvNmxT$^HEJQ1x^t&wUt9ga=xt( zrSK%A@5QkZRcKUei4f`lYb*trjndSjf0TN*rWH&WyEwri>jWzCeq(A?)0mP|R1&)6 zYy{!V#)Jsb&wS=}5g$iS09#+YHzNonL?%n%N#Ylr% z<1ANk2P-U{Q35hzgRq2OoD!^j{+fpV6lb7HE^U;-wMD zo?dcj_>E&DzCJ$u>*K?|KAw5=f9TMgM~B=zntt<0+RY<_ZyX+UFHkr=CC$>)FHz1u&%_wEZ#8ok)6 z<;xx0ztXMCt3A5?NcM_m-Cyn3=cSJAU45S8HkQvsQr89~)Zl2P3tF?v**9Z)P9AJ4Hv*h}>~@OATvzANiPtdN+>Q@}o9BfA_&dF&qkdzq&}Z$B?{m-9U;-h!Dikw|%MX zLT+7j$q*p+8Ym*}cHw_?1oyN9BAkN<62lxcxMar%Aw<>g@gcp|P8<9p4%_Z$ zBSFhl112qBJP3%fQ*uQ-Q<*(sO&JBH(|*-U5)dMHe`CMxlRh4$g>&-fWf%{JZB|$` z5LSVjhi+~%jE6<`V*RQ}C=z8Bj95QqJzCyweaRg@!aUxRC4N#>ZO3^xpRXtFwSg%= z>anZO&tE1uX5Za=V5oIr<5Er4X=*Ul#7nGD2!;o-$8ue*OI;c=pV6{txTdH*iW#^H z<1&FEf07At$Z^O5n@UdB3UXAG&r|)Vx~P7VVOP{#wQj>#t;@(5LK)gfwGI!`Jhd+n zM6#C3#)Ba_)`9&{(9I@qSC0xUCnh9!Z@Qr56@h7teWgGG6V$H}x{gE|BcnP`Y=RNt z^Zas%)z*>EyT|!~DYntUk9F+o^A>J%`XJa?MAT0k#uiUbU8B!!^%;NMVm|C~zlof%MfchqdyED-wAI)t2bW z#l;+kWIbMq*p?-JK1zxyUX3gbH0;rwEL}k& ze+$BTHb{3C`%c7yevRr${oXydNf8-{b?_q|yT^GOx8eD`x#z1=8&d*iuiCg5kJcsS zII1XID?KGCnOo)YI#VDd571J0LI^2EsgODw#B!m=Xth^s{bQ<+g{>hYQ|a-VX%*LU z1e_d%lC-9hK~o1vTx9QFNl>h|*Xk*Ce*#557qu!?vR;_`!0@gzCF+(cZw&bWS0UG> zy$Qq_5F^`m&O`YUf-w9b2)Q~B>>Qj4$O!KjzeH5KBIa9CAGIRRZ%Gj6lOZPmSjX=9 z{1R&hyu|YP2N-xwY9cgx9x6(h$7rECx3p8w-Pn0#Y!Il>80H?GbL&A&&!El%e{02G zrL(qBSzV?2GIiG?sxGLm?FxZ^(IA|gI(Ty6&I@dFhXS7J-EhBBqG6mQp!a&P!qe`nCln5#`M&TKh3-e)j$)L5P zT#~7Gs$Y+U#>-xkYMzpA0H!EjqW<~}yj?GZ1EM{Ic~~Zh2s;ETs%XyEoAsq_S)A%BpS7G8-Z2EsbOD(dh^FSj_30{pa1UOeKq({ zNn6IWF(rZ%sVRfAs1H?p$fM1Kx>-4{U+3&Bp0tpbi>_aaz$1lUnIxNMQf`d$l2zIQ zYcCPn$uqgnduXr@kaOzGf8&yOB5Q#vZ^)Q1g^^N$xASbr7gVqhYGuF*ryv%#n8T1y z^7Mug5;)SZXF6>7U?KvzXz!`<-us|;IoFLD0qBfWli5CWur4&G8>iIV$@J(%|~T4ADPi?EH;Vv)Zp@Ea_8INRkys9e*k|u^&qL zj{k#I=yY=_2ZKtp3knj zGRsrQEXQ{>$6qwNswlgvaB9`X$(0u-R$iD;d0~7-!MKWou@wbl%JWB;=Z`GUA5ng8 zc=_4P^1O_Pc|#uNr9U_`_(ATV2f3*aatGc&opS$F^8Hi&@1N{@?_{5QCwkvK-m_@` zfW|#qywtv}e`_Ds)-gL~;q&(&R93qK@(5ibEN|>;S2ENvUO{PwfwY?(#cI?h^5dW= zxf6FJQi&wJQ}rYI8Zsoh7|Jk+egKcf2b!gRTn$WYMnXI^-58yk2;-$8nnJ=cY5-V5 zklTkj_|LBzzl^{_PQMO0e?rMAPv9O)X}KNJt?UKTbt^^Z zXuNdwKv=`)?Jr}@;kmIVt%(r}tF+?$!Yxmm0e9WG;I?Pv+4o6>@><d#&P*J z%a-wc{_g$z6;&?yp|SSb(67d4Ds{07r`{K;;h{>5T3{+cJQeMcF~|upO5o0GY}qzf z@0sDCx} zHP#*pWYWgik$K-Rk}&Ao7e;Ee^!MQu>E@^mq2YC=CPMjckY(rb`S*EoB}v` ztd1zcahU(0V!zl2yyV1W#;<@!K|;VVuDm@Qp%h(4dyZ1toz}1j@(QB2V>>^S8Bc`5 zJhyrBq`KOp;(UU6*g_Y58>iL>YP5=dQu^LNrS*{~d_K_(ILqftrO#_3Fdl;jf62$L zNtIoRBLT%%X&K2SN-~%OaTmN1`<2=x<} z%oi|(GMoy%l6VuubxR(<);3al0s@&4FbgtjOm+(DEbYMe+Wf6bYm;D3ZGxFCDCkP4a^3L8F0t0%*eCs%9L?F zd{$_E+&I{?Y3D}qX9Jg!&$~?6+2ljDv=>H!kSAksAdN91UUeF3b+}>xmAii12DUkH>S56tXiQbV|rAe^61XyOWc9 zW!{1`0BrI5U>uJyMvCfwJvs5~q+fZyN=rnD4n+cbgqLZL2=an9hEA^M`PiHyhvz=e ze$e7oia7raHLUACsf7CTd%BSHr@q9k) z=JO$`OU!(}aZgAafpNd`PTOvD4A$AlGC5=vCO9nk$EBy)A{>b&u! zmeSh~ayFjk|| zsUcyl+WNYr45;sFTpG1U##pW)$%nY}&bjYHYe;zwx=|T zfivTUxhJ9@s3m1OL&kj~ad2_&iC+Kww9OCByAe zb_r=P#;lWMAOr<;6VT?E0@9iN4q)GJV><$np=l8ue-eRd5opCyTQ|757^Wx{)(_l^}nFttF(g;}jK2ArVQ;C~S@G!zgWs zk{4BKfBGYUSv{sbn9r!;DNV3f@yBSCgKh_YDX#=mR{EBo zf0X>mkj(ipQ*y`WsfNAygZ6-5G)pbty>^Mucr9q4A|^Ko;VWrywD=H7#HXX>s7 z^s30~R5GJ>9!VI)NvAQCP6^vL+ONpHsWOT5+PH_-!x93&-YRq5lH9~0ywMGlSL@(? za+oMUsRhn)C}j+tTH|$8qa2@<{Zmcaf6k*Xnj{$+F|`K~+fW9ROvn(SlmxTjjJAQL z=m9@0i_M4%=Fmb_dApJ7iz+oH*afn%<=>@lR9IB6Jjr3lH3FZv^Z9>d4SONcZk;gn zVaxV+Yuquu&)adn*!FqFmQjp%6>lrFFYV;Sr;-X>cnv8!$im1PmUQqa>eAJLe@shU zA8e#0T>FR|SX+B7Wlq(GcO8?VB{CjxeyLw1B6GF2Zc?nbMq~!rza$_-*q|YEO2gV- z;Km@QU6r%|zaSZaq&dVucQ|Y^1T-g?1Os3ZbNn0=^^o3C<^K?bdg0ZwdR6^a<@2hl zjqz?2KVUU1`23dV!{@pF{G~V?e>2#j7Kyh*jmP=@T^o03kU+bS*RXe42@8Wxsy?M9 zcM5V5nKP<5!q#Aqq4$XV7QA;Dw}Wbsr`A+xJYGY*v>MiGz=~m?bBPSC%m7IlpI5+- z)LIRqz$pznX#z5m2JCeV++m?g0E>PORk%SaGf53trRX?zt@oG+?eq#Be?r7yOUg7R zBr}jmK++>+2TCA{Sf~bdsxb7M?7RiYlicBrG$t(5c=j2J_Ohl|nV=6FCXH6fF}rU0{0FXa{$=U&7JvT1LtH?HqSKNUtVTI-3veZFgn`z- z3Crt*0d2kyT%ATXi1a93e;s+na+Rc5c`5`7xAJ*pCxS$nnC1|pMt&n{uhjR#I5Th~&nNy^wKllqqwy$^fA?$JHM(FUv4RmZ zCpfW6%8g=5BdF|twc(mOEzf5VHt{-&N6`Rv@EAR&IGCDRLbVyL`laSlffc4FGlugk zVwmOI?n%31zoQW)e~h%bGA8 z13A}VdAd@(xEX<{I9}PYRozuu1X&698YP{lSY+Z#QB-!=e?cSCe#Za^;);}zQ`+Ov z7YE~7Ra!l-IFrE;jY=U^!0lo|T5kji@Zx!3Lh`97k>t=g34rtJ@^NT1@vD!#Js6JQ z{0QPOa86VK_~OD5mlY-aQQnhcao*#CRl3ZKB-|$zNx-)$P(3LlpTEAZOM=`6ecs@% zz#ewLTBRrZe@YcxI!}r|5n_pi%nI2a(iMHVCa_Om`>ri-B{n+@m3R%{u^LtnRMEYI zr#(fBH(~VL)$q4J&$5&Kfq}e%R;P zGotZrjD1qDH?VYHmqs1x$BXlvW5#^mZo^hfO=%q)l)WKwEd811?Z%!{0%s}|T;pQS z1{3)$(b}ccib-u8sYcSTQtDHgOn@f4C3i(QA+EjlkS+(T8{nLFNl5d10j0!r-Pi~( zp&OcPe+o(LF>EL!;Ulqv5pVIsj5c~K)|kq|5rSXzo~fq4N3vrgndg9vL>H-IW$wz% zIVYtdmJrn=Jd?MD4(!~XJ=R2IoOkv4XW9>Y*$tn+sC+)rKB==jx9Ob7=a+Dw7n)A! zhbSybQZouy@pzR?fk)q(2lGuj-fk?;_K|80f1o#h1CVM&9_S4V+6Tg0xAc!0h;CzNww|df7Fmd$T8@cfkOC^#8d@s5~iH6J`LM7Z%{EO zrJzAn!8rVO!0!ukJW3o#MVSAd`~2To!$zNBHZX*fufcLd_bX;R2*%t#JP_Wp8?jHxb^VZj$(aI z9uC#QAdeu2WaFcqoH@oRI@GbnJ3;^`#FAYZrlcrfQ;7K`!)w?_Hh+HM<~aC#LjHX8 z@(-B}qtLO<;161`5nXyqP}{e zDiU%JkbW@_2l);p_&93E)x~MKF*-TcI)7cnXG`z&pvskUNnZ2SO^~QyPQf z*h(l&CgHMB4dDQ~}C-G@)S28>2yu>mI>&63($YOHm%oe~o$;6C07+ z*jYUX>LWF^vD(_&I^x@a&&T7KIk?2eJgnl|0LRSOp%&6-MxNsHc5Y+g^AF1veOEz( z9w*pNP>kY_fzRV!RHwFBH3-7HY0mfvLh(4)eo19`T^7$Tbsz(Z+2vRKUfTa_>^znD ze9-GKpUaLg(fudjUFe-Ef9Kcuy;7+o=yQy+`hhSL44Y6SF=S{=N%9RM*m5#dB_X8| zxjip4>Es}|F7!_$l&G-Ggk);$<0!)NRM^TVg?sbTH4It3?ele_hP7t{|NdQ>k*D=x zLo%NiT;j8>O7|o+?C`$p%m}Yx4<0^TR9ed7e3iEL)HWFFQ%r+uf3LBLtV+(nau5=| z-Dtu(VH{EnGdi$%nRtADF@D7hRoRCnx-VB7K>0__=jFtcS5CH?P`u8fkt|0PR^=m0 z5$VaW7QrE@YB{Zx7bDUO$%vUvD5=7s`+o#VTBSS_a1ecs%LMhrXkOdE+co$xBAZYk z$`qDpjO#T*{aNnze_?T%@C(NVDtRB)(yO#~s5N`unURFEfhON34sP=-xlPIS>-TM+ z2ZDi@HkJzEYuWb~?NmrJC@tYX>yeRJ-~Xk_kyWcPq5ydpf#Ec5C$Vv@H>7Q~^J_c8 zd{Bfs*H|mO(RM{GX_3#17lyB4Cg!rpDirb{NGf60%dBA@4ce;XH{e=1gKaEYTjuaf&b;qw&d zc~6SwVN3UPWIq4G)3M5jO1ncY#3|>UQ(aOFQ<^G6ox`!q0E<)L68MY)LG8rB^)%ET z_3G+L`hcECc13adH4NzKD%SE2Vhmycd00$y5cN?lzYg-v*I}nV7@e$i_Av4rbYGY6qz)W9TvTlNyjU_q>hYCI`lHezSwq8m z+-c=*R<9a1@p!SBMcBT%`vVrLR@o^NjBJ~1*Zx$nU8cr<`gRW2-7)ZXswB*n8ml5Io`JZtf*7o^^?GyO?Qs(nli%ag^ ze}Cv)7eYJV(QhTYrrMCK;TWc5MS66?q(}O2K#4EuvQGL0laJQ0QiMm&ye>-Mcd9cX z*pB;uJ(4G*If4L*!()#Li)iW);ly_U6l^qbMw6Y47_;66KSzywNIH!YsG%yrQ3$Kzms9R- zW{&d&qeiBYKygLLo>XOJ)%;DH{^9yIi8NZ3&v!`R^K%w0-hc3r<@5LNSLy^v#|}Q+ z@#HnshV^>Zi}0h8i1%oF-f=G;e^2$fPpV06U5= z4={n{fVP!~^PsKgHc_kvj3giP7R=Zk4J^T~G3r?hpMUg-??iU`{8RMjf3KMOHW6b6 zT-LC0_2DB>=v zk!_#iNm7!7sxmG)jD+RAkc6Xj015~j%Wi1pjoK`)_Cm5>63~h6Vc?i4nWliQv*c82 zl3p5BNKV*XVP>o|gP&45e;Y^-4ni`6>_@6P4XGuaC#lL?#f^*tJ=hKEB$t*mBZ5(e z7X>%olX_O4PrxO<o>ZkNQve_&44*0-#xdw5mynvP-eIGM z6p(ScE{KWo^T`jrI;~6jt+5nUZa6g(a!NulyrYBpbV&gqK%(9qf9>511xXwxs5S`G zF-7SB`D!Sl2K0ytsZV5+Cb0Ba(ftwVip)=xTo_<7bf##MMx6vOHMq*jVC2Km+ByQ; zBNC$L-$i_e;yF9uIK1{t!V+;qlhesVxTJ}vE)q^Lrc1! z*Rm#H5Vkm(u@`g(jHYT#Fb5*&-Vw@7IO!3atrB>T*}!`Ze?4iSk?6_tDqsh7QD|LJ zD@pKi8RrXsNFO%QZXN0Kaq;=ZRz82Nh}EzUP&bl>ScxZ0Gk|ih zO*P-*M6$!m&*d#Zn-KRXVi+aiYMqk-%joDLr9IlLlgO+Zjg(3BL55;8-#1Ky1?7y`PC zDzF74VSxL*Gl$_<0iA&UFORjhlyOCbcy9B^O6Zx-|BxE?ir$lYUM?}u=XcpY-!dL< zvv~i3LxtChzWwf=CXPyyH43_+u|YyCy~e~V3W6b+e?!DzCm)#n+>qMF1vhvT!2v*I z&QmK&TcALy1#p4j!goMd)HWy|aL*_+rwdSGGDu4ZdT|?w?d`^POT0l)hfAXFY8Zq7 z8Bx`mi*INLv8l61ovDxf6<7Db=2e#LYL_t1FFA1V(AA<6F(-v%efshal4+6?f?iED5Az>=cQ!37 zqmq_Z+f->iQ$MWOmJW=I<9#4m18f}HO$ju0tq|}4u80!BG`@{)>;*wooMzI;R|9@n zYJ*^-4>NgP8I?vqXc;$X8Ysoopxf>neRc_^f41cv!Q|fX>>CFH~j4TF2Zts{N8Wn^z+qV|9c^uI?4WGPF1t$2U+S%p(Uz zU?Mf>m)o&%)jO^#@Mr*gkXk~z&xd69KkQni>bp6>=jA$^pq#u5IOd50jx`*JKq`?L z?MEPQp>%@6a#(kM-RFafHY1%`#}a`64}@MxlH^2p`W9Xq5h+KbUrIH$&nvg*e{hXa z$j@eeneE!iR4Xa%JJlcIv+cOd|`mpD;+$NZ3$N6@Ne18AIgO(Qe z{Rgx?98;@qEmVd15L*T>5WF40{YB6$IU$o@VitzOFO!;DyM}#K zSy}ma^>3=MWk6H!`^H7Sf)>(gM=mCEbiZAOh0T&6Jex zF6kPZG^2acF&K>6f4~2$vp46>dCu8=KlgKeuB*Y@#$XHmz*<%}tMSy4LE^X9muEi% z>!11!{AcWV3 zB+2LB&*dXx_$S_1>-&q4>^`v6w&1h$fLFoOb?C>x^C&abu$%kDKTOv(peTJnI9nlp z+rT-V-%z{pwk^AgGVp38-f-iC+J2GwtDu=3g?JaYSOs95RE7_gj+l2s*w01|m-u7~ z3oD6|?{;t|B6^J7#@1r9AnWs4_z<05Y=i5%zxser4f)k#`&BQCh5Imdc}kr(P>0pG_6!RRjfLluEj^ zga#CmD)NiWcmLX+lxhX2tqgrhWRict8hjTZlSp_7$lizPKrE5>qgJS0|-e(Yks(Krr*!9#zZ4et3J|;0IHYNP3zhNfmcy~+1 zQJT(pg0%kuSxA?PNm!n|{C5ILSR4K4ALJvl>7(NCS^pKY^;Vu*w z^9J;tYWoAoMJvtfk?)2|{V_he1%5y60NpM0VcTOixPj2#dwT}VQjgoiNi8p6z@kAY zqPR4F&h~BG^^4kPdcqmz0?)jk7_I7ji?7hAed^EtRCQ*Cm)}RK%H*wVMMd1=y8=`hI5Q+Ygr|BD4YHGUjBP@sEZk)I0I}8sm>2Bojfi&)d?ngA9NV8}E zm#fh7yHZVFRx{SoL&@kr;-A29o(DbK)4xB7JyLi0Jmg;I!o>*J3>tRLf6R1)5jGcM z4dH_4*0N-XxLwiZus&=IEh!Y(ktpke&NLAtro#hT5NPC|+%-S)VOv=R+Vea2joci5 z+t_srfGx{w*MEZ5Oa4Uxfq9|BQ+J+?%q00wLV8DrK-B_N|Gg&lqeTi>of7r~jpl#CeE78;?KtC++yJA0Gb~1NqyL^6V~w7za_M=}4~~9X(5% ztR^U8Jb^0zOgk> zaO4TV^AI5W+3)TQFYI+ejXtZ?ZnUV$1ou^td{d?%By2Ll7E9V; z8Wd;MJ=f>qx%5Wwd#T^~lJN9-Z3s3My=#ywsM7tsT&yTY;=J}}>X&v8g>?n<(Yu$4 zwX`q)26_}UX{3i%9?Fl!?_ccWZbLSaXVrRT>{tJJrWAsHqOa zP{3?Xe3atEP_Z+Gn|U%wp9O{=uG7~NZzlVDJ&<9F=i44D6r8-3`)CSdDIwsH33L)T<(u{CSGU-qsa1ge$-^OqozEXP1!MD# zs8y}MMn2WZiy~~Y$I*DQY};1@kI!8TM>UZiDkwk!o|x&8LRtF_>bLr?*7<`NEalUS>t8*61v8AAnrpFqjt!b& z_Q2!QDEakQriy^Bx0!1+7@!FoEc1xG&(}pl_g1MVX~!MVmdub(^5Cv&X7?a6O*a1g zJb6{r#XMTOIDtv_^V+v(!B29(xwg^dWVzgvu$UzK;6cj1rEvQx=KYthY7L8%XG86G zRqDtX%#v84Nm3Pgu`q6{cdWS}ABV+tHX#AqRpNSld#VXQq5bU{Zr;Nin}Vtv#}sgu zijPne3X>>WOizE11?E$2urI07Ret2t0j!J?hQ7)>`9*-S31?wB5r(*J=L26-sq~g% z$){g^DFo?C#2@q{A`^;U?|gkf&vx<0Ouw2Vyiyu|0}*|PViS@_%Da8tj}1M18o1G} z_D%Z>wipbUb@4uYT0;g(>WI!xcy%ls`B#^8c7={S<<)hF`x5u7EKk2(LD@$_!~mX=P7TaEAkgc0$nu+lMl>Fk8dmL_kl~kY4B4A zQ#p-$3rzjobW-~pA1oue#l2& zi?>rPi+9YWvo%8g@}RwpY|@erUh%UvXE${zp6OG*Vd{SU^SgCp(uO+ezp#@RAtXQ3 z2!%fA3URnUNB#cpP4v|Jt5uapsGl4+w(ZmJ-uXCN)gVfU5UIXB--`(R#%3t>Il(^GZbsN79Bnx11eRQ8wfgon#LludaPO-+} zm;7m}grc{3l%BMZ4^Y&>0NRTs!;#zyZNvBI)oB=@sOjcOU^Lts@?^&mM~TOWyhe1r z8{ZIHdSyW_{Z|g>ld;j4!hLwCup|2q>YPymFK!M`PBwPj7y8aTM#D zxNGw1sQEE^`U|Iz;Goz{n&1Ry62HugH{$MOuH$H>E#2 z4SACHEaqjdJllF0q|esl3p#_&Xr%of_92S^N$w+IY4#j@(O}Buk0OqqG9rDiVnG8-2ZBmuc5@r2e-N`0eZ3g}*ru|Ndt|Uv<0ya-Z6@7n=e+ zSi3f?=ySYkdpOB-e?4`Fhlqa6vS>ti)JCZH)a{J@jsAhV>c zVk2rU*&l5CkJ2N1pN=R}?EJptvKL;`Hm51_>gX|nV-n7dU6>$|U^*pCq~wBYl_uW1 z^r^c0N?O@F``@Y@%s!t2XCm4k&whVm42#}1h@K2n$%ZMM4sv}G1vtKL z)IXFESy+llp&Amzh%`&Oodbe(;4 zw?oUf+H6h4v^kY*o}27~EBN!0<#INw0WA4k+jHK=^mfzL4npDzg@v&G->#wI=1lVS z3a=ha%+e1l(fAAgq_~p&d0Aom3b0jD3sDL5d*^0*Q68QY9Iq7gpM{2&sw187Nx_eJ zr=hbhGsT$C(qR?sa~@#=o!=ToeG*#s7+6){?BtZLrd`x`)X2(dADtwqxRJ$_MRMv4 zTyM6A&2$QRlnPYT|CWbpvYS1-?*Xm35RPMUF3tbDr}q98leIkY=URos0$F*xFl!mY%QXo$QuShnv7_RQDzApm3a{8- zybx<{v1iI!W9@w@hYuwimiGe;S%h8-m_$KhXkLeH$LLW0G)DNpNiQy*NC0w#R=Mw} zTE`nYe@KVC2qYUpIrFxaVfu%Dw`G;V>4WbF6y z{kDud2TFY`L43vZKeX(A@VQ6s_piytRCQr5@ z6&K|F6WeCrVs*r31g&;sNTIJ5HBsX~_i@bxe#qL7VP2fgx1|U9nV#i4K#9jK{^lV> z;#GKKK)=9u;QwB#_Lr&xe6G%~;jc-MFY{PGb<=FU3l~0rB0y!8m88N^T=6oync~5} zu`O`16}P;QS+g>EK+eO5cR8M9X?E;0>}U==W&l3GVw zVY+5vmz~Z>sgzQH1J*oqx}r8Xm+frjm*%fyLJEcy*P|PgrnDd@0@gH&*Hnp-h7b1s zYyM1SL_fEZ@NO$K5zXu474y-==&{1Q=+96qdQXwTeY?*5XZ82DrDfklv3+O^QCg?d zi`DtU+0%afNasroZQIgC$PBF>Mn8|-_{&ije)M2$H`71$zbdAy zseW12*8KyR?*l)n9{jmZ&Tkm_U=@ zngZs(i@I(Mqj~%6Om8cQ{_8MrdLNzY{dmJde%dq4o;s^u{K*(Co9m3-ui+<}5xKiD zujL+4Co1E;8Kr!qi|?OHlPn&)coGh+ej!&Ki=oSb19HE^@##lLsvWovl?`Fq!1?l# z|51NZBDUA&rQ{|%v#ZHYMkd>1H_16t9cMeocAa2ePY1>U6!&5XzWvSM;^5YQxFXx; zLboqRqy3P0)F|fCPIGeLPN?x*O@7AJq|R3&3NFg1KRkR7EEKsRLfPEgss3-si@9Vk zV?Gc7VS#ySP;pcyiOvAKCc_`nAKxUhh*CG6AIq~_%To&FTVy>i9aHOTC?+s+QzUWb zX8FGJUnhv#iby-oMG}m?h&aJ6dmdgQVrbg_M=2`Mr*Tg2E>|uEZOjlAUcZgoBVq4ZZ+GuzC`q>3@COz1tIpH@ zv^N~PSzK}yJu?PM9NoKF1nphJdi>7{geqlIy#kgZR(EfZ0}uNFm^ow#8(YwQ6#O=9=D~JdIyI5dUhK&q9=|Yr(FW`N{j? zp@-4qxG29eVSiNg)St*-Wnn6LNrdad05O##^m>VUh@H)qRU*uJU6oq-jh)JISrE}p;t?435%UiJgg znbqI~k`-<>{^BB6(@D{Uu}gxO^EBN(2DK6sU-t$gI%C>@_k&^and3TN7i8xJ0PBAN z59X+1vhP-y2aI&R%A2H*h~@v8)kmQFwgOZcnmuzb5YGv%Vr8k=8X;i;$cljOW@2qs z4izVjxaI=-aA42ke8Kv`00%cub+s~)Orqfz!Pg2qE5CO&3e1$>Fu&I7e!B{ylrhPD z_4lXA-)itDwvBHtdikGz#S#LFS4cAU>Y(AZgNs8eg8f(Y|piP+*3`umQY~@KbXmL33@ggZWU~5p_};K2j*nE81_XF1a+eSuG?^ z?}|(1?_J&(E*Eow-FccX-TXLQ+&=i}QExH)mm1INL6GfJR;+B7{cE*emWF2HO?Tlk zT)90Mr=j;%)Y&Zgd2-<3#uLC+&gO+i#iin1(!fc`H``0o%bO$;fv?}l6I&EBx;k{o}uyIlg)h( zT@-tGzP~6M@Ogxvd0vHP*=e}fOM|UGTfF$@l%2k&s6I!md@A|@qYB-O+uCdjMSnxu zk12DBM*h)(7+YZ{kJ{=KA$m}W?euR}J?79D>M?KFci9wDXVDB~Rajn_P!(5g*C4D> zaANr}*8fV>H(5KY@;6W-+$QqI0Q=D@UWuR^{+P5&?~U4{@Nf5ub#pTmKqRaxlC zcdBR;tsahx0wO&g+128WgfDdDqWVr&#jl85J{0n&I$9p~5){H&?`$Uwl#&_FT?&29 z9p4M1;LB%nSm8)(M874n*Xpr|kf0#<-1wEbkfu&~yOG#=gRg%~2phzpQV>e`g_EGo z`eozQITc^i&0rbBL=7>QVM?>z;=g*@+G$6+R)}D8dSAVohT; zKy9?#@y%<9kQuAq{212d$IoEV;>XNN=yGZC`hh5g!_@^4AxQZCyzsB%k8j&)0xu#r zHjeu1gIsgU;1y;lUAkHZ1X%FI-#^p4RRGb@;`1AVJ{UE2SR79FGqn{*Hj^Sy?-kxD ze%kGbA%0Vq&ppOmk*9L3o~|JJY4KI$5fk&{M`G881#hRt>R-0!eq@)R-q*q~yrTBf zQ_4l<^;e>S505Ddo&NKNxj*)M=^>Lh0Q$}eZ~Krgk$6Ks`q$^3e-GMzSXd>gJ{Ay{~4owdmF z4H@GXEJIbBoh3lcJoSsog-$`B{X4dQGDzJ>IG96I4c8K`$T?qAFKJRS zovP0RLQFKOk>_8{1u8;0&Z?5Ug(8A%+jYhw$F;*`EZ!H~c~Q{E?=)X(@sjFbBCLM# zvs{^~nTyt08r>tUY{A7j?YsHYZwgF|)R}hv{choe-I2e${X-#0m9uzHtF)@LXqA^k^CN1eh00F76Uin`v0?V}%Dp#9GGJAKP%$NAC3 zB>oH=EYgZmTpP2)`I&f)L zP$(M9Y^Dh#bi#?uqoA|w(-xUhCg(rf{4rsk%0y@0g+8<0Kv0LW?#}%GI534G*<(yJ z%&5-$@Rm>~N)cbNu^!u0N%u9bfDpRih+=A%*r8c51*X^>l7BSuc`YRE8QFQi=a`v0 zN_7eN+1X{)^jE%p40-$6Bk6vRG95rfK!SbZCYMvMc@4<6r*t0L($%X8fDH-5kCyA#{T9ylc3l8wMoioCJr?ugk$lQY7X zs&2!ls>Z(g$$k;$qZ5IjJ0wi8N1ND_D37e<%dTR`Q>ACkjU7OW{utpq zch)jzuv_NKuUO@0>uynXKR~C`Q9l@^#dVELPY*{iID@BV+gJ9p&oj=bj#u znO`{`Yp~dGk59gAu+N~?Kj7Zp45Nu2>tH+4&90DInGBCl-lpL3+JOOo_*35vjy3)F z;=cE|Tad-Aup=>L9jbi6WPTOlStD$C8^uwf~r_V@fu%lwH}tVgD0Uc-^uPxR)t92^P%G+ zwcWJQjN#hGHV_6r%UlLzrr6aKEpSmUdtW|D7FS>W9$rmr2$?)yv6HX9xV!f-CV1cU ziEdBV;=E_9G|PssjBOo=eu2+83+$D=;Ni}F+D_#c${_tZPmXI)E_bXIa=2M$FmL%e4mA!H@rb}K{V4+AJz=K{g?o4u?0C%| zevO^)xa2rA3`CAr?vqwePb>W@BIOcbVIsLp!{jQRH29l}aASiSBf%-N*-m)m%S1f zoN$2Lq&pGTxKG6CS0_N-Ix*b&dYufx8TEzhMeN6p8%*n7y?su7n5SKxv0|Og>x#m} z?D-`6e>s0pHn4Q`F`Gdgout?CiPaXSvGeAj)$jZe?ClL4nqhBF9(p~O`2D-hSt>_}9Ae<)EGb1MUi&y=4M>2gc5sfIihA$-}dI{(2-Nqsc?Tq9*q}iO=(Skhe|V22kIH| zptQR3<9r#)-Y&VXH~40;r3KH0>};&j`j^#;yj#s{f3s2jb~j7Tgd{HC>Cvu1V_~H}QnbFcurJ`)R(}D|vCQhspQ?H?D`;+-48N(02nba4 z!VFK@Hv}}_tgQC1xg)YhdEYd7Z+CBUQdT}QZuX6t-|Q|8oen0%L7AHJJk{7{fMsSxQL)k>&gHXj`<^c{ zX4eX^nsHv>;%-&5qhGchm`)Vw=r}&(_EJa*xH%g&Xmnbr>!@RJUbH3_NndPnq?T&f z!<2)T{R6IIts2YL4H^#@YC75it}>nfbUgP$&4ZQ$At+kw=`ImiN9#yJyL0(K>+(`E zW^wWGK%jMi;jm`VUuVf=1kP43W&3zAHc^4B$! zOo@^+d!CYvmlbHv^{+)ZKG%M&W*vIJ#%`oUm*m*HL&G>gx8s{5>i{LM z-P@}9OK2OLme)^%HvijA6?!%+8$@QO>C}!;W`qCrHp;|dz9ZnO!UzO8T&lN0R7mvgnpO9&&Q6ZQTM zG#~!y3JE8x<&3()-2sVud=Kye{?thC4M~T`@mV0~z-}8yV|ml5)5l{ya>X$n|)O z0sL3vdpcW<|G_9}P2DPTOn3{cUS~_AuOAf$yRP*PX$)|KhN9`A5Sm5uz!u5Xi3d-uV6zPu$kD*bcqzS20=P<-aD_1-awPo@ z=xQaLe5Pk?&}hUa3My%XY`(s`D=GyIrMPNh>Rf4a-23@+<=SVSC#%!t_!|2NyLWLH z)bS@a-Kfb$jXFxE!N}4}feKx!#Px27@YWmqu(q2sG<0v}p;U+Z7b*ATdpsC_v(>3m zoyy~Z(wV`?qxc&eK;MOka28ewDUiE;TML;5_4IeQ$XbDTglj z+>~Jujj9i;hUMvErhD}ltgc#x4yXoDAc$Rxu=iko1apxxt)zQ@+FrVzn3zTSXoi&@ zoXd5k%C*);kXFhM?!6m7Pj?IZCYBNdk$9L{8p{UH-mL=^QbudZw)is#Vv*|`K5J^o zYwUG8I~paJxo53G$+fbaZO&+5QZo<=d*PPZ;If)@55o@_HVyi^jpc4fQ7RkslD$wd zsT;gZa5!G0jzV^sV>ffD_tIIE{zUU~j~Lfjvg%^S3sSfZSd|%gDG?id1|1SM$P>CN z?`gN&Xy9z4Y?IT$zzO+q*Ax@^ymr+T^U&vLOs=~ZeXVeOO;^>-sRK7?cB`oKDeX-~ zYnNvXbk;%RO)6@jdP2@;J3gg4de-!n8J)goUxiAMc>&!VnDsrDm^3kTd0@cuPG()# z36??i7|Z!U%$gFaT6uEWQ4s@bLJ9Lic25)m^?@1jI=^zqU0=tvdS7e2an8JbCzW5j zVOsw#59OKX?eaK&1D_U+b z)4KjK(^Z+WoU7>fFHqc22*Ppa?C{ENd8ra}aAsG@P>I=#oqp}Ey9Gn`)Nt>LnW;+- zJm~!72jb=q@FnvbO-I)HDQ8^+;Yk}NC#3=9I;yvJ<&+Zc7$Cp!w(;TzuHG41vCe8a z$Llv3ozq+Vl&9uYjL}Tv=Skt4O)-OxV3$$HvIoaW zw`U1gdefb}b3e1h45Y9L^KHqy?88FBwpJh*zmxT$964>&K||72%n4PctyioDLc%A_4M- zUn8WJha9`+l$}XvfD4V-gIm*GKA&MWXkecSX01MRnO10r_&Q;RxbQk~@Q?NSgiRT> z9}C3mtUk13Ei^bm=Dl^nG&2bEoV%>8W#xKE&wVD&`A0IQ^^{<*DCeB1)Ip26({Xyd0Hw>ln5YwTE6*O>Mt;m3ix9AT5zjDP3C{n@8 zzol=QTyws`PuB}A2CTS^!Cnzo0kt-r2VQXAql-l~W;rgyZWAvzcor_3f5QhrIFA#Z z!iTOMuJTJt-5D1R2luKSAH*Wl4H}g9awL;{ZryJTIu+^hiP8EPTO6tiHggN|hj%K_ zPP)qi!T>Vw1-GNHli^pq{iNzEDB#P8iG;Is{4?&6ts>9ly{f8V^9*oC{Rc+e^99=7`Y2b~;=p(~(8B`muD2K?27x0Cu|u;WawKjyqc~0r`BaBpcY7h% zr+@;CCYDafZ9fA!-)SlAwy5vR4AWOm8&t8DI_V4}!%|CaNLl7LW{bzPCwOT9g|~7$ zrnhrTjKZ%1uqS(tCNSjj)W5S`{4Kq7VXeyRV-_u28&znWxOvlseE5zlgReUOcQilV z%teIO8?55w4#(4D;KLTxNbI$VZ0xMpj^>caa+1Hh4SY?g{VGPDI;nm&D*K*Jl-EA^ z8abT}f-p$vcsq{h_z~HB0xXxa#UL`r*`U2^cNP|@h9mv2>&sU8yvvP^7nvX#h?DcJ zIh&suOxt1Bx8Z0fSek8iWT|@n-2qk!6qiLM;Q#PyI%%)ZrqbAg_i8qIM7i*j+pUTh zv%M6{&0z3@Uu)@c!!^6ZHH->=n05IfnDiA}T}BcnWBr_s*Pz=N;PxZ1sd!d1Gf{;5 zJ|sw)-R5%qZ>WtIygV9BpVj7K>xMDMaC?0?*yP-^#4v~G1fB{8!WXwjB@GN=#tH`o zoXq_&OI|LE-pM>HN)=^teKHaN4QN3hRU2Z;o0X<9w0yp%b4}&*=O>L~ka^1M)T0IK z&Q-KmR%I|v0};^F%RejlREFpHUI0SAqn|&I-ma@nyI=ve-iw9Q^k;FiAImWZ>w2%Z zAOwh_Z%(2l?@>M+h)Wam_|x=qNN+El-NFV6=f1F;Uos0}Ez|E1dmK}R=Ja1;G%ywH zI%W(fy*V*t@Eg7Ta&fe(VS6K6soS!u?~2SyR}v(SOa&yJdSN$LaZvGWsn;y_Ltlj; zBO^#`!TDjsNV@H{%GObUd)UG-R98cwzCyEhZoGIkw>Vj+aG{kCoB36t@eymaoR^`e zm15KEWrZvFid08c^gZ?ASB*WVu>!0w9q7-g|oK6A$4gSiAX-`0Ydi z_5PaFQA2a&nrCX|3*NL^x5*zv198yRj??3@yz6r+*ClA0lE2u?R4Qx29&v5kUhH^# zcFqnu_)FT=b=kHOeA6UD%@CUx`Co;5$>H5K=9Pa6ug#`In@0^VGxRcvx83P$B z*IhMjuI;rGM?!*76m-7*B+{&S9pYaP3}9}0h+}@bPi}>CbFtVq|;aNHaaYLVHRW#&_HML9~xqK^-G zGp;c;#m?M0Ctee=XC@BQ8&hxvXVPtuzu6_SC(nFl5^=KZe%AZ@T$VI{#-Y#W%H0Ak z;dDW=MH{tMuDB~=XV^cx&p2w?Pc~a>^wwtTc-?1R7WTh4iyMl=f^8U3$PrVpl+9L6 zA{!#G&XUkCTMyXQW8}^1fH-0%*QQn(|=XKYB6l)t+{%)jA~zLT7o7j1Q^tD$nq7L|kha*wjiX>o2Rd zLg+6YcFA6#utNfH9EphGcl0!;8MxC9%bL#S|6GZGGc}obY*Gg9|)Do{;mrG$~-#Td1tR6c$(Ncf{39 z+J~KDbQJTrc-E>=O=8xSA8|Ef#hWe;q#Mobafo_d!{)T0RiX&hE!U2vpl528H+2KD zSvGp4O6+>RwgqMutX1<9El7>9)5aPB?VLTNXBrAkg+d-;&weI7P$Kr>wVr$CWVScL zKB5ka{rA@X!;O%}@?6% zvx`=O_F5gXz%;36fR;?x-(w}>8;+@xhdxdg1K5-5o+3t&m-Y5np}ox*m61y~EQ$4A zP(ZWgEe)o;x<@aI7llHL;@kt^3n-r~sHDaAF$KOa$ETtE`LI@qotQ;QIDPl@%MkFw zzg&?1xU2}*92`SlSU{lQ z=1%!y)W~W8GnS&)es6A=~*@LY%88}V1g#;~*f82ZFRUGLLmc{xHqo=D%$o+=0sQIgg@4G}q zSiDH^&%`?&(|UU2sMr1bgQ_z{{9SL&SHB_|N$EwMTuii|#_CBppQX2<4H_M64$071 zD1&&O1v9*MW~gGg+nxo#Bn{AWG4p}#1;6LdA)Fj9xC|2)oGpFlE|N>7 z*ts}Hr2y<;^+GL{Qg5!xY=V+nnziN-o&%uA8p#=J(7YzRdA*ek9{hnB>&yA%#-659 z?(5Es5*MfF#l28cd4_gNWY|}H9`j0VYQWZBDCdk~$83jl?|0k1RzYi?W_`Ep_C0(9 z7sIN&a$&g|f2&Ou?{)U&8LV9#>Z)4vY=^ zl_c|?O9M_LzoZQ&?H4n|By2d_=PD7U0bB^1=|H!Wa*d%2`*TMdEonDgfl>!&Be*dt zROWh0B|`#tRJ~9tGozX%F|uc;wjEDl!>XK)=;%{1t<1@W1zN5|Zc44A76J~kx@kqq zq|WOT#`3IdD22^?PXoeL_|8oMt?@C7=F~?~s!&NOo2B7k!v1_x2HaFEA%t@niA95P zYsHf6kb^G4BNVhmCtbAB47gk_B){$X`x18R`FV$ykcjVUW-|CDg;UhF z#K6A?jN|i4P7(oV{B7+|8;@(L&5>K>IVNAEBqe+qvfW*rkV}6L1!SmZo@91~EK$Ab z=riU6VIkDp_`S-XK#*|<{n?dX-;q`4LuU=w+;ZMVBfd)R z!{cg%V6Q(Oov2U!~W|h*#^*Tu^Zp+L?{T3W5!zmctP;eHipXaj;vi|*uX^R#ooeb z&3fMq+>jS*l1^QLx*m^BM--JC4;f>+x<>}0DjLju{IbyL`-{_y9fA)*)wKqwcm>X) z_D)Zgn;S+UaA$qrjNiP3#55dI7;scp9tylU%!HxB6`?wviE>xB0k|I-3+}R8x4iWx zx7%!zh9+pJ99ieds3YbjYMG0++H8>*TidtZ8Otyf$&RT(I~kfZ+05(~6F$wtor>bP zF3}a}st0bF-@wiUiY3-+1MHkBqs#To?l*Hna%8URDd;SdIerjcM|RNN-l}H~H0&I8 zT~Z7TfN(m5iHQAe%SQzDjRxNPGiAFO5+$Skd*_{ovnv~6)_oxTWvRI(_ZEv42R~`b z*iB(+!3^|5|Md;~4K6`U)bpTMXt(v4aibFlJAhYIVjHE$g`pBT)m}pAEQUuYT!NH= z#O?YKjCvky(>Q564`!^ll?K+(dZbs|%M*z$r_#Ra_^$LjBg!f)kG@je!*qYFr$?j= zU!FU`bTnwOf$&ypFU+a7;AsdOKB!JJ>Gdta&|%zgTAct;gx&zRf|b@fuQy`J zEGWGo0i>jC%7dJoqlS&v>k$@Fn7vCDpuzhZ-c;73Q%Ry%YuDFxGY`+H-py-5)r#V_ zU%f#2wQLDje>h(VvnIR;2Gmy2Z)vH#U_@)nzbzqGVf)K|{Kr|ExQ-VWcQ99V?*Z$3 znu<6PIWm!sGa#CNJ!Thw{_y&0@?8_yxjmR%WWN2{#Si3xE*c|ZrA<~R|1t+&HL--*m!ub1H-jg5j+-k|*~=Ya-tHWfQtgGcij zs#%i`YagwZ9qnH^d{}=#LBmh`wr;hv-u6O$l{m>UPQrn8qj%8Y~TZpCcl+M4e5|n2PlB?nYH=L;&mH?he!|?%Q*CNVDpxh~Ge|excVS~t6YSj_k zt@rapESCE28BYbAmpHX*djgB~B_kEdF!967H$yeg=^^F+s_bR1j5z1^^~X|>@J&ZA z9_M;@>RNILkA1U+UKIUE#-Z+9G!kB*4B@q}0jwqxY4r^+bI-Cv_DfZ&nU>it1M)8e zc|dS-GjJtJ_~U2WA3|lXf$}1kuIz~ko`WHAtln0avhCG$k^Z3-K;NEvd$O;4cz=lu zklWjzJ^bF8ot(V^T630b%gg4Rowwy)R#Up67h0^&k8q4>?+!Q=0NWS{L(8CO~8cE!TJ z(n~*TAZMS=F+S4L@6riDchV){tn6-63DJ$DgUcyyfRn*Vv*QiIaTjtB)q(2x=YD`* zvXMIU#MI{4NbR~}Y7g)iFU&-Rjnsa^xh<-#Jo}`96*>L#FcISetsA*Y)5~m&Gl1SS zd3M>9KkBseb2qsPA4v4K(G9iFtPm)bBSG)R>rpWBK1A=pO#dI*YwDz=Y0&F6*w4s;x-pBBdp5Upaa-_!nd{ zr8BRMyBzL-J%XjA*a$a@);43)M@QifP8qGm3I~P#&6zZtP7Z0U)daN@v|!QpU$b7;oK}M8?E0V@11x{>=;FB|uhRfDK$Drn;hkgHN+RQ>WZxUpxkk2d zZOZ8TCe+;i;H8{+PJKr0V-8-ha^CY>**-kMd-Mp6#T`}xJ_YtRORaRGwzH!X?wv!~ z$I1t%pyr8#tQ=p|X%eW2ZCOn67+(CKQ8lJBz;0nbQLj-owmHE3be{sqb7Ew4y}EE2 ziM3h+3!h@DqYdzREaDk~yYh48_&gSR>eI8;U=v1$qqAR0mEB7G#<2u1?c`70pmc`lmY6s`=n)dw>OdaR^M1un) zvu3e8&1m^-^~{L7;?OQIK&N&WlrGfXQ9G2AjL%qcyjBbcy#BW!An9@0O%mJ|>=XVI z*;nDY31%%8@w6+uTK;!Y<*Z8P=VI;c*)_PbIW|^mVOJ4T5n$}UG?o}C>d%0aeFbm4 zw!&UVF*elso;UD(l!edkl#US2Y!O$$(I(luyjknKS^K=OV@m6*M>dxgup^`NgI0+t zh)?9<34Z=t5V530(MCDo#~X__hMgEwt+(^dxd$epuJ5aMxu|yWslG2{1Aems-%*Aw zD8mfYf++&2i9iNV*$``@3N%qHI?!#CfI^e0^bW1&_EI-Lt?UCm&lb6QavRXG8$IU8ply11SnxNHSEn%I z+`K(o!59e8c6q4CM_)*1YpWJ}H2(RaCbDDI{My_pIebw5V1Nte9_O5P9K<#vU z=FILmQfnda_V*JC%9uxn2242FYx1{Io$Q^y8f(rQQ#je%D7|1Miw`>eAGyLAH8=y7 ztQatn^r(0x|1p+Eh5sw=t;6Ezntf3SB)Gc;cOBdb2~Kc=ySuwJ1a}MW7J|ELf(9Gh zCD`B)7+f#!_w9YpJ$LVO&Y!2Be!8l=Yjst3&#HQ6)vs%Xym}~V=7|>HvrxlyaL;s? zZP(5-zRkC3U~x6Fpq{6RFO@^Aj8RwJ)n9!4>W*h&Z|>Vf6=Mz=a}I#VJRX@c7Lzg- zfu|IWrxc5?6p618hp!N0kcHXBE9&E}w_}6 z)A%up_%X7&IVFj)(!8|Mn5bg%u#lFZ|9; zvFELJ2p#;k7i*ixSM9wHlZ2a))$>v*dZ(>F-5`j!8vh4VrLUy5IQAU2mtiSmn(RyK z+2oRH#WQOC6kv^l8H!d6R~Sc4qM|Y>Wl<3Ot^*y_125Qq3Rj0`61=?#!OIIbx106n zLgF~HKlke$M7!jeI883G*d~bUZb08A>Nv;g*yL{iylvXiy<9D3d?ey)q$bKJ@7Y1mEc9x9I$yqmb7H|lT7;nu9fAl7nxaZ zz~D!==A~vH4aVk3mQ^GZlHSfre6LS$CZ}~7zqu|h2jjsCAOumNsH?*xQby%xi)2$# z(8pJ}zzDSc!$qrogO&EroKY!&lkSnhI`~r=rhwpLLL8ym^+UMrZBa@%yPMx3K%oCc) z`skw{jN1N+zP_Nk!m5Ev(U4d>WUBaHKSEJM3A2k-@x&+ z!cb(9ZnrHdOlT*`<^*-E|DwIFX@8U4#2gL;h}|pJA$=EtFgvY_R3kS@RtG2ShR540 zENq9K(Q@^7OqU44sxJ)1=NS@4^cV7ijN5DLnX~teaX8vQ(&x{I$wr+a1dblRrIm#ov{!HiAzNg9E*R zKc5V)bDWJ7Cz;&|BODu#Dkf8iF|mb0;JcNwn#bNz2A$0;>)V~M)xY`3o%Hwv=MJ;! zBAY1^Zzdye0#^;^9QveCACSu-mO{kx6C>h|Jur{J3iOc`-9Vm}eh<+im*LkKj-(_% z_J>zf+ZZK=g;i$JGw9VKBD^PNK<*_nNNuO?%*>7dEaE+~?jf?>|!yJxe zoKV&`5QLp{a;u#uVRKO!5V)D-uPcqovpM+%G{U{PARg{eeLr1XpZJY8)LwPgd{jz=)AMU72{x54MIstlS|%ThlT@2F(FAmm)*LP zV#}2d=#Dhao%@(aEspM6t==n)yhs7{VLBviO0>7)H95`WV;{+oAX^od~iPX-oTzT zB2>xi9~Hv2i5D%L<4KO@)1t?L$B)AGSQhK@rX-D?xeP?ydd2P}**5|b?pf=`JJMu+ z=t4idJfr;3SJ=~lJ_tlYNrm?BUU9mRG1bl94R-+gW2ZXGAl!nz6S^&l0eZA430Gfd zFStd!S6X+_42f5uZZ5xAxjP-bCR4625?T z;#1F3<@MR%xoTOS`wb<$>P&o1%L~}S^$8b+isC@p7TE3J%8B}3a|wVy?S zZU@s}{#pVMXL4RkdE7|*os1XM>tbQ^Zt3qD*3MsAU+{fNYKp)Z-fhITmk3VnAFI|2(G`YxKj@h`^!_xzzEXC*DOA!Nk$Q{eoOLj=Rpu) zK)f_HhkNJkBQMq8{dnp#-1%YDac9p^)<1Wr*10?eFWvhfmVC1^kMDUfpnEMe zFYRt3qEQr}hUGYG5@3mN;((%uin3IGIg};G=d2;qKxY;!J!A?m@yyyL#Rn<5X!!uw zIAU-Ro~t~;qdwKwo6J>cDAdMLUpS7E*u3PD-;HNNsE7Z+zm z2K-J{3~cF_jo<(HmUsn|_0{*poL=jzATmx zw-kLX4Pnd0BWV|=wXh62tl69HdGU2vxY2!CNwBqXT~794$?JRb(Mt@-064%l1z_U{ zZ%)U)xjplz&L5&@)v;#acg?@AidTh55HoJ(z23J7U&P_TL9FdQNvD$@>!rrI#t4Ef z$7XZE={)BFxm`CfTs;|3=ya}nf48v0+S}v30i8vi5+m-nSH=7g)-~E5-n7-np=z=Y zwRK%A$j#|jXXsvRj*#UskiBGT2`1(Po=JjGo>JjsF_7XEBU#xEU5^~Iav#6VY;0}D zXcrj`qH^R7-+5arA#)gprI*&BX=(|{Myq%Y+O_i9csfvrI-1Mb6}Q!44?@q^Nx;+) zc0u7hky>O^$>_nW&e-JKZ$~<`3*l?oWFSdl-w)f~{hbdD2s)gAuaV@d^Xs_$T@*~N zX&z296bE=drxQ8GUfuxq{fJX5Bp{pF{R6;{`fpd+XyI0aIuHH4^_iXb_2P_S@4cl^{Lu%-Zhp`GhbA*>bBIE2 z0C}pV=%UaO)a&feqwtA-l#gm7hOOr5`P9up0Dvy{=GEQG$=8=@ENM{Qr$QZb zxC`jPXxpMx=O>hFBZ%ZbN;YFM+}43X1(G)Zv!LV7*jcHy2=B8KS$nCmBV+U<4#C(x z_bnnWUX6ZBCmDtOP2z?#@RQ;8+2QPVq6m zQsWw{Um}bnum1muyBT)u#Z}T|WIAvbw~Xqq}yd}FaT{7WzP|5eNT>*ezWDOy22do zR5eYR37Y8`@02?AOct??+}jiC-*|t;626-b-pbf}1EVPK1;84w|0AU-bSYP-Fz{3n zit=StN&$^7Ef5 zW0wwGXVX$-Z1y`+=+VBa3)|G{@||vjsI+pu;D#%2K|ub9w^;OyTa5T4`TTJJd9wR zVL0w9e2pCBu<4dfla~FDu;<4?f5#BZz!*bPeJ{=E$$e5kzS8;B7VO-NLvuT%~QoZHiBx*xGOVQ2S@Yy`;nKDvy{1OhPh2djLPk*Yc1ye8Qi5<29t$WV}xp^bLrzsvA%u|nEAE2hr3u{#4 zYfqUS5ACP8Zfi>`?v|blHywhGd!FkPM~@ES_Z{|!jxFUq<0q{tMcqx>{>&ZQ78(!Z z3MYJg%^Qo80n}YjJ~}H`SN034E7c{9`hfn5hr7bc9EMJh!J3cxm!p)OdFJwY=E$lv z&1Stg$2Q!wdQr3K5wD+X{;NI4Z&!{^=Lw0~2uUW0^0SHkpXlGwNWUNs3ry+y>fO{v zCA+FW{2A_I9yre+k9oUvRH5~!=04x*(sEw8IYpdvlm@nw}2`R z$<^lc?^X>)b@=Be*MRlS%uj<-3?nkAmyzA*g!`rwG+RI||gA!r`7Q<2D?PtAx=^Lj!y=^9>dOwi0G{ca%`@z|LW2~KOdcD_$CVd2# z+Mr&8wfn1wPSOdfSi`|kdbVo_5zt^=Mn0idl}^y(WHwYAD51JHVbr+YlAZk4d5y-^F5h2P+ zPI55%o^eoylC&*R7#IX;=SU#ojrvln65~oDyCZS#@{HTI2>hlpqOLIskdqR;hfy2c zxjO3I;1%WWcXZC*DE!dVyU}ORY4vezI#M<=IVoAfw~*<4d|##~U-G?`HZH%z`s%_^ zoIfqQ$LiO&F#0bk&fA}YpMbCU$t~@}R~sCn!ggCDUS(9B^epjLC?4QjYEMJ>|_&N9~{df%M^U0c258hg@t zDACsHvW$$(jPi`K%*={HDwi3tj+JG)y<#DO(FyO@Qfr5a8)qqJzi)1i1j=fcLMGjS zh#3KI#f~EH>Sgq-@1$`oIb&09qIr}}e1_(=qPsF{$>^3K`y&AE4`Hb>V%W`AE~Nz$aoU%+)(t;hlbx0xnuT_)4NHYLdg! zK0M5`w9enPm3}KRbe!SAkC(`acnlGZP`Gl<_)MY~VQ1MGyiOMLATl9ygC|{!g+1>qyEpxQU$R=>}MmF~Rqd}$8fD|sdBC3J+xaiYC~#pQc-$J?7mJ?LVc?&y0F zy^XAm4vwNOlg)O(7;yAa_B>u3H*frqnFd}RgL2%PnhqX)4_$;b5jLo zy@l7)UTo(2zM^D}>s85s zf64#D{oi4Lf6V>gseiEp9P~R@etDFJo{VrEEt{jP&@!(q{MR-@i?4sUpROk+5U!3j z6fDWpTls%e?K{z6g&(aFaZW4Vq&qkq3CU|6II^7@;(6g;f9W!iOV zGm-SYTbtQ^0M>P%EnPQEu3xA7CUNCb!x`Axd0dN)N;!UzM`=(Ss6*-dbQLouy4avt zv(o13T&^{Yb_o>YoO=mp92nkOrL->`BySVE>%d7&*w}-<{WUc^hhe|5u+;e6IAid9 zR9aTI8RVwfyY0phwdLd;oFR72s&bml!^&l~?tDVfh_3!`JHY*7s`O&AFHl z-)RZskF+NyZMf&AA;B=3z+Lnj^T4ZDkjFP%vi~@8k|WrmV}C1HHD>NE zyb!e}1U#JfrA#k-H?+HC&*AhitYwgqeMV6F_5^d*>gRaid{99tpJ!mc`}?l6{(5JA zQJFJ;jSV=?wc3zzHo3?ybDWKLImC-Hy<1OTU{j1`5b9fNtBd3^Ea^TG1ENf+;hX^! zk0m_C8w_i2^$io3PyUe!N3ZDDPfXobbXhaNu%1J{(3bsA14HM&bMMiwihM-e4u8Z@gbI!PHxZlv{}ZwQ9bZ8dAP_hAe@0tQ3Lc(+!t%e*aZ&ug zECnwY_rJsN8;buf4!f&)3TLmh(@Dg$Mes)8$EXzD?04OW5)Q_22CEc$PRSz{rbWC* zDoo!0IQwJD_G<+3SW4HK=tHjm#FIbZXDb5k$Ze^#tOFhGLq`O9PkQB?2*0M0BVr?1 ziLV|f7~D5=pc#nN;$SeGE#?0(gtPVT25vtP%Sed<-b0@8*GZy-5#dMjgH!a-K(fnT z1E=CrkwtmZKVG^^ujm1}s9`}Oj?o^sWEI<15B;!TZ`arYXNZEF2==yJJsaO{n0#QDra+DP zv)#^mi8Lk-dwQ+g8~x{I43{$3=wao%vfoQ~7BlK89P|Za5$lcXZ4oU(u}~f*>Q)eZ z1=F+RUsj2~d=Pjkm=N(d6rcnc7~mKd=3!X~`lM(b=z{Pfe(@4!Z;T%FeCp&GSj0Mu zLW<}NzwwOt*k#xC6DEWnn{@vLhy*sU{zBnMDXtL%$rcZ;iJvukLVv~qr#$vpxtNB5 z0*Huj&fz}v^Z->Xj_k9r=)r~0=nM7kaB#P{3NcOJzO=n8J@gdr>~6Ls0iBQWp)j3q z3V*dIwtd0H!GA0*jAPvanBP44YvDl<5h9+nZ%_K4nbt{;58RJF!t9ZU?Y?>JNWv$D ztwVt0f8mXMD?{jZ6u(0L0`P!)&R^y}zKj)wgnWG2&x3*oVOw&1VYy*?e8ZQ0o~2u> zNZ_OH*%6+JtWck4_Fm%S0H$B~$aQJK0^%<`bP;LT{RGGPaN>(XFV-<)&Y#lz$l1{= z;cmV@1~kAJ1Q?`5KcyqHzqw_u?b9DLN zrk2vS{!_!SfCY^pQD6>lD1+2W6TU4(${f4gy_2lxk1`jvUk4ziGAHH0#k0l?DDhiy zs%F5b09MkLI_FxQ{>7jEOt&fMH)=K-ZkR&_23a@sgn=D^S-O(24v9mc55o2dkTGTK5^MM zI1QQ7kKX||-=a9p%_q z!M3<9Y|i-kUx06xjYcz$2DTqeAcDKz8Qj~1D&xu>o5D0Nsm}xASq#!LPu3EAu*b96 z&y@A0*-sCAC}7Pb2poaW?&dN2DvKKRrM%aLYRtZda>#pG-fxM0i%@QyYF6HG4+$HypaU@5~Cv%+u3ESg--m}(opj=gez{^ zmyXH;IwBP+y#`!zBNQ|l{-J8K7rDNZy=u_CnyPR1KQV#ZVkSnv_gOqK7 zMk`(@8Rur<7Gr>8R|e73GfB%#sl-Tm4c-seKmbm$Y&x^jj83Fqf8zA^wlUkvFX!lL zspv2~QsER~yTW!SGG|a~3xtiaQrw;l<9!ld)n^JZKlyIF`Q1H4!!e9ey9x&)nn8Gb z^2L8D)xE@1UTnHb1}S>uS9axQ@*f(d+I}pv7puy)`WGA-kAuqJSSGJsPNhpYQ#V(z z05}3QR#E2`eJaKjvcHFO4gZrJ`2F#Ifm`Ygr42CN4X*b9Rw0(*|U+u`C;Bx@p>+@Tl|B5RvP{eRi65 z*~;?P7#4^@V=+VLR-Sf3rOA9#B#Z8vERZp#xH<6WR_mbc2#X^mna@K@=tV9fR+P8u zf@|WzMi2Jcv4l3@2&K}|5ah%UGDq;>jPnOemBPrusbEneI7%wsP3VsTvAQ6Bp%X@{TkjFg$pAFFU^;D%MNkW3ztl3&5MA>QF1B34ng*m#m0aBhI?xD1@BS9=nDjBRg+_HebvfZOK$V z$=J)?hL+^jH%0grOg`f!TVzX5MwRaH>Jz3J$fZUWc=5+}50euV*Qs}=n-Gq$)my>V z-|i^0{P?cDxG(D#<-9@rInAC~w={*hy?nQ?j}k%@VV(HhiuXW|w?bC54M;oDIiNa7 zZnqlUS$u2CHegTYlSjc>i(A@-d3h@c;EB(;rc`cFd`|_xjmC74qALGD<3!DJ=X6{cX0}Bp>86Bk6NW!HysIS3a`1S>sK^LVMek=Oa zth^x7a(ptxA~UHI)jIa8wkGr@Vag>tYk6ge9$t_YT>FPRZ$eDo5=gTO@FOwMT4FmN z@SQGpqLL+ei$n`}Ej#+$Xlk`jP&(e9dJ)!Nm=%SS1#rnDhB7c>2r*a^@;f#Vmf8 z$3mRZ=AVBUPmbFN0FmEyuFd1T-ZLi;e&$uGmo$q#6B$1Ud@g(dT zOhq{FNRA#w&hcAFd5o8o73oLkM(4a z?Tzqy3fxvh(SZ#-dfg+AA}6SJX(n>OAc*S+3m>PU8j@;E3E9<|nCYmT-yycwEq}7s z`h}MJXUX4C01M|F`%{`LoZ~2;JBr>ezvWifN3fT}Hu?5}wCVTCq<52q&OEk3-A{ZN zXO?vdy=0?@^@0#%tqhCH)=#ZC+p~$RDdcoC&T37bQnOOlJ}PkyiF&DF0?q1ARnUpV zk)Bk%uwAc6-5_)`q5&GY)~qo@%_J^7{&Wd0^IDFNKzWp8X0dNnBBNfh1)~UCmXosa zQQg;cnT=*0{z<{lmTkMqJX*F#pCHxTc_(jP5!dN09_Th1 zq$kFwp+4MI_Q*c>315dPa*EvlGVX}7FlaF(bE~8({=%lg`FZuz>-Fgd2pdw2^gfT9I{w8cusyd5NFWEom#u$5c z#k(fUM#jSL8>p6Blc44TJ<9&II{Ik}%pMQjbl+}pKtpF(4((Ec&+6~bnx(lC@yTPY zW3azVqN>-Xk`_%C)k~X1) z)tGQ-XBTA_ARDWc z+EL;1u()KS`0qS~qw0#_`_xdJLd+Cp0d!)HVU5Azzc#BsJr;G|`Ip3bAfy)1oeeld ztYb4J4l{nYB{LyOsc<2wI~usA(4lGdikQhwr9EX)_|c(Awz7w2zH{u!r@qoz`Othp z`DbL{usm6WStb0fy;F7ZA4wvY7|K#Fsq&(_#D#_{4h42e!^r5&-g>y|Ly7xoCE&TA z#%{!vNPIQ&14is+^4KBmca_MF%knfgv3z%Q{%>0Bw^LK51dR<-d-V_Iu`^F`t-DEH z)cO^sdL9Pc)%409n*-qk{wRJU45uzodhbO1@#?`Y7V&crt_tm2HjQV1>DY^!hn(<=*@rAMHxbv+|_+?G2Qh z4TaGiH&7O1xs2z-rr5xpZR5jXZ^#Z#Mo?Oj;+Gy5&qB6LHir+7YHgo4+-Lz5(#&s? zpA#3Z3e9K)ute4V#FyD?g#_bSdV#B`4Yja{YU$ig{4XOcxV8_|Wosraecva99J%`0 zbw(Z7GB>F@V}t*G3ECyiG$3vmO?N7RR;)crxCsu^rD>vB7jP#u=UD~*aNxK>r}_JI z-%p?-5>pmX4Y};!nGmoK4ax(!=b1iI1(vMy8VOJ<7*oe1&6&C39%@gI$)fHi0Fe1o zTukM)r4oBcMd^u{5|>NC{c*XJW3PtCohf0*O0kjtk8b~CG86-gl~g2H|IVG!MKo8j zuAesGPh!%8Mbr0~bn}A0ILisMj%ph!-4F?mDcYZyD*}k$(AI!N9jpP1znMKLIc&ds z>o-=Xv4@oF8pO0`Sj0t#mqX5M1Waj4RoAoyX(@_OLTey4m($wdOP4q=bT$TlTf1( zlEd%J1zq1=_^}-doQ(qsGz5Fqb3zeD)Nu#`o zgZb{hU2HmvXWW(p1s=k3EKAgaZRVfjQ+hLg2LM-#&0xgE7ihh(t{ldMQu@eqR9@M-DTtOt~cJFJ(uvfHN#O8l%H9U6%IC@K#I-N1zMt=CQfPX<5Pr&^t+*&X(%?E(_VE*2sb?T* zgK&ra+-0_`bK3w!Z=y-b`$x={;qBlcDlZ=u)4U?$IY$#5^qiRdC+=nXJHKOpWPDGa zXcp+){Tvj3cPei@i^f_)*Fxwm*26_-Mv_2dBlD2_)jtHug7f$>P=R+b`3!rHdky*L zd!3_)%e$*u56Rq)V~wpE8KU}g%B#ekHgPIjS)P&Kjxu4uo=(8RCETO5YWpLrIhfIO8PX!G_C zTjx5e-bL!81lcIbC#Ow~5ezTv9>ks|hKRb2%O8}ZuMi--qQ6SI3jxb`v)-NfNWz5d z{*rW5z~}FYf}O}Nj+}l?)#4Gy%4~U>Wfu5QLsdFw?COaEmT8n8O^yOAlhFXpxsC2E z<%1kMJGpx0WbK!ydK~n=vKnml-!-Xkk>(QhYuuW&h}nX1?mFeB<`~E`=McV(mecB`#g^2Q>jFL3loJg_3q|vkb0s=v=13+-88#@h3SZ#8uHKdKhH7Q$3 z`dT8Ql}b$G;(nV>si`K2Si}-ZAIAkRs|X)L2XQ;k$Ec3WeOVC&Omf*k5|2K_$r@Ru zJC@^v&Y2s*oBN|?S?fgHKa4ECq!YCKSre*h-+`&z!lcNX#!tr%%9$(YNuusZL1gZv>r`^H73lpjU;A@{+%WxD)Ias}`7(Q4LM3t2J@@q&TG$Jp`Y zv(BAPX2@VW&hXxwRiB}>mT{3N^ct6KmX{AURV~^Celxcc)M|o1j8%#dOOpn1CCV$? z2|)Q7i6?RGd^{IksV4i7=<9TrmP zcpHH~UsrCFy_CV%9R-pmZ_$sJjRzrYP^{CM#n8HwZUz}u2QXgB zOBhHtP~oP@LQI&Em_nODO09;zH6-#36G66NH;kRv!N&T%UZvD1!Wz@|@H{%@p5q0J zRI!nhi!8@u*Ek^mOk_?w2dbLSCL@nP&CxJD!EgSszx5Qp!^piGHQ!rKJ3_2oIeOX- zJ7=_9)cFhTd%!8BAKI!*-kHLV8{nA2^Kisbe)feg9Hw&g*fM_hzMIC=CM`&U?*aB27Z(heA`60g9 za*UH6ncV3)ay@aYQ2P%9<(0#eOL2ylr{+giJd|@LxTy#5iiR7l!GIO>O~1KYTbj0! zdOeJ!i)ZJ^k8;hCWn~&93hHNP`evq?y?3?;^6?_gr;jz$5W{ZExXO(cc5OiPSMJTIqM4rOGy z?(T9CuqGJ;f6v{5P~wivBfUX-L&d=}Q!OO+aC}$QIp#{JR69S$R8Bl>u^^mH;jq)+ z4gULc|Glr5>~q1Nhj+wR^MXMX$XHn>*>Zay;PAKXIYS+*ZqB+^Q2|KnX-Z_ex^kok z#*MSvSW86C50(mz%pCef`NCh;mU2ww=bGNCVbweX`3%#&6Eyod@@BZ6pzJlf_)|KL zIrPUVttu#;Iy^YbD0NTMUiI{I67=(-6}f(qysvHmL4bK7vGhwVj>kYsvt+wx@;=|^ zy1H9oRM|fdn-ekmrNDg~@<*b0?BFUS8D1O338FL&{sD6gAatJqb!4mv;9-DXNt(5z z7;qLS1}qFQEesjo>{mRsU7X1${otm2zt@6k;>yS`h^f42Y+h-zDp7fRCKSkyq3N2z z>Bn3B_VG4HfUVnwhC4c0(=PaZ^5@>{&k@&M>u!Z^c~jviNWi!5u1`-#zi*Ld^A75t zIqemTdD<{;pk9fs332qI_oq9|+$WP3(FpI>A8rfUP%x0^1cb8? zmNIG*8y!0u=+eEtQk4Xridr?49xjPv32IPFr@n=LdiTvA^ot~~F0p8*(v)A)4R!Rf zU|+S~yCN|`I+MO3l`M$-gP)lLM9;xN|0<{8X!d^+QFk$RaxyogV3#ts zbA1I{D630qu}Qhx*_jwSIGDd`ObbhaqXJkt*?3t&Y}_1doE-nMg5tBahdBi&2S|Wj z!ra8#*nyG4*2&n-%GKPM!o%Ff_0>8GUN$Z^5aU0fi~oRqfc`7&;}!Lx=4Ow~uJ{V@ zKxUV+c5!uk#cgo?XCCP_#l+7|LGkt<6vuy;JQ~-KcU+Oe>^{;Qs{*Oo=K0};!LCH< z7sVYdOPTbZ2Nh~y>qgSZjJV$)J&Y%P+l5ykrU-}8JDoW0^tAB&MkUKcRl-sh@|iF( z71v5ZM+I{*bjL7)j7L-8V$>bqoGm`KutbZi*GpadGKV0(KsfC#Ogh7Rs$5U7|2 zOld6i6?t6kL$9<{QqWr!!uZc`uCOL4t#QPucHY7A!%C|rzBM&F+5cli;~=IH*Z-y6 ziP~8ezlwSJUHK;XN=C2a`|50ltyaxYr+b622wUEMF4lbiHVpdD;<`DAF}yerO)Z^L zfJRzY6q)({-$~ofa$t0c&XuRD+ybiW*-|s85!bXD4BI5Xf-Up`!^i+XxzYX7<{~;( zXY@mu+&c~Wnv!SPk-QH#&Ds93JI#s}BjYmJ-z(l#8?1G=k>ojOR9Nfa+KrxYIwBfc z&VVl`=FrrWiI^+CN`(LHejgrObs3~k9Q`;&Im?8F!#6&&)d#$P`ciUI@60H2{pJ@) z;uviLh@5tGgzfaGfpDUz4?lgs_nGPv|7q;A!|1^k z!>RBh$zE?H*lD7-4v5jR-7jAdBi=Fzzw{6(W_@JVhclzi&BpS7;OksqFDBF#=pRNw=;5Hza{F* z`n<7#IxAyz%iiM9-oPV2-DCM0>`QD1^ z<3S&2T87zv{n@@##11^EG$kBU35$p8CSp|1;W4?hM$%+8Msf;wl`eFSwUkDFRD!Fanx-*!{_Gt;`s5(ygSz+ zGpn(6vBx7CjX~p}ka8vQ{ey+Ep=9c{dkjm8)rX`&z&EsrZrgxTRS(wss$!I2^u1YV zXG=|rxOU3{6F4qvU?frEywTw)ZVLu!0SZs7PCwcR>GYi(pimE|13#o z@e4_b1=8x#PwF456;PR4joGFZ*~B2hIPxn}Znh9B*0*1gdD;9V+vc-PCErB!Vc&1A+2zw4Uv{Z>q2 zt!t#ofPo5Ww2)k(yvSWl_Z5hq)&5DU5w;P?i zf4w{e8WzK66x&`aLfftHaEG_-*rwkHLK3}zJg`%pYxtpTIE8ccy*7Lsk^QaDiW9v6 zcF(TgC?oLTxAjvtYLak|cqcw1E|F64iXAYFvR^uq>%p~*jJLd diff --git a/doc/testbenches_doc_resources/5g-ota-bench.png b/doc/testbenches_doc_resources/5g-ota-bench.png index 30309bf9f4487b34cf58c8a35764f29802fa3757..1a84e4dd20c293408351eac8dce76a766171af8d 100644 GIT binary patch literal 57789 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

|+|y?w@7)s${ZEK`2zICX<^Lu2C3^se{$ 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 literal 91775 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 diff --git a/doc/testbenches_doc_resources/5g-ota-bench.tex b/doc/testbenches_doc_resources/5g-ota-bench.tex index b7413af7db..0ffd01fa63 100644 --- a/doc/testbenches_doc_resources/5g-ota-bench.tex +++ b/doc/testbenches_doc_resources/5g-ota-bench.tex @@ -16,16 +16,16 @@ \node[label=above:porcepix] (porcepix) {\includegraphics[width=1.2cm]{server}}; - \node[above right=-0.4cm and 2cm of porcepix, label=above:asterix] (asterix) + \node[above right=-0.4cm and 2cm of porcepix, label=above:matix] (matix) {\includegraphics[width=1.2cm]{server}} edge (porcepix); - \node[right=0.3cm of asterix, label=above:N310] (n310a) - {\includegraphics[width=1.5cm]{n310}} edge (asterix); - \node[right=.2cm of n310a, duplexer] (b78o) {n78} edge (n310a); - \node[below right=-0.1cm and 0.35cm of b78o.east] (anto1) - {\includegraphics[width=0.3cm]{antenna}} edge (b78o); - \node[above right=-0.1cm and 0.35cm of b78o.east] (anto2) - {\includegraphics[width=0.3cm]{antenna}} edge (b78o); + \node[right=0.3cm of matix, label=above:N310] (n310a) + {\includegraphics[width=1.5cm]{n310}} edge (matix); + \node[right=.2cm of n310a, duplexer] (b77o) {n77} edge (n310a); + \node[below right=-0.1cm and 0.35cm of b77o.east] (anto1) + {\includegraphics[width=0.3cm]{antenna}} edge (b77o); + \node[above right=-0.1cm and 0.35cm of b77o.east] (anto2) + {\includegraphics[width=0.3cm]{antenna}} edge (b77o); \node[below right=-0.4cm and 2cm of porcepix, label=above:obelix] (obelix) {\includegraphics[width=1.2cm]{server}} @@ -45,7 +45,7 @@ \node[above right=-0.1cm and 0.35cm of b78o.east] (anto2) {\includegraphics[width=0.3cm]{antenna}} edge (b78o); - \node[above right=-0.5cm and 5.0cm of n310o.east, label=above:RM500Q-GL] (quectel) + \node[above right=-0.5cm and 5.0cm of n310o.east, label=above:RM520N-GL] (quectel) {\includegraphics[height=1.2cm]{quectel}}; \node[above left=-0.1cm and 0.8cm of quectel.west] (aq2) {\includegraphics[width=0.3cm]{antenna}} edge (quectel); @@ -55,7 +55,7 @@ {\includegraphics[width=0.3cm]{antenna}} edge (quectel); \node[below=-0.2cm of aq3] {\includegraphics[width=0.3cm]{antenna}} edge (quectel); - \node[right=1cm of quectel, label=above:nrmodule2] (nrmodule2) + \node[right=1cm of quectel, label=above:up2] (up2) {\includegraphics[width=1.2cm]{server}} edge (quectel); From 99c4e5477c5beefa3834b6895a17114f9bac1200 Mon Sep 17 00:00:00 2001 From: Guido Casati Date: Tue, 23 Apr 2024 18:43:27 +0200 Subject: [PATCH 36/40] Minor comments and logging --- openair2/LAYER2/nr_pdcp/nr_pdcp_entity.c | 39 ++++++++++++++++++++++-- openair2/LAYER2/nr_rlc/nr_rlc_oai_api.c | 2 +- 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/openair2/LAYER2/nr_pdcp/nr_pdcp_entity.c b/openair2/LAYER2/nr_pdcp/nr_pdcp_entity.c index 98162d003c..712bbf6b0c 100644 --- a/openair2/LAYER2/nr_pdcp/nr_pdcp_entity.c +++ b/openair2/LAYER2/nr_pdcp/nr_pdcp_entity.c @@ -57,7 +57,10 @@ static void nr_pdcp_entity_recv_pdu(nr_pdcp_entity_t *entity, uint32_t rx_deliv_hfn; if (entity->entity_suspended) { - LOG_W(PDCP, "PDCP entity %d is suspended. Quit RX procedure.\n", entity->rb_id); + LOG_W(PDCP, + "PDCP entity (%s) %d is suspended. Quit RX procedure.\n", + entity->type > NR_PDCP_DRB_UM ? "SRB" : "DRB", + entity->rb_id); return; } @@ -190,6 +193,13 @@ static void nr_pdcp_entity_recv_pdu(nr_pdcp_entity_t *entity, count++; } entity->rx_deliv = count; + LOG_D(PDCP, + "%s: entity (%s) %d - rx_deliv = %d, rcvd_sn = %d \n", + __func__, + entity->type == NR_PDCP_DRB_AM ? "DRB" : "SRB", + entity->rb_id, + entity->rx_deliv, + rcvd_sn); } if (entity->t_reordering_start != 0 && entity->rx_deliv >= entity->rx_reord) { @@ -220,7 +230,10 @@ static int nr_pdcp_entity_process_sdu(nr_pdcp_entity_t *entity, int dc_bit; if (entity->entity_suspended) { - LOG_W(PDCP, "PDCP entity %d is suspended. Quit SDU processing.\n", entity->rb_id); + LOG_W(PDCP, + "PDCP entity (%s) %d is suspended. Quit SDU processing.\n", + entity->type > NR_PDCP_DRB_UM ? "SRB" : "DRB", + entity->rb_id); return -1; } @@ -387,6 +400,14 @@ static void check_t_reordering(nr_pdcp_entity_t *entity) if (entity->t_reordering_start == 0 || entity->t_current <= entity->t_reordering_start + entity->t_reordering) return; + LOG_D(PDCP, + "%s: entity (%s) %d: t_reordering_start = %ld, t_current = %ld, t_reordering = %d \n", + __func__, + entity->type > NR_PDCP_DRB_UM ? "SRB" : "DRB", + entity->rb_id, + entity->t_reordering_start, + entity->t_current, + entity->t_reordering); /* stop timer */ entity->t_reordering_start = 0; @@ -450,15 +471,29 @@ static void deliver_all_sdus(nr_pdcp_entity_t *entity) } } +/** + * @brief PDCP Entity Suspend according to 5.1.4 of 3GPP TS 38.323 + * Transmitting PDCP entity shall: + * - set TX_NEXT to the initial value; + * - discard all stored PDCP PDUs (NOTE: PDUs are stored in RLC) + * Receiving PDCP entity shall: + * - if t-Reordering is running: + * a) stop and reset t-Reordering; + * b) deliver all stored PDCP SDUs + * - set RX_NEXT and RX_DELIV to the initial value. + */ static void nr_pdcp_entity_suspend(nr_pdcp_entity_t *entity) { + /* Transmitting PDCP entity */ entity->tx_next = 0; + /* Receiving PDCP entity */ if (entity->t_reordering_start != 0) { entity->t_reordering_start = 0; deliver_all_sdus(entity); } entity->rx_next = 0; entity->rx_deliv = 0; + /* Flag to keep track of PDCP entity status */ entity->entity_suspended = true; } diff --git a/openair2/LAYER2/nr_rlc/nr_rlc_oai_api.c b/openair2/LAYER2/nr_rlc/nr_rlc_oai_api.c index b12142a881..61adacab69 100644 --- a/openair2/LAYER2/nr_rlc/nr_rlc_oai_api.c +++ b/openair2/LAYER2/nr_rlc/nr_rlc_oai_api.c @@ -650,7 +650,7 @@ void nr_rlc_reestablish_entity(int ue_id, int lc_id) nr_rlc_entity_t *rb = get_rlc_entity_from_lcid(ue, lc_id); if (rb != NULL) { - LOG_D(RLC, "RB found! (channel ID %d) \n", lc_id); + LOG_D(RLC, "%s: RB found! (channel ID %d), re-establish RLC\n", __func__, lc_id); rb->reestablishment(rb); } else { LOG_E(RLC, "no RLC entity found (channel ID %d) for reestablishment\n", lc_id); From f010058e4560e14188bfca2e5a7b6a1b105f15f2 Mon Sep 17 00:00:00 2001 From: Guido Casati Date: Thu, 25 Apr 2024 17:32:38 +0200 Subject: [PATCH 37/40] Re-establish RLC for SRB1 only when receiving RRCReestablishmentRequest - according to 5.3.7.4 of TS 38.331: 1> re-establish RLC for SRB1; - gNB: 1) re-establish RLC for SRB1 in nr_rlc_update_id 2) re-establish RLC for remaining RBs concurrently with RRCReconfiguration issue: gNB) in nr_rlc_update_id the gNB is re-establishing RLC for all RBs at the same time when receiving RRCReestablishmentRequest from UE UE) according to the specs, the UE is re-establishing RLC for SRB1 with RRCReestablishmentRequest the other RBs are re-established during RRCReconfiguration (in our case in nr_rrc_ue_process_RadioBearerConfig) when receiving reestablishRLC IE in rlc_BearerToAddModList RLC TX) this leads to RLC counters mismatch after re-establishment: control PDUs discarded until max nb of retx is reached and then UL failure occurs --- openair2/LAYER2/NR_MAC_gNB/mac_rrc_dl_handler.c | 9 +++++++++ openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h | 2 ++ openair2/LAYER2/nr_rlc/nr_rlc_oai_api.c | 13 ++++++------- openair2/RRC/NR/rrc_gNB.c | 4 ++++ 4 files changed, 21 insertions(+), 7 deletions(-) diff --git a/openair2/LAYER2/NR_MAC_gNB/mac_rrc_dl_handler.c b/openair2/LAYER2/NR_MAC_gNB/mac_rrc_dl_handler.c index cb26703566..2a2760e7a7 100644 --- a/openair2/LAYER2/NR_MAC_gNB/mac_rrc_dl_handler.c +++ b/openair2/LAYER2/NR_MAC_gNB/mac_rrc_dl_handler.c @@ -687,6 +687,12 @@ void dl_rrc_message_transfer(const f1ap_dl_rrc_message_t *dl_rrc) nr_mac_enable_ue_rrc_processing_timer(mac, UE, /* apply_cellGroup = */ true); NR_SCHED_UNLOCK(&mac->sched_lock); UE->expect_reconfiguration = false; + /* Re-establish RLC for all remaining bearers */ + if (UE->reestablish_rlc) { + for (int i = 1; i < UE->UE_sched_ctrl.dl_lc_num; ++i) + nr_rlc_reestablish_entity(dl_rrc->gNB_DU_ue_id, UE->UE_sched_ctrl.dl_lc_ids[i]); + UE->reestablish_rlc = false; + } } if (dl_rrc->old_gNB_DU_ue_id != NULL) { @@ -716,6 +722,9 @@ void dl_rrc_message_transfer(const f1ap_dl_rrc_message_t *dl_rrc) pthread_mutex_unlock(&mac->sched_lock); nr_rlc_remove_ue(dl_rrc->gNB_DU_ue_id); nr_rlc_update_id(*dl_rrc->old_gNB_DU_ue_id, dl_rrc->gNB_DU_ue_id); + /* Set flag to trigger RLC re-establishment + * for remaining RBs in next RRCReconfiguration */ + UE->reestablish_rlc = true; /* 38.331 clause 5.3.7.4: apply the specified configuration defined in 9.2.1 for SRB1 */ nr_rlc_reconfigure_entity(dl_rrc->gNB_DU_ue_id, 1, NULL); instance_t f1inst = get_f1_gtp_instance(); diff --git a/openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h b/openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h index e162ecbff5..a35911d3ce 100644 --- a/openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h +++ b/openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h @@ -683,6 +683,8 @@ typedef struct { NR_CellGroupConfig_t *CellGroup; /// CellGroupConfig that is to be activated after the next reconfiguration bool expect_reconfiguration; + /// reestablishRLC has to be signaled in RRCreconfiguration + bool reestablish_rlc; NR_CellGroupConfig_t *reconfigCellGroup; bool apply_cellgroup; NR_UE_NR_Capability_t *capability; diff --git a/openair2/LAYER2/nr_rlc/nr_rlc_oai_api.c b/openair2/LAYER2/nr_rlc/nr_rlc_oai_api.c index 61adacab69..f08964dabc 100644 --- a/openair2/LAYER2/nr_rlc/nr_rlc_oai_api.c +++ b/openair2/LAYER2/nr_rlc/nr_rlc_oai_api.c @@ -650,7 +650,7 @@ void nr_rlc_reestablish_entity(int ue_id, int lc_id) nr_rlc_entity_t *rb = get_rlc_entity_from_lcid(ue, lc_id); if (rb != NULL) { - LOG_D(RLC, "%s: RB found! (channel ID %d), re-establish RLC\n", __func__, lc_id); + LOG_D(RLC, "RB found! (channel ID %d), re-establish RLC\n", lc_id); rb->reestablishment(rb); } else { LOG_E(RLC, "no RLC entity found (channel ID %d) for reestablishment\n", lc_id); @@ -1065,12 +1065,11 @@ bool nr_rlc_update_id(int from_id, int to_id) } ue->ue_id = to_id; LOG_I(RLC, "Update old UE ID %d context to ID %d\n", from_id, to_id); - for (int i = 0; i < sizeof(ue->srb) / sizeof(ue->srb[0]); ++i) - if (ue->srb[i]) - ue->srb[i]->reestablishment(ue->srb[i]); - for (int i = 0; i < sizeof(ue->drb) / sizeof(ue->drb[0]); ++i) - if (ue->drb[i]) - ue->drb[i]->reestablishment(ue->drb[i]); + /* re-establish RLC for SRB1: according to 5.3.7.4 of TS 38.331 */ + if (ue->srb[0]) { + LOG_I(RLC, "Re-establish RLC for SRB 1\n"); + ue->srb[0]->reestablishment(ue->srb[0]); + } nr_rlc_manager_unlock(nr_rlc_ue_manager); return true; } diff --git a/openair2/RRC/NR/rrc_gNB.c b/openair2/RRC/NR/rrc_gNB.c index 2df6228c6a..abaf8d05a8 100644 --- a/openair2/RRC/NR/rrc_gNB.c +++ b/openair2/RRC/NR/rrc_gNB.c @@ -1080,6 +1080,10 @@ static void rrc_gNB_process_RRCReestablishmentComplete(const protocol_ctxt_t *co for (i = 1; i < ue_p->masterCellGroup->rlc_BearerToAddModList->list.count; ++i) asn1cSeqAdd(&cellGroupConfig->rlc_BearerToAddModList->list, ue_p->masterCellGroup->rlc_BearerToAddModList->list.array[i]); + /* + * At this stage, PDCP entity are re-established and reestablishRLC is flagged + * with RRCReconfiguration to complete RLC re-establishment of remaining bearers + */ for (i = 0; i < cellGroupConfig->rlc_BearerToAddModList->list.count; i++) { asn1cCallocOne(cellGroupConfig->rlc_BearerToAddModList->list.array[i]->reestablishRLC, NR_RLC_BearerConfig__reestablishRLC_true); From 2b859cd7e2c4c98fda637b05c6a09ec9a8a28778 Mon Sep 17 00:00:00 2001 From: Guido Casati Date: Mon, 29 Apr 2024 14:03:19 +0200 Subject: [PATCH 38/40] Remove PDCP Suspend from nrUE - according to clause 5.3.7.2 of 3GPP TS 38.331 PDCP Suspend is not required during RRCReestablishment --- openair2/RRC/NR_UE/rrc_UE.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/openair2/RRC/NR_UE/rrc_UE.c b/openair2/RRC/NR_UE/rrc_UE.c index 9e09db1a72..15e4ce47c3 100644 --- a/openair2/RRC/NR_UE/rrc_UE.c +++ b/openair2/RRC/NR_UE/rrc_UE.c @@ -1924,13 +1924,11 @@ void nr_rrc_initiate_rrcReestablishment(NR_UE_RRC_INST_t *rrc, for (int i = 1; i < 4; i++) { if (rrc->Srb[i] == RB_ESTABLISHED) { rrc->Srb[i] = RB_SUSPENDED; - nr_pdcp_suspend_srb(rrc->ue_id, i); } } for (int i = 1; i <= MAX_DRBS_PER_UE; i++) { if (get_DRB_status(rrc, i) == RB_ESTABLISHED) { set_DRB_status(rrc, i, RB_SUSPENDED); - nr_pdcp_suspend_drb(rrc->ue_id, i); } } // release the MCG SCell(s), if configured From 434b2b224588eec0b7d31c2f8c3526cf5cb0f46d Mon Sep 17 00:00:00 2001 From: Jaroslava Fiedlerova Date: Tue, 30 Apr 2024 10:45:10 +0200 Subject: [PATCH 39/40] Add rhel9.4 to the list of OAI supported distributions --- cmake_targets/tools/build_helper | 1 + 1 file changed, 1 insertion(+) diff --git a/cmake_targets/tools/build_helper b/cmake_targets/tools/build_helper index 8ff0dcfa8c..7df0fee3f8 100755 --- a/cmake_targets/tools/build_helper +++ b/cmake_targets/tools/build_helper @@ -128,6 +128,7 @@ check_supported_distribution() { "rhel9.1") return 0 ;; "rhel9.2") return 0 ;; "rhel9.3") return 0 ;; + "rhel9.4") return 0 ;; "centos7") return 0 ;; "centos8") return 0 ;; "rocky8.7") return 0 ;; From e64e687fcd025470379425023f1f0a3059791bca Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Tue, 30 Apr 2024 12:11:48 +0200 Subject: [PATCH 40/40] Use --continuous-tx for F1 SABox test for B200 --- ci-scripts/yaml_files/sa_f1_b200_gnb/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci-scripts/yaml_files/sa_f1_b200_gnb/docker-compose.yml b/ci-scripts/yaml_files/sa_f1_b200_gnb/docker-compose.yml index f7a6138d2b..d62bbc098f 100644 --- a/ci-scripts/yaml_files/sa_f1_b200_gnb/docker-compose.yml +++ b/ci-scripts/yaml_files/sa_f1_b200_gnb/docker-compose.yml @@ -30,7 +30,7 @@ services: core: -1 # for core dumps environment: USE_B2XX: 'yes' - USE_ADDITIONAL_OPTIONS: --sa --RUs.[0].sdr_addrs serial=30C51D4 --telnetsrv --telnetsrv.shrmod ci --log_config.global_log_options level,nocolor,time,line_num,function --gNBs.[0].min_rxtxtime 2 --gNBs.[0].do_CSIRS 1 --gNBs.[0].do_SRS 0 --L1s.[0].max_ldpc_iterations 20 + USE_ADDITIONAL_OPTIONS: --sa --RUs.[0].sdr_addrs serial=30C51D4 --continuous-tx --telnetsrv --telnetsrv.shrmod ci --log_config.global_log_options level,nocolor,time,line_num,function --gNBs.[0].min_rxtxtime 2 --gNBs.[0].do_CSIRS 1 --gNBs.[0].do_SRS 0 --L1s.[0].max_ldpc_iterations 20 volumes: - ../../conf_files/gnb-du.sa.band1.52prb.usrpb210.conf:/opt/oai-gnb/etc/gnb.conf - /dev:/dev