/*
 * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
 * From ASN.1 module "X2AP-Containers"
 * 	found in "Spec/e2_and_x2-combined-and-minimized.asn1"
 * 	`asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example`
 */

#ifndef	_ProtocolExtensionField_H_
#define	_ProtocolExtensionField_H_


#include "asn_application.h"

/* Including external dependencies */
#include "ProtocolIE-ID.h"
#include "Criticality.h"
#include "ANY.h"
#include "asn_ioc.h"
#include "ABSInformation.h"
#include "Presence.h"
#include "InvokeIndication.h"
#include "SubframeAssignment.h"
#include "ExtendedULInterferenceOverloadInfo.h"
#include "CoMPInformation.h"
#include "DynamicDLTransmissionInformation.h"
#include "OPEN_TYPE.h"
#include "constr_CHOICE.h"
#include "constr_SEQUENCE.h"
#include "DeactivationIndication.h"
#include "CompositeAvailableCapacityGroup.h"
#include "ABS-Status.h"
#include "RSRPMRList.h"
#include "CSIReportList.h"
#include "CellReportingIndicator.h"
#include "EARFCNExtension.h"
#include "OffsetOfNbiotChannelNumberToEARFCN.h"
#include "NRS-NSSS-PowerOffset.h"
#include "NSSS-NumOccasionDifferentPrecoder.h"
#include "TAC.h"
#include "DL-scheduling-PDCCH-CCE-usage.h"
#include "UL-scheduling-PDCCH-CCE-usage.h"
#include "EnhancedRNTP.h"
#include "UEID.h"
#include "Number-of-Antennaports.h"
#include "PRACH-Configuration.h"
#include "MBSFN-Subframe-Infolist.h"
#include "CSG-Id.h"
#include "MBMS-Service-Area-Identity-List.h"
#include "MultibandInfoList.h"
#include "FreqBandIndicatorPriority.h"
#include "BandwidthReducedSI.h"
#include "ProtectedEUTRAResourceIndication.h"
#include "AdditionalSpecialSubframe-Info.h"
#include "AdditionalSpecialSubframeExtension-Info.h"

#ifdef __cplusplus
extern "C" {
#endif

/* Dependencies */
typedef enum CellInformation_Item_ExtIEs__extensionValue_PR {
	CellInformation_Item_ExtIEs__extensionValue_PR_NOTHING,	/* No components present */
	CellInformation_Item_ExtIEs__extensionValue_PR_ABSInformation,
	CellInformation_Item_ExtIEs__extensionValue_PR_InvokeIndication,
	CellInformation_Item_ExtIEs__extensionValue_PR_SubframeAssignment,
	CellInformation_Item_ExtIEs__extensionValue_PR_ExtendedULInterferenceOverloadInfo,
	CellInformation_Item_ExtIEs__extensionValue_PR_CoMPInformation,
	CellInformation_Item_ExtIEs__extensionValue_PR_DynamicDLTransmissionInformation
} CellInformation_Item_ExtIEs__extensionValue_PR;
typedef enum ServedCellsToModify_Item_ExtIEs__extensionValue_PR {
	ServedCellsToModify_Item_ExtIEs__extensionValue_PR_NOTHING,	/* No components present */
	ServedCellsToModify_Item_ExtIEs__extensionValue_PR_DeactivationIndication
} ServedCellsToModify_Item_ExtIEs__extensionValue_PR;
typedef enum CellToReport_Item_ExtIEs__extensionValue_PR {
	CellToReport_Item_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} CellToReport_Item_ExtIEs__extensionValue_PR;
typedef enum MeasurementInitiationResult_Item_ExtIEs__extensionValue_PR {
	MeasurementInitiationResult_Item_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} MeasurementInitiationResult_Item_ExtIEs__extensionValue_PR;
typedef enum MeasurementFailureCause_Item_ExtIEs__extensionValue_PR {
	MeasurementFailureCause_Item_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} MeasurementFailureCause_Item_ExtIEs__extensionValue_PR;
typedef enum CompleteFailureCauseInformation_Item_ExtIEs__extensionValue_PR {
	CompleteFailureCauseInformation_Item_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} CompleteFailureCauseInformation_Item_ExtIEs__extensionValue_PR;
typedef enum CellMeasurementResult_Item_ExtIEs__extensionValue_PR {
	CellMeasurementResult_Item_ExtIEs__extensionValue_PR_NOTHING,	/* No components present */
	CellMeasurementResult_Item_ExtIEs__extensionValue_PR_CompositeAvailableCapacityGroup,
	CellMeasurementResult_Item_ExtIEs__extensionValue_PR_ABS_Status,
	CellMeasurementResult_Item_ExtIEs__extensionValue_PR_RSRPMRList,
	CellMeasurementResult_Item_ExtIEs__extensionValue_PR_CSIReportList,
	CellMeasurementResult_Item_ExtIEs__extensionValue_PR_CellReportingIndicator
} CellMeasurementResult_Item_ExtIEs__extensionValue_PR;
typedef enum ResponseInformationSeNBReconfComp_SuccessItemExtIEs__extensionValue_PR {
	ResponseInformationSeNBReconfComp_SuccessItemExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} ResponseInformationSeNBReconfComp_SuccessItemExtIEs__extensionValue_PR;
typedef enum ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs__extensionValue_PR {
	ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs__extensionValue_PR;
typedef enum ServedEUTRAcellsENDCX2Management_ExtIEs__extensionValue_PR {
	ServedEUTRAcellsENDCX2Management_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} ServedEUTRAcellsENDCX2Management_ExtIEs__extensionValue_PR;
typedef enum En_gNBServedCells_ExtIEs__extensionValue_PR {
	En_gNBServedCells_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} En_gNBServedCells_ExtIEs__extensionValue_PR;
typedef enum ServedNRCell_Information_ExtIEs__extensionValue_PR {
	ServedNRCell_Information_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} ServedNRCell_Information_ExtIEs__extensionValue_PR;
typedef enum FDD_InfoServedNRCell_Information_ExtIEs__extensionValue_PR {
	FDD_InfoServedNRCell_Information_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} FDD_InfoServedNRCell_Information_ExtIEs__extensionValue_PR;
typedef enum FDD_InfoNeighbourServedNRCell_Information_ExtIEs__extensionValue_PR {
	FDD_InfoNeighbourServedNRCell_Information_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} FDD_InfoNeighbourServedNRCell_Information_ExtIEs__extensionValue_PR;
typedef enum TDD_InfoServedNRCell_Information_ExtIEs__extensionValue_PR {
	TDD_InfoServedNRCell_Information_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} TDD_InfoServedNRCell_Information_ExtIEs__extensionValue_PR;
typedef enum TDD_InfoNeighbourServedNRCell_Information_ExtIEs__extensionValue_PR {
	TDD_InfoNeighbourServedNRCell_Information_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} TDD_InfoNeighbourServedNRCell_Information_ExtIEs__extensionValue_PR;
typedef enum NRNeighbour_Information_ExtIEs__extensionValue_PR {
	NRNeighbour_Information_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} NRNeighbour_Information_ExtIEs__extensionValue_PR;
typedef enum Limited_list_ExtIEs__extensionValue_PR {
	Limited_list_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} Limited_list_ExtIEs__extensionValue_PR;
typedef enum ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs__extensionValue_PR {
	ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs__extensionValue_PR;
typedef enum ServedNRCellsToModify_Item_ExtIEs__extensionValue_PR {
	ServedNRCellsToModify_Item_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} ServedNRCellsToModify_Item_ExtIEs__extensionValue_PR;
typedef enum ABSInformationFDD_ExtIEs__extensionValue_PR {
	ABSInformationFDD_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} ABSInformationFDD_ExtIEs__extensionValue_PR;
typedef enum ABSInformationTDD_ExtIEs__extensionValue_PR {
	ABSInformationTDD_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} ABSInformationTDD_ExtIEs__extensionValue_PR;
typedef enum ABS_Status_ExtIEs__extensionValue_PR {
	ABS_Status_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} ABS_Status_ExtIEs__extensionValue_PR;
typedef enum AdditionalSpecialSubframe_Info_ExtIEs__extensionValue_PR {
	AdditionalSpecialSubframe_Info_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} AdditionalSpecialSubframe_Info_ExtIEs__extensionValue_PR;
typedef enum AdditionalSpecialSubframeExtension_Info_ExtIEs__extensionValue_PR {
	AdditionalSpecialSubframeExtension_Info_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} AdditionalSpecialSubframeExtension_Info_ExtIEs__extensionValue_PR;
typedef enum CellBasedQMC_ExtIEs__extensionValue_PR {
	CellBasedQMC_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} CellBasedQMC_ExtIEs__extensionValue_PR;
typedef enum CellReplacingInfo_ExtIEs__extensionValue_PR {
	CellReplacingInfo_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} CellReplacingInfo_ExtIEs__extensionValue_PR;
typedef enum CoMPHypothesisSetItem_ExtIEs__extensionValue_PR {
	CoMPHypothesisSetItem_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} CoMPHypothesisSetItem_ExtIEs__extensionValue_PR;
typedef enum CoMPInformation_ExtIEs__extensionValue_PR {
	CoMPInformation_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} CoMPInformation_ExtIEs__extensionValue_PR;
typedef enum CoMPInformationItem_ExtIEs__extensionValue_PR {
	CoMPInformationItem_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} CoMPInformationItem_ExtIEs__extensionValue_PR;
typedef enum CoMPInformationStartTime_ExtIEs__extensionValue_PR {
	CoMPInformationStartTime_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} CoMPInformationStartTime_ExtIEs__extensionValue_PR;
typedef enum CompositeAvailableCapacity_ExtIEs__extensionValue_PR {
	CompositeAvailableCapacity_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} CompositeAvailableCapacity_ExtIEs__extensionValue_PR;
typedef enum CompositeAvailableCapacityGroup_ExtIEs__extensionValue_PR {
	CompositeAvailableCapacityGroup_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} CompositeAvailableCapacityGroup_ExtIEs__extensionValue_PR;
typedef enum CriticalityDiagnostics_ExtIEs__extensionValue_PR {
	CriticalityDiagnostics_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} CriticalityDiagnostics_ExtIEs__extensionValue_PR;
typedef enum CriticalityDiagnostics_IE_List_ExtIEs__extensionValue_PR {
	CriticalityDiagnostics_IE_List_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} CriticalityDiagnostics_IE_List_ExtIEs__extensionValue_PR;
typedef enum CSIReportList_ExtIEs__extensionValue_PR {
	CSIReportList_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} CSIReportList_ExtIEs__extensionValue_PR;
typedef enum CSIReportPerCSIProcess_ExtIEs__extensionValue_PR {
	CSIReportPerCSIProcess_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} CSIReportPerCSIProcess_ExtIEs__extensionValue_PR;
typedef enum CSIReportPerCSIProcessItem_ExtIEs__extensionValue_PR {
	CSIReportPerCSIProcessItem_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} CSIReportPerCSIProcessItem_ExtIEs__extensionValue_PR;
typedef enum DynamicNAICSInformation_ExtIEs__extensionValue_PR {
	DynamicNAICSInformation_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} DynamicNAICSInformation_ExtIEs__extensionValue_PR;
typedef enum ECGI_ExtIEs__extensionValue_PR {
	ECGI_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} ECGI_ExtIEs__extensionValue_PR;
typedef enum EnhancedRNTP_ExtIEs__extensionValue_PR {
	EnhancedRNTP_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} EnhancedRNTP_ExtIEs__extensionValue_PR;
typedef enum EnhancedRNTPStartTime_ExtIEs__extensionValue_PR {
	EnhancedRNTPStartTime_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} EnhancedRNTPStartTime_ExtIEs__extensionValue_PR;
typedef enum ExtendedULInterferenceOverloadInfo_ExtIEs__extensionValue_PR {
	ExtendedULInterferenceOverloadInfo_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} ExtendedULInterferenceOverloadInfo_ExtIEs__extensionValue_PR;
typedef enum FDD_Info_ExtIEs__extensionValue_PR {
	FDD_Info_ExtIEs__extensionValue_PR_NOTHING,	/* No components present */
	FDD_Info_ExtIEs__extensionValue_PR_EARFCNExtension,
	FDD_Info_ExtIEs__extensionValue_PR_OffsetOfNbiotChannelNumberToEARFCN,
	FDD_Info_ExtIEs__extensionValue_PR_NRS_NSSS_PowerOffset,
	FDD_Info_ExtIEs__extensionValue_PR_NSSS_NumOccasionDifferentPrecoder
} FDD_Info_ExtIEs__extensionValue_PR;
typedef enum FreqBandNrItem_ExtIEs__extensionValue_PR {
	FreqBandNrItem_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} FreqBandNrItem_ExtIEs__extensionValue_PR;
typedef enum GlobalENB_ID_ExtIEs__extensionValue_PR {
	GlobalENB_ID_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} GlobalENB_ID_ExtIEs__extensionValue_PR;
typedef enum GlobalGNB_ID_ExtIEs__extensionValue_PR {
	GlobalGNB_ID_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} GlobalGNB_ID_ExtIEs__extensionValue_PR;
typedef enum GU_Group_ID_ExtIEs__extensionValue_PR {
	GU_Group_ID_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} GU_Group_ID_ExtIEs__extensionValue_PR;
typedef enum HWLoadIndicator_ExtIEs__extensionValue_PR {
	HWLoadIndicator_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} HWLoadIndicator_ExtIEs__extensionValue_PR;
typedef enum MBSFN_Subframe_Info_ExtIEs__extensionValue_PR {
	MBSFN_Subframe_Info_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} MBSFN_Subframe_Info_ExtIEs__extensionValue_PR;
typedef enum BandInfo_ExtIEs__extensionValue_PR {
	BandInfo_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} BandInfo_ExtIEs__extensionValue_PR;
typedef enum Neighbour_Information_ExtIEs__extensionValue_PR {
	Neighbour_Information_ExtIEs__extensionValue_PR_NOTHING,	/* No components present */
	Neighbour_Information_ExtIEs__extensionValue_PR_TAC,
	Neighbour_Information_ExtIEs__extensionValue_PR_EARFCNExtension
} Neighbour_Information_ExtIEs__extensionValue_PR;
typedef enum NRFreqInfo_ExtIEs__extensionValue_PR {
	NRFreqInfo_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} NRFreqInfo_ExtIEs__extensionValue_PR;
typedef enum NRCGI_ExtIEs__extensionValue_PR {
	NRCGI_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} NRCGI_ExtIEs__extensionValue_PR;
typedef enum NR_TxBW_ExtIEs__extensionValue_PR {
	NR_TxBW_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} NR_TxBW_ExtIEs__extensionValue_PR;
typedef enum PRACH_Configuration_ExtIEs__extensionValue_PR {
	PRACH_Configuration_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} PRACH_Configuration_ExtIEs__extensionValue_PR;
typedef enum ProtectedEUTRAResourceIndication_ExtIEs__extensionValue_PR {
	ProtectedEUTRAResourceIndication_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} ProtectedEUTRAResourceIndication_ExtIEs__extensionValue_PR;
typedef enum ProtectedFootprintTimePattern_ExtIEs__extensionValue_PR {
	ProtectedFootprintTimePattern_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} ProtectedFootprintTimePattern_ExtIEs__extensionValue_PR;
typedef enum ProtectedResourceList_Item_ExtIEs__extensionValue_PR {
	ProtectedResourceList_Item_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} ProtectedResourceList_Item_ExtIEs__extensionValue_PR;
typedef enum RadioResourceStatus_ExtIEs__extensionValue_PR {
	RadioResourceStatus_ExtIEs__extensionValue_PR_NOTHING,	/* No components present */
	RadioResourceStatus_ExtIEs__extensionValue_PR_DL_scheduling_PDCCH_CCE_usage,
	RadioResourceStatus_ExtIEs__extensionValue_PR_UL_scheduling_PDCCH_CCE_usage
} RadioResourceStatus_ExtIEs__extensionValue_PR;
typedef enum RelativeNarrowbandTxPower_ExtIEs__extensionValue_PR {
	RelativeNarrowbandTxPower_ExtIEs__extensionValue_PR_NOTHING,	/* No components present */
	RelativeNarrowbandTxPower_ExtIEs__extensionValue_PR_EnhancedRNTP
} RelativeNarrowbandTxPower_ExtIEs__extensionValue_PR;
typedef enum RSRPMeasurementResult_ExtIEs__extensionValue_PR {
	RSRPMeasurementResult_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} RSRPMeasurementResult_ExtIEs__extensionValue_PR;
typedef enum RSRPMRList_ExtIEs__extensionValue_PR {
	RSRPMRList_ExtIEs__extensionValue_PR_NOTHING,	/* No components present */
	RSRPMRList_ExtIEs__extensionValue_PR_UEID
} RSRPMRList_ExtIEs__extensionValue_PR;
typedef enum S1TNLLoadIndicator_ExtIEs__extensionValue_PR {
	S1TNLLoadIndicator_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} S1TNLLoadIndicator_ExtIEs__extensionValue_PR;
typedef enum ServedCell_ExtIEs__extensionValue_PR {
	ServedCell_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} ServedCell_ExtIEs__extensionValue_PR;
typedef enum ServedCell_Information_ExtIEs__extensionValue_PR {
	ServedCell_Information_ExtIEs__extensionValue_PR_NOTHING,	/* No components present */
	ServedCell_Information_ExtIEs__extensionValue_PR_Number_of_Antennaports,
	ServedCell_Information_ExtIEs__extensionValue_PR_PRACH_Configuration,
	ServedCell_Information_ExtIEs__extensionValue_PR_MBSFN_Subframe_Infolist,
	ServedCell_Information_ExtIEs__extensionValue_PR_CSG_Id,
	ServedCell_Information_ExtIEs__extensionValue_PR_MBMS_Service_Area_Identity_List,
	ServedCell_Information_ExtIEs__extensionValue_PR_MultibandInfoList,
	ServedCell_Information_ExtIEs__extensionValue_PR_FreqBandIndicatorPriority,
	ServedCell_Information_ExtIEs__extensionValue_PR_BandwidthReducedSI,
	ServedCell_Information_ExtIEs__extensionValue_PR_ProtectedEUTRAResourceIndication
} ServedCell_Information_ExtIEs__extensionValue_PR;
typedef enum SpecialSubframe_Info_ExtIEs__extensionValue_PR {
	SpecialSubframe_Info_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} SpecialSubframe_Info_ExtIEs__extensionValue_PR;
typedef enum SubbandCQI_ExtIEs__extensionValue_PR {
	SubbandCQI_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} SubbandCQI_ExtIEs__extensionValue_PR;
typedef enum SubbandCQIItem_ExtIEs__extensionValue_PR {
	SubbandCQIItem_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} SubbandCQIItem_ExtIEs__extensionValue_PR;
typedef enum SULInformation_ExtIEs__extensionValue_PR {
	SULInformation_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} SULInformation_ExtIEs__extensionValue_PR;
typedef enum SupportedSULFreqBandItem_ExtIEs__extensionValue_PR {
	SupportedSULFreqBandItem_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} SupportedSULFreqBandItem_ExtIEs__extensionValue_PR;
typedef enum TDD_Info_ExtIEs__extensionValue_PR {
	TDD_Info_ExtIEs__extensionValue_PR_NOTHING,	/* No components present */
	TDD_Info_ExtIEs__extensionValue_PR_AdditionalSpecialSubframe_Info,
	TDD_Info_ExtIEs__extensionValue_PR_EARFCNExtension,
	TDD_Info_ExtIEs__extensionValue_PR_AdditionalSpecialSubframeExtension_Info
} TDD_Info_ExtIEs__extensionValue_PR;
typedef enum UL_HighInterferenceIndicationInfo_Item_ExtIEs__extensionValue_PR {
	UL_HighInterferenceIndicationInfo_Item_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} UL_HighInterferenceIndicationInfo_Item_ExtIEs__extensionValue_PR;
typedef enum UsableABSInformationFDD_ExtIEs__extensionValue_PR {
	UsableABSInformationFDD_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} UsableABSInformationFDD_ExtIEs__extensionValue_PR;
typedef enum UsableABSInformationTDD_ExtIEs__extensionValue_PR {
	UsableABSInformationTDD_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} UsableABSInformationTDD_ExtIEs__extensionValue_PR;
typedef enum WidebandCQI_ExtIEs__extensionValue_PR {
	WidebandCQI_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} WidebandCQI_ExtIEs__extensionValue_PR;

/* ProtocolExtensionField */
typedef struct CellInformation_Item_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct CellInformation_Item_ExtIEs__extensionValue {
		CellInformation_Item_ExtIEs__extensionValue_PR present;
		union CellInformation_Item_ExtIEs__extensionValue_u {
			ABSInformation_t	 ABSInformation;
			InvokeIndication_t	 InvokeIndication;
			SubframeAssignment_t	 SubframeAssignment;
			ExtendedULInterferenceOverloadInfo_t	 ExtendedULInterferenceOverloadInfo;
			CoMPInformation_t	 CoMPInformation;
			DynamicDLTransmissionInformation_t	 DynamicDLTransmissionInformation;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} CellInformation_Item_ExtIEs_t;
typedef struct ServedCellsToModify_Item_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct ServedCellsToModify_Item_ExtIEs__extensionValue {
		ServedCellsToModify_Item_ExtIEs__extensionValue_PR present;
		union ServedCellsToModify_Item_ExtIEs__extensionValue_u {
			DeactivationIndication_t	 DeactivationIndication;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ServedCellsToModify_Item_ExtIEs_t;
typedef struct CellToReport_Item_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct CellToReport_Item_ExtIEs__extensionValue {
		CellToReport_Item_ExtIEs__extensionValue_PR present;
		union CellToReport_Item_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} CellToReport_Item_ExtIEs_t;
typedef struct MeasurementInitiationResult_Item_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct MeasurementInitiationResult_Item_ExtIEs__extensionValue {
		MeasurementInitiationResult_Item_ExtIEs__extensionValue_PR present;
		union MeasurementInitiationResult_Item_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} MeasurementInitiationResult_Item_ExtIEs_t;
typedef struct MeasurementFailureCause_Item_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct MeasurementFailureCause_Item_ExtIEs__extensionValue {
		MeasurementFailureCause_Item_ExtIEs__extensionValue_PR present;
		union MeasurementFailureCause_Item_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} MeasurementFailureCause_Item_ExtIEs_t;
typedef struct CompleteFailureCauseInformation_Item_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct CompleteFailureCauseInformation_Item_ExtIEs__extensionValue {
		CompleteFailureCauseInformation_Item_ExtIEs__extensionValue_PR present;
		union CompleteFailureCauseInformation_Item_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} CompleteFailureCauseInformation_Item_ExtIEs_t;
typedef struct CellMeasurementResult_Item_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct CellMeasurementResult_Item_ExtIEs__extensionValue {
		CellMeasurementResult_Item_ExtIEs__extensionValue_PR present;
		union CellMeasurementResult_Item_ExtIEs__extensionValue_u {
			CompositeAvailableCapacityGroup_t	 CompositeAvailableCapacityGroup;
			ABS_Status_t	 ABS_Status;
			RSRPMRList_t	 RSRPMRList;
			CSIReportList_t	 CSIReportList;
			CellReportingIndicator_t	 CellReportingIndicator;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} CellMeasurementResult_Item_ExtIEs_t;
typedef struct ResponseInformationSeNBReconfComp_SuccessItemExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct ResponseInformationSeNBReconfComp_SuccessItemExtIEs__extensionValue {
		ResponseInformationSeNBReconfComp_SuccessItemExtIEs__extensionValue_PR present;
		union ResponseInformationSeNBReconfComp_SuccessItemExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ResponseInformationSeNBReconfComp_SuccessItemExtIEs_t;
typedef struct ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs__extensionValue {
		ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs__extensionValue_PR present;
		union ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs_t;
typedef struct ServedEUTRAcellsENDCX2Management_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct ServedEUTRAcellsENDCX2Management_ExtIEs__extensionValue {
		ServedEUTRAcellsENDCX2Management_ExtIEs__extensionValue_PR present;
		union ServedEUTRAcellsENDCX2Management_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ServedEUTRAcellsENDCX2Management_ExtIEs_t;
typedef struct En_gNBServedCells_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct En_gNBServedCells_ExtIEs__extensionValue {
		En_gNBServedCells_ExtIEs__extensionValue_PR present;
		union En_gNBServedCells_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} En_gNBServedCells_ExtIEs_t;
typedef struct ServedNRCell_Information_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct ServedNRCell_Information_ExtIEs__extensionValue {
		ServedNRCell_Information_ExtIEs__extensionValue_PR present;
		union ServedNRCell_Information_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ServedNRCell_Information_ExtIEs_t;
typedef struct FDD_InfoServedNRCell_Information_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct FDD_InfoServedNRCell_Information_ExtIEs__extensionValue {
		FDD_InfoServedNRCell_Information_ExtIEs__extensionValue_PR present;
		union FDD_InfoServedNRCell_Information_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} FDD_InfoServedNRCell_Information_ExtIEs_t;
typedef struct FDD_InfoNeighbourServedNRCell_Information_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct FDD_InfoNeighbourServedNRCell_Information_ExtIEs__extensionValue {
		FDD_InfoNeighbourServedNRCell_Information_ExtIEs__extensionValue_PR present;
		union FDD_InfoNeighbourServedNRCell_Information_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} FDD_InfoNeighbourServedNRCell_Information_ExtIEs_t;
typedef struct TDD_InfoServedNRCell_Information_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct TDD_InfoServedNRCell_Information_ExtIEs__extensionValue {
		TDD_InfoServedNRCell_Information_ExtIEs__extensionValue_PR present;
		union TDD_InfoServedNRCell_Information_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} TDD_InfoServedNRCell_Information_ExtIEs_t;
typedef struct TDD_InfoNeighbourServedNRCell_Information_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct TDD_InfoNeighbourServedNRCell_Information_ExtIEs__extensionValue {
		TDD_InfoNeighbourServedNRCell_Information_ExtIEs__extensionValue_PR present;
		union TDD_InfoNeighbourServedNRCell_Information_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} TDD_InfoNeighbourServedNRCell_Information_ExtIEs_t;
typedef struct NRNeighbour_Information_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct NRNeighbour_Information_ExtIEs__extensionValue {
		NRNeighbour_Information_ExtIEs__extensionValue_PR present;
		union NRNeighbour_Information_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} NRNeighbour_Information_ExtIEs_t;
typedef struct Limited_list_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct Limited_list_ExtIEs__extensionValue {
		Limited_list_ExtIEs__extensionValue_PR present;
		union Limited_list_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} Limited_list_ExtIEs_t;
typedef struct ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs__extensionValue {
		ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs__extensionValue_PR present;
		union ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs_t;
typedef struct ServedNRCellsToModify_Item_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct ServedNRCellsToModify_Item_ExtIEs__extensionValue {
		ServedNRCellsToModify_Item_ExtIEs__extensionValue_PR present;
		union ServedNRCellsToModify_Item_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ServedNRCellsToModify_Item_ExtIEs_t;
typedef struct ABSInformationFDD_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct ABSInformationFDD_ExtIEs__extensionValue {
		ABSInformationFDD_ExtIEs__extensionValue_PR present;
		union ABSInformationFDD_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ABSInformationFDD_ExtIEs_t;
typedef struct ABSInformationTDD_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct ABSInformationTDD_ExtIEs__extensionValue {
		ABSInformationTDD_ExtIEs__extensionValue_PR present;
		union ABSInformationTDD_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ABSInformationTDD_ExtIEs_t;
typedef struct ABS_Status_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct ABS_Status_ExtIEs__extensionValue {
		ABS_Status_ExtIEs__extensionValue_PR present;
		union ABS_Status_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ABS_Status_ExtIEs_t;
typedef struct AdditionalSpecialSubframe_Info_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct AdditionalSpecialSubframe_Info_ExtIEs__extensionValue {
		AdditionalSpecialSubframe_Info_ExtIEs__extensionValue_PR present;
		union AdditionalSpecialSubframe_Info_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} AdditionalSpecialSubframe_Info_ExtIEs_t;
typedef struct AdditionalSpecialSubframeExtension_Info_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct AdditionalSpecialSubframeExtension_Info_ExtIEs__extensionValue {
		AdditionalSpecialSubframeExtension_Info_ExtIEs__extensionValue_PR present;
		union AdditionalSpecialSubframeExtension_Info_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} AdditionalSpecialSubframeExtension_Info_ExtIEs_t;
typedef struct CellBasedQMC_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct CellBasedQMC_ExtIEs__extensionValue {
		CellBasedQMC_ExtIEs__extensionValue_PR present;
		union CellBasedQMC_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} CellBasedQMC_ExtIEs_t;
typedef struct CellReplacingInfo_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct CellReplacingInfo_ExtIEs__extensionValue {
		CellReplacingInfo_ExtIEs__extensionValue_PR present;
		union CellReplacingInfo_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} CellReplacingInfo_ExtIEs_t;
typedef struct CoMPHypothesisSetItem_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct CoMPHypothesisSetItem_ExtIEs__extensionValue {
		CoMPHypothesisSetItem_ExtIEs__extensionValue_PR present;
		union CoMPHypothesisSetItem_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} CoMPHypothesisSetItem_ExtIEs_t;
typedef struct CoMPInformation_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct CoMPInformation_ExtIEs__extensionValue {
		CoMPInformation_ExtIEs__extensionValue_PR present;
		union CoMPInformation_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} CoMPInformation_ExtIEs_t;
typedef struct CoMPInformationItem_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct CoMPInformationItem_ExtIEs__extensionValue {
		CoMPInformationItem_ExtIEs__extensionValue_PR present;
		union CoMPInformationItem_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} CoMPInformationItem_ExtIEs_t;
typedef struct CoMPInformationStartTime_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct CoMPInformationStartTime_ExtIEs__extensionValue {
		CoMPInformationStartTime_ExtIEs__extensionValue_PR present;
		union CoMPInformationStartTime_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} CoMPInformationStartTime_ExtIEs_t;
typedef struct CompositeAvailableCapacity_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct CompositeAvailableCapacity_ExtIEs__extensionValue {
		CompositeAvailableCapacity_ExtIEs__extensionValue_PR present;
		union CompositeAvailableCapacity_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} CompositeAvailableCapacity_ExtIEs_t;
typedef struct CompositeAvailableCapacityGroup_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct CompositeAvailableCapacityGroup_ExtIEs__extensionValue {
		CompositeAvailableCapacityGroup_ExtIEs__extensionValue_PR present;
		union CompositeAvailableCapacityGroup_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} CompositeAvailableCapacityGroup_ExtIEs_t;
typedef struct CriticalityDiagnostics_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct CriticalityDiagnostics_ExtIEs__extensionValue {
		CriticalityDiagnostics_ExtIEs__extensionValue_PR present;
		union CriticalityDiagnostics_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} CriticalityDiagnostics_ExtIEs_t;
typedef struct CriticalityDiagnostics_IE_List_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct CriticalityDiagnostics_IE_List_ExtIEs__extensionValue {
		CriticalityDiagnostics_IE_List_ExtIEs__extensionValue_PR present;
		union CriticalityDiagnostics_IE_List_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} CriticalityDiagnostics_IE_List_ExtIEs_t;
typedef struct CSIReportList_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct CSIReportList_ExtIEs__extensionValue {
		CSIReportList_ExtIEs__extensionValue_PR present;
		union CSIReportList_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} CSIReportList_ExtIEs_t;
typedef struct CSIReportPerCSIProcess_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct CSIReportPerCSIProcess_ExtIEs__extensionValue {
		CSIReportPerCSIProcess_ExtIEs__extensionValue_PR present;
		union CSIReportPerCSIProcess_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} CSIReportPerCSIProcess_ExtIEs_t;
typedef struct CSIReportPerCSIProcessItem_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct CSIReportPerCSIProcessItem_ExtIEs__extensionValue {
		CSIReportPerCSIProcessItem_ExtIEs__extensionValue_PR present;
		union CSIReportPerCSIProcessItem_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} CSIReportPerCSIProcessItem_ExtIEs_t;
typedef struct DynamicNAICSInformation_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct DynamicNAICSInformation_ExtIEs__extensionValue {
		DynamicNAICSInformation_ExtIEs__extensionValue_PR present;
		union DynamicNAICSInformation_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} DynamicNAICSInformation_ExtIEs_t;
typedef struct ECGI_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct ECGI_ExtIEs__extensionValue {
		ECGI_ExtIEs__extensionValue_PR present;
		union ECGI_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ECGI_ExtIEs_t;
typedef struct EnhancedRNTP_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct EnhancedRNTP_ExtIEs__extensionValue {
		EnhancedRNTP_ExtIEs__extensionValue_PR present;
		union EnhancedRNTP_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} EnhancedRNTP_ExtIEs_t;
typedef struct EnhancedRNTPStartTime_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct EnhancedRNTPStartTime_ExtIEs__extensionValue {
		EnhancedRNTPStartTime_ExtIEs__extensionValue_PR present;
		union EnhancedRNTPStartTime_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} EnhancedRNTPStartTime_ExtIEs_t;
typedef struct ExtendedULInterferenceOverloadInfo_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct ExtendedULInterferenceOverloadInfo_ExtIEs__extensionValue {
		ExtendedULInterferenceOverloadInfo_ExtIEs__extensionValue_PR present;
		union ExtendedULInterferenceOverloadInfo_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ExtendedULInterferenceOverloadInfo_ExtIEs_t;
typedef struct FDD_Info_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct FDD_Info_ExtIEs__extensionValue {
		FDD_Info_ExtIEs__extensionValue_PR present;
		union FDD_Info_ExtIEs__extensionValue_u {
			EARFCNExtension_t	 EARFCNExtension;
			OffsetOfNbiotChannelNumberToEARFCN_t	 OffsetOfNbiotChannelNumberToEARFCN;
			NRS_NSSS_PowerOffset_t	 NRS_NSSS_PowerOffset;
			NSSS_NumOccasionDifferentPrecoder_t	 NSSS_NumOccasionDifferentPrecoder;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} FDD_Info_ExtIEs_t;
typedef struct FreqBandNrItem_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct FreqBandNrItem_ExtIEs__extensionValue {
		FreqBandNrItem_ExtIEs__extensionValue_PR present;
		union FreqBandNrItem_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} FreqBandNrItem_ExtIEs_t;
typedef struct GlobalENB_ID_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct GlobalENB_ID_ExtIEs__extensionValue {
		GlobalENB_ID_ExtIEs__extensionValue_PR present;
		union GlobalENB_ID_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} GlobalENB_ID_ExtIEs_t;
typedef struct GlobalGNB_ID_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct GlobalGNB_ID_ExtIEs__extensionValue {
		GlobalGNB_ID_ExtIEs__extensionValue_PR present;
		union GlobalGNB_ID_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} GlobalGNB_ID_ExtIEs_t;
typedef struct GU_Group_ID_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct GU_Group_ID_ExtIEs__extensionValue {
		GU_Group_ID_ExtIEs__extensionValue_PR present;
		union GU_Group_ID_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} GU_Group_ID_ExtIEs_t;
typedef struct HWLoadIndicator_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct HWLoadIndicator_ExtIEs__extensionValue {
		HWLoadIndicator_ExtIEs__extensionValue_PR present;
		union HWLoadIndicator_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} HWLoadIndicator_ExtIEs_t;
typedef struct MBSFN_Subframe_Info_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct MBSFN_Subframe_Info_ExtIEs__extensionValue {
		MBSFN_Subframe_Info_ExtIEs__extensionValue_PR present;
		union MBSFN_Subframe_Info_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} MBSFN_Subframe_Info_ExtIEs_t;
typedef struct BandInfo_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct BandInfo_ExtIEs__extensionValue {
		BandInfo_ExtIEs__extensionValue_PR present;
		union BandInfo_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} BandInfo_ExtIEs_t;
typedef struct Neighbour_Information_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct Neighbour_Information_ExtIEs__extensionValue {
		Neighbour_Information_ExtIEs__extensionValue_PR present;
		union Neighbour_Information_ExtIEs__extensionValue_u {
			TAC_t	 TAC;
			EARFCNExtension_t	 EARFCNExtension;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} Neighbour_Information_ExtIEs_t;
typedef struct NRFreqInfo_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct NRFreqInfo_ExtIEs__extensionValue {
		NRFreqInfo_ExtIEs__extensionValue_PR present;
		union NRFreqInfo_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} NRFreqInfo_ExtIEs_t;
typedef struct NRCGI_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct NRCGI_ExtIEs__extensionValue {
		NRCGI_ExtIEs__extensionValue_PR present;
		union NRCGI_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} NRCGI_ExtIEs_t;
typedef struct NR_TxBW_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct NR_TxBW_ExtIEs__extensionValue {
		NR_TxBW_ExtIEs__extensionValue_PR present;
		union NR_TxBW_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} NR_TxBW_ExtIEs_t;
typedef struct PRACH_Configuration_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct PRACH_Configuration_ExtIEs__extensionValue {
		PRACH_Configuration_ExtIEs__extensionValue_PR present;
		union PRACH_Configuration_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} PRACH_Configuration_ExtIEs_t;
typedef struct ProtectedEUTRAResourceIndication_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct ProtectedEUTRAResourceIndication_ExtIEs__extensionValue {
		ProtectedEUTRAResourceIndication_ExtIEs__extensionValue_PR present;
		union ProtectedEUTRAResourceIndication_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ProtectedEUTRAResourceIndication_ExtIEs_t;
typedef struct ProtectedFootprintTimePattern_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct ProtectedFootprintTimePattern_ExtIEs__extensionValue {
		ProtectedFootprintTimePattern_ExtIEs__extensionValue_PR present;
		union ProtectedFootprintTimePattern_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ProtectedFootprintTimePattern_ExtIEs_t;
typedef struct ProtectedResourceList_Item_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct ProtectedResourceList_Item_ExtIEs__extensionValue {
		ProtectedResourceList_Item_ExtIEs__extensionValue_PR present;
		union ProtectedResourceList_Item_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ProtectedResourceList_Item_ExtIEs_t;
typedef struct RadioResourceStatus_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct RadioResourceStatus_ExtIEs__extensionValue {
		RadioResourceStatus_ExtIEs__extensionValue_PR present;
		union RadioResourceStatus_ExtIEs__extensionValue_u {
			DL_scheduling_PDCCH_CCE_usage_t	 DL_scheduling_PDCCH_CCE_usage;
			UL_scheduling_PDCCH_CCE_usage_t	 UL_scheduling_PDCCH_CCE_usage;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RadioResourceStatus_ExtIEs_t;
typedef struct RelativeNarrowbandTxPower_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct RelativeNarrowbandTxPower_ExtIEs__extensionValue {
		RelativeNarrowbandTxPower_ExtIEs__extensionValue_PR present;
		union RelativeNarrowbandTxPower_ExtIEs__extensionValue_u {
			EnhancedRNTP_t	 EnhancedRNTP;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RelativeNarrowbandTxPower_ExtIEs_t;
typedef struct RSRPMeasurementResult_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct RSRPMeasurementResult_ExtIEs__extensionValue {
		RSRPMeasurementResult_ExtIEs__extensionValue_PR present;
		union RSRPMeasurementResult_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RSRPMeasurementResult_ExtIEs_t;
typedef struct RSRPMRList_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct RSRPMRList_ExtIEs__extensionValue {
		RSRPMRList_ExtIEs__extensionValue_PR present;
		union RSRPMRList_ExtIEs__extensionValue_u {
			UEID_t	 UEID;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RSRPMRList_ExtIEs_t;
typedef struct S1TNLLoadIndicator_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct S1TNLLoadIndicator_ExtIEs__extensionValue {
		S1TNLLoadIndicator_ExtIEs__extensionValue_PR present;
		union S1TNLLoadIndicator_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} S1TNLLoadIndicator_ExtIEs_t;
typedef struct ServedCell_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct ServedCell_ExtIEs__extensionValue {
		ServedCell_ExtIEs__extensionValue_PR present;
		union ServedCell_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ServedCell_ExtIEs_t;
typedef struct ServedCell_Information_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct ServedCell_Information_ExtIEs__extensionValue {
		ServedCell_Information_ExtIEs__extensionValue_PR present;
		union ServedCell_Information_ExtIEs__extensionValue_u {
			Number_of_Antennaports_t	 Number_of_Antennaports;
			PRACH_Configuration_t	 PRACH_Configuration;
			MBSFN_Subframe_Infolist_t	 MBSFN_Subframe_Infolist;
			CSG_Id_t	 CSG_Id;
			MBMS_Service_Area_Identity_List_t	 MBMS_Service_Area_Identity_List;
			MultibandInfoList_t	 MultibandInfoList;
			FreqBandIndicatorPriority_t	 FreqBandIndicatorPriority;
			BandwidthReducedSI_t	 BandwidthReducedSI;
			ProtectedEUTRAResourceIndication_t	 ProtectedEUTRAResourceIndication;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ServedCell_Information_ExtIEs_t;
typedef struct SpecialSubframe_Info_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct SpecialSubframe_Info_ExtIEs__extensionValue {
		SpecialSubframe_Info_ExtIEs__extensionValue_PR present;
		union SpecialSubframe_Info_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} SpecialSubframe_Info_ExtIEs_t;
typedef struct SubbandCQI_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct SubbandCQI_ExtIEs__extensionValue {
		SubbandCQI_ExtIEs__extensionValue_PR present;
		union SubbandCQI_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} SubbandCQI_ExtIEs_t;
typedef struct SubbandCQIItem_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct SubbandCQIItem_ExtIEs__extensionValue {
		SubbandCQIItem_ExtIEs__extensionValue_PR present;
		union SubbandCQIItem_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} SubbandCQIItem_ExtIEs_t;
typedef struct SULInformation_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct SULInformation_ExtIEs__extensionValue {
		SULInformation_ExtIEs__extensionValue_PR present;
		union SULInformation_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} SULInformation_ExtIEs_t;
typedef struct SupportedSULFreqBandItem_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct SupportedSULFreqBandItem_ExtIEs__extensionValue {
		SupportedSULFreqBandItem_ExtIEs__extensionValue_PR present;
		union SupportedSULFreqBandItem_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} SupportedSULFreqBandItem_ExtIEs_t;
typedef struct TDD_Info_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct TDD_Info_ExtIEs__extensionValue {
		TDD_Info_ExtIEs__extensionValue_PR present;
		union TDD_Info_ExtIEs__extensionValue_u {
			AdditionalSpecialSubframe_Info_t	 AdditionalSpecialSubframe_Info;
			EARFCNExtension_t	 EARFCNExtension;
			AdditionalSpecialSubframeExtension_Info_t	 AdditionalSpecialSubframeExtension_Info;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} TDD_Info_ExtIEs_t;
typedef struct UL_HighInterferenceIndicationInfo_Item_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct UL_HighInterferenceIndicationInfo_Item_ExtIEs__extensionValue {
		UL_HighInterferenceIndicationInfo_Item_ExtIEs__extensionValue_PR present;
		union UL_HighInterferenceIndicationInfo_Item_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} UL_HighInterferenceIndicationInfo_Item_ExtIEs_t;
typedef struct UsableABSInformationFDD_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct UsableABSInformationFDD_ExtIEs__extensionValue {
		UsableABSInformationFDD_ExtIEs__extensionValue_PR present;
		union UsableABSInformationFDD_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} UsableABSInformationFDD_ExtIEs_t;
typedef struct UsableABSInformationTDD_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct UsableABSInformationTDD_ExtIEs__extensionValue {
		UsableABSInformationTDD_ExtIEs__extensionValue_PR present;
		union UsableABSInformationTDD_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} UsableABSInformationTDD_ExtIEs_t;
typedef struct WidebandCQI_ExtIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct WidebandCQI_ExtIEs__extensionValue {
		WidebandCQI_ExtIEs__extensionValue_PR present;
		union WidebandCQI_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} WidebandCQI_ExtIEs_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_CellInformation_Item_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_CellInformation_Item_ExtIEs_specs_1;
extern asn_TYPE_member_t asn_MBR_CellInformation_Item_ExtIEs_1[3];
extern asn_TYPE_descriptor_t asn_DEF_ServedCellsToModify_Item_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ServedCellsToModify_Item_ExtIEs_specs_5;
extern asn_TYPE_member_t asn_MBR_ServedCellsToModify_Item_ExtIEs_5[3];
extern asn_TYPE_descriptor_t asn_DEF_CellToReport_Item_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_CellToReport_Item_ExtIEs_specs_9;
extern asn_TYPE_member_t asn_MBR_CellToReport_Item_ExtIEs_9[3];
extern asn_TYPE_descriptor_t asn_DEF_MeasurementInitiationResult_Item_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_MeasurementInitiationResult_Item_ExtIEs_specs_13;
extern asn_TYPE_member_t asn_MBR_MeasurementInitiationResult_Item_ExtIEs_13[3];
extern asn_TYPE_descriptor_t asn_DEF_MeasurementFailureCause_Item_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_MeasurementFailureCause_Item_ExtIEs_specs_17;
extern asn_TYPE_member_t asn_MBR_MeasurementFailureCause_Item_ExtIEs_17[3];
extern asn_TYPE_descriptor_t asn_DEF_CompleteFailureCauseInformation_Item_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_CompleteFailureCauseInformation_Item_ExtIEs_specs_21;
extern asn_TYPE_member_t asn_MBR_CompleteFailureCauseInformation_Item_ExtIEs_21[3];
extern asn_TYPE_descriptor_t asn_DEF_CellMeasurementResult_Item_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_CellMeasurementResult_Item_ExtIEs_specs_25;
extern asn_TYPE_member_t asn_MBR_CellMeasurementResult_Item_ExtIEs_25[3];
extern asn_TYPE_descriptor_t asn_DEF_ResponseInformationSeNBReconfComp_SuccessItemExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ResponseInformationSeNBReconfComp_SuccessItemExtIEs_specs_29;
extern asn_TYPE_member_t asn_MBR_ResponseInformationSeNBReconfComp_SuccessItemExtIEs_29[3];
extern asn_TYPE_descriptor_t asn_DEF_ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs_specs_33;
extern asn_TYPE_member_t asn_MBR_ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs_33[3];
extern asn_TYPE_descriptor_t asn_DEF_ServedEUTRAcellsENDCX2Management_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ServedEUTRAcellsENDCX2Management_ExtIEs_specs_37;
extern asn_TYPE_member_t asn_MBR_ServedEUTRAcellsENDCX2Management_ExtIEs_37[3];
extern asn_TYPE_descriptor_t asn_DEF_En_gNBServedCells_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_En_gNBServedCells_ExtIEs_specs_41;
extern asn_TYPE_member_t asn_MBR_En_gNBServedCells_ExtIEs_41[3];
extern asn_TYPE_descriptor_t asn_DEF_ServedNRCell_Information_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ServedNRCell_Information_ExtIEs_specs_45;
extern asn_TYPE_member_t asn_MBR_ServedNRCell_Information_ExtIEs_45[3];
extern asn_TYPE_descriptor_t asn_DEF_FDD_InfoServedNRCell_Information_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_FDD_InfoServedNRCell_Information_ExtIEs_specs_49;
extern asn_TYPE_member_t asn_MBR_FDD_InfoServedNRCell_Information_ExtIEs_49[3];
extern asn_TYPE_descriptor_t asn_DEF_FDD_InfoNeighbourServedNRCell_Information_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_FDD_InfoNeighbourServedNRCell_Information_ExtIEs_specs_53;
extern asn_TYPE_member_t asn_MBR_FDD_InfoNeighbourServedNRCell_Information_ExtIEs_53[3];
extern asn_TYPE_descriptor_t asn_DEF_TDD_InfoServedNRCell_Information_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_TDD_InfoServedNRCell_Information_ExtIEs_specs_57;
extern asn_TYPE_member_t asn_MBR_TDD_InfoServedNRCell_Information_ExtIEs_57[3];
extern asn_TYPE_descriptor_t asn_DEF_TDD_InfoNeighbourServedNRCell_Information_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_TDD_InfoNeighbourServedNRCell_Information_ExtIEs_specs_61;
extern asn_TYPE_member_t asn_MBR_TDD_InfoNeighbourServedNRCell_Information_ExtIEs_61[3];
extern asn_TYPE_descriptor_t asn_DEF_NRNeighbour_Information_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_NRNeighbour_Information_ExtIEs_specs_65;
extern asn_TYPE_member_t asn_MBR_NRNeighbour_Information_ExtIEs_65[3];
extern asn_TYPE_descriptor_t asn_DEF_Limited_list_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_Limited_list_ExtIEs_specs_69;
extern asn_TYPE_member_t asn_MBR_Limited_list_ExtIEs_69[3];
extern asn_TYPE_descriptor_t asn_DEF_ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs_specs_73;
extern asn_TYPE_member_t asn_MBR_ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs_73[3];
extern asn_TYPE_descriptor_t asn_DEF_ServedNRCellsToModify_Item_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ServedNRCellsToModify_Item_ExtIEs_specs_77;
extern asn_TYPE_member_t asn_MBR_ServedNRCellsToModify_Item_ExtIEs_77[3];
extern asn_TYPE_descriptor_t asn_DEF_ABSInformationFDD_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ABSInformationFDD_ExtIEs_specs_81;
extern asn_TYPE_member_t asn_MBR_ABSInformationFDD_ExtIEs_81[3];
extern asn_TYPE_descriptor_t asn_DEF_ABSInformationTDD_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ABSInformationTDD_ExtIEs_specs_85;
extern asn_TYPE_member_t asn_MBR_ABSInformationTDD_ExtIEs_85[3];
extern asn_TYPE_descriptor_t asn_DEF_ABS_Status_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ABS_Status_ExtIEs_specs_89;
extern asn_TYPE_member_t asn_MBR_ABS_Status_ExtIEs_89[3];
extern asn_TYPE_descriptor_t asn_DEF_AdditionalSpecialSubframe_Info_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_AdditionalSpecialSubframe_Info_ExtIEs_specs_93;
extern asn_TYPE_member_t asn_MBR_AdditionalSpecialSubframe_Info_ExtIEs_93[3];
extern asn_TYPE_descriptor_t asn_DEF_AdditionalSpecialSubframeExtension_Info_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_AdditionalSpecialSubframeExtension_Info_ExtIEs_specs_97;
extern asn_TYPE_member_t asn_MBR_AdditionalSpecialSubframeExtension_Info_ExtIEs_97[3];
extern asn_TYPE_descriptor_t asn_DEF_CellBasedQMC_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_CellBasedQMC_ExtIEs_specs_101;
extern asn_TYPE_member_t asn_MBR_CellBasedQMC_ExtIEs_101[3];
extern asn_TYPE_descriptor_t asn_DEF_CellReplacingInfo_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_CellReplacingInfo_ExtIEs_specs_105;
extern asn_TYPE_member_t asn_MBR_CellReplacingInfo_ExtIEs_105[3];
extern asn_TYPE_descriptor_t asn_DEF_CoMPHypothesisSetItem_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_CoMPHypothesisSetItem_ExtIEs_specs_109;
extern asn_TYPE_member_t asn_MBR_CoMPHypothesisSetItem_ExtIEs_109[3];
extern asn_TYPE_descriptor_t asn_DEF_CoMPInformation_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_CoMPInformation_ExtIEs_specs_113;
extern asn_TYPE_member_t asn_MBR_CoMPInformation_ExtIEs_113[3];
extern asn_TYPE_descriptor_t asn_DEF_CoMPInformationItem_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_CoMPInformationItem_ExtIEs_specs_117;
extern asn_TYPE_member_t asn_MBR_CoMPInformationItem_ExtIEs_117[3];
extern asn_TYPE_descriptor_t asn_DEF_CoMPInformationStartTime_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_CoMPInformationStartTime_ExtIEs_specs_121;
extern asn_TYPE_member_t asn_MBR_CoMPInformationStartTime_ExtIEs_121[3];
extern asn_TYPE_descriptor_t asn_DEF_CompositeAvailableCapacity_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_CompositeAvailableCapacity_ExtIEs_specs_125;
extern asn_TYPE_member_t asn_MBR_CompositeAvailableCapacity_ExtIEs_125[3];
extern asn_TYPE_descriptor_t asn_DEF_CompositeAvailableCapacityGroup_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_CompositeAvailableCapacityGroup_ExtIEs_specs_129;
extern asn_TYPE_member_t asn_MBR_CompositeAvailableCapacityGroup_ExtIEs_129[3];
extern asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_CriticalityDiagnostics_ExtIEs_specs_133;
extern asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_ExtIEs_133[3];
extern asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics_IE_List_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_CriticalityDiagnostics_IE_List_ExtIEs_specs_137;
extern asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_IE_List_ExtIEs_137[3];
extern asn_TYPE_descriptor_t asn_DEF_CSIReportList_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_CSIReportList_ExtIEs_specs_141;
extern asn_TYPE_member_t asn_MBR_CSIReportList_ExtIEs_141[3];
extern asn_TYPE_descriptor_t asn_DEF_CSIReportPerCSIProcess_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_CSIReportPerCSIProcess_ExtIEs_specs_145;
extern asn_TYPE_member_t asn_MBR_CSIReportPerCSIProcess_ExtIEs_145[3];
extern asn_TYPE_descriptor_t asn_DEF_CSIReportPerCSIProcessItem_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_CSIReportPerCSIProcessItem_ExtIEs_specs_149;
extern asn_TYPE_member_t asn_MBR_CSIReportPerCSIProcessItem_ExtIEs_149[3];
extern asn_TYPE_descriptor_t asn_DEF_DynamicNAICSInformation_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_DynamicNAICSInformation_ExtIEs_specs_153;
extern asn_TYPE_member_t asn_MBR_DynamicNAICSInformation_ExtIEs_153[3];
extern asn_TYPE_descriptor_t asn_DEF_ECGI_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ECGI_ExtIEs_specs_157;
extern asn_TYPE_member_t asn_MBR_ECGI_ExtIEs_157[3];
extern asn_TYPE_descriptor_t asn_DEF_EnhancedRNTP_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_EnhancedRNTP_ExtIEs_specs_161;
extern asn_TYPE_member_t asn_MBR_EnhancedRNTP_ExtIEs_161[3];
extern asn_TYPE_descriptor_t asn_DEF_EnhancedRNTPStartTime_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_EnhancedRNTPStartTime_ExtIEs_specs_165;
extern asn_TYPE_member_t asn_MBR_EnhancedRNTPStartTime_ExtIEs_165[3];
extern asn_TYPE_descriptor_t asn_DEF_ExtendedULInterferenceOverloadInfo_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ExtendedULInterferenceOverloadInfo_ExtIEs_specs_169;
extern asn_TYPE_member_t asn_MBR_ExtendedULInterferenceOverloadInfo_ExtIEs_169[3];
extern asn_TYPE_descriptor_t asn_DEF_FDD_Info_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_FDD_Info_ExtIEs_specs_173;
extern asn_TYPE_member_t asn_MBR_FDD_Info_ExtIEs_173[3];
extern asn_TYPE_descriptor_t asn_DEF_FreqBandNrItem_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_FreqBandNrItem_ExtIEs_specs_177;
extern asn_TYPE_member_t asn_MBR_FreqBandNrItem_ExtIEs_177[3];
extern asn_TYPE_descriptor_t asn_DEF_GlobalENB_ID_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_GlobalENB_ID_ExtIEs_specs_181;
extern asn_TYPE_member_t asn_MBR_GlobalENB_ID_ExtIEs_181[3];
extern asn_TYPE_descriptor_t asn_DEF_GlobalGNB_ID_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_GlobalGNB_ID_ExtIEs_specs_185;
extern asn_TYPE_member_t asn_MBR_GlobalGNB_ID_ExtIEs_185[3];
extern asn_TYPE_descriptor_t asn_DEF_GU_Group_ID_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_GU_Group_ID_ExtIEs_specs_189;
extern asn_TYPE_member_t asn_MBR_GU_Group_ID_ExtIEs_189[3];
extern asn_TYPE_descriptor_t asn_DEF_HWLoadIndicator_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_HWLoadIndicator_ExtIEs_specs_193;
extern asn_TYPE_member_t asn_MBR_HWLoadIndicator_ExtIEs_193[3];
extern asn_TYPE_descriptor_t asn_DEF_MBSFN_Subframe_Info_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_MBSFN_Subframe_Info_ExtIEs_specs_197;
extern asn_TYPE_member_t asn_MBR_MBSFN_Subframe_Info_ExtIEs_197[3];
extern asn_TYPE_descriptor_t asn_DEF_BandInfo_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_BandInfo_ExtIEs_specs_201;
extern asn_TYPE_member_t asn_MBR_BandInfo_ExtIEs_201[3];
extern asn_TYPE_descriptor_t asn_DEF_Neighbour_Information_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_Neighbour_Information_ExtIEs_specs_205;
extern asn_TYPE_member_t asn_MBR_Neighbour_Information_ExtIEs_205[3];
extern asn_TYPE_descriptor_t asn_DEF_NRFreqInfo_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_NRFreqInfo_ExtIEs_specs_209;
extern asn_TYPE_member_t asn_MBR_NRFreqInfo_ExtIEs_209[3];
extern asn_TYPE_descriptor_t asn_DEF_NRCGI_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_NRCGI_ExtIEs_specs_213;
extern asn_TYPE_member_t asn_MBR_NRCGI_ExtIEs_213[3];
extern asn_TYPE_descriptor_t asn_DEF_NR_TxBW_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_NR_TxBW_ExtIEs_specs_217;
extern asn_TYPE_member_t asn_MBR_NR_TxBW_ExtIEs_217[3];
extern asn_TYPE_descriptor_t asn_DEF_PRACH_Configuration_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_PRACH_Configuration_ExtIEs_specs_221;
extern asn_TYPE_member_t asn_MBR_PRACH_Configuration_ExtIEs_221[3];
extern asn_TYPE_descriptor_t asn_DEF_ProtectedEUTRAResourceIndication_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ProtectedEUTRAResourceIndication_ExtIEs_specs_225;
extern asn_TYPE_member_t asn_MBR_ProtectedEUTRAResourceIndication_ExtIEs_225[3];
extern asn_TYPE_descriptor_t asn_DEF_ProtectedFootprintTimePattern_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ProtectedFootprintTimePattern_ExtIEs_specs_229;
extern asn_TYPE_member_t asn_MBR_ProtectedFootprintTimePattern_ExtIEs_229[3];
extern asn_TYPE_descriptor_t asn_DEF_ProtectedResourceList_Item_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ProtectedResourceList_Item_ExtIEs_specs_233;
extern asn_TYPE_member_t asn_MBR_ProtectedResourceList_Item_ExtIEs_233[3];
extern asn_TYPE_descriptor_t asn_DEF_RadioResourceStatus_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_RadioResourceStatus_ExtIEs_specs_237;
extern asn_TYPE_member_t asn_MBR_RadioResourceStatus_ExtIEs_237[3];
extern asn_TYPE_descriptor_t asn_DEF_RelativeNarrowbandTxPower_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_RelativeNarrowbandTxPower_ExtIEs_specs_241;
extern asn_TYPE_member_t asn_MBR_RelativeNarrowbandTxPower_ExtIEs_241[3];
extern asn_TYPE_descriptor_t asn_DEF_RSRPMeasurementResult_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_RSRPMeasurementResult_ExtIEs_specs_245;
extern asn_TYPE_member_t asn_MBR_RSRPMeasurementResult_ExtIEs_245[3];
extern asn_TYPE_descriptor_t asn_DEF_RSRPMRList_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_RSRPMRList_ExtIEs_specs_249;
extern asn_TYPE_member_t asn_MBR_RSRPMRList_ExtIEs_249[3];
extern asn_TYPE_descriptor_t asn_DEF_S1TNLLoadIndicator_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_S1TNLLoadIndicator_ExtIEs_specs_253;
extern asn_TYPE_member_t asn_MBR_S1TNLLoadIndicator_ExtIEs_253[3];
extern asn_TYPE_descriptor_t asn_DEF_ServedCell_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ServedCell_ExtIEs_specs_257;
extern asn_TYPE_member_t asn_MBR_ServedCell_ExtIEs_257[3];
extern asn_TYPE_descriptor_t asn_DEF_ServedCell_Information_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ServedCell_Information_ExtIEs_specs_261;
extern asn_TYPE_member_t asn_MBR_ServedCell_Information_ExtIEs_261[3];
extern asn_TYPE_descriptor_t asn_DEF_SpecialSubframe_Info_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_SpecialSubframe_Info_ExtIEs_specs_265;
extern asn_TYPE_member_t asn_MBR_SpecialSubframe_Info_ExtIEs_265[3];
extern asn_TYPE_descriptor_t asn_DEF_SubbandCQI_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_SubbandCQI_ExtIEs_specs_269;
extern asn_TYPE_member_t asn_MBR_SubbandCQI_ExtIEs_269[3];
extern asn_TYPE_descriptor_t asn_DEF_SubbandCQIItem_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_SubbandCQIItem_ExtIEs_specs_273;
extern asn_TYPE_member_t asn_MBR_SubbandCQIItem_ExtIEs_273[3];
extern asn_TYPE_descriptor_t asn_DEF_SULInformation_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_SULInformation_ExtIEs_specs_277;
extern asn_TYPE_member_t asn_MBR_SULInformation_ExtIEs_277[3];
extern asn_TYPE_descriptor_t asn_DEF_SupportedSULFreqBandItem_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_SupportedSULFreqBandItem_ExtIEs_specs_281;
extern asn_TYPE_member_t asn_MBR_SupportedSULFreqBandItem_ExtIEs_281[3];
extern asn_TYPE_descriptor_t asn_DEF_TDD_Info_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_TDD_Info_ExtIEs_specs_285;
extern asn_TYPE_member_t asn_MBR_TDD_Info_ExtIEs_285[3];
extern asn_TYPE_descriptor_t asn_DEF_UL_HighInterferenceIndicationInfo_Item_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_UL_HighInterferenceIndicationInfo_Item_ExtIEs_specs_289;
extern asn_TYPE_member_t asn_MBR_UL_HighInterferenceIndicationInfo_Item_ExtIEs_289[3];
extern asn_TYPE_descriptor_t asn_DEF_UsableABSInformationFDD_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_UsableABSInformationFDD_ExtIEs_specs_293;
extern asn_TYPE_member_t asn_MBR_UsableABSInformationFDD_ExtIEs_293[3];
extern asn_TYPE_descriptor_t asn_DEF_UsableABSInformationTDD_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_UsableABSInformationTDD_ExtIEs_specs_297;
extern asn_TYPE_member_t asn_MBR_UsableABSInformationTDD_ExtIEs_297[3];
extern asn_TYPE_descriptor_t asn_DEF_WidebandCQI_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_WidebandCQI_ExtIEs_specs_301;
extern asn_TYPE_member_t asn_MBR_WidebandCQI_ExtIEs_301[3];

#ifdef __cplusplus
}
#endif

#endif	/* _ProtocolExtensionField_H_ */
#include "asn_internal.h"
