/*
 * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
 * From ASN.1 module "X2AP-Containers"
 * 	found in "Spec/e2ap-v031ex.asn"
 * 	`asn1c -fcompound-names -fno-include-deps -findirect-choice -gen-PER`
 */

#include "ProtocolExtensionContainer.h"

#include "ProtocolExtensionField.h"
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P0_constr_1 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P0_constr_1 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P1_constr_3 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P1_constr_3 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P2_constr_5 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P2_constr_5 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P3_constr_7 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P3_constr_7 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P4_constr_9 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P4_constr_9 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P5_constr_11 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P5_constr_11 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P6_constr_13 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P6_constr_13 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P7_constr_15 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P7_constr_15 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P8_constr_17 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P8_constr_17 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P9_constr_19 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P9_constr_19 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P10_constr_21 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P10_constr_21 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P11_constr_23 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P11_constr_23 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P12_constr_25 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P12_constr_25 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P13_constr_27 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P13_constr_27 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P14_constr_29 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P14_constr_29 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P15_constr_31 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P15_constr_31 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P16_constr_33 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P16_constr_33 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P17_constr_35 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P17_constr_35 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P18_constr_37 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P18_constr_37 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P19_constr_39 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P19_constr_39 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P20_constr_41 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P20_constr_41 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P21_constr_43 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P21_constr_43 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P22_constr_45 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P22_constr_45 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P23_constr_47 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P23_constr_47 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P24_constr_49 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P24_constr_49 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P25_constr_51 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P25_constr_51 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P26_constr_53 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P26_constr_53 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P27_constr_55 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P27_constr_55 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P28_constr_57 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P28_constr_57 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P29_constr_59 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P29_constr_59 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P30_constr_61 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P30_constr_61 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P31_constr_63 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P31_constr_63 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P32_constr_65 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P32_constr_65 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P33_constr_67 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P33_constr_67 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P34_constr_69 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P34_constr_69 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P35_constr_71 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P35_constr_71 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P36_constr_73 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P36_constr_73 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P37_constr_75 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P37_constr_75 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P38_constr_77 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P38_constr_77 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P39_constr_79 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P39_constr_79 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P40_constr_81 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P40_constr_81 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P41_constr_83 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P41_constr_83 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P42_constr_85 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P42_constr_85 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P43_constr_87 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P43_constr_87 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P44_constr_89 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P44_constr_89 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P45_constr_91 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P45_constr_91 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P46_constr_93 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P46_constr_93 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P47_constr_95 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P47_constr_95 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P48_constr_97 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P48_constr_97 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P49_constr_99 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P49_constr_99 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P50_constr_101 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P50_constr_101 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P51_constr_103 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P51_constr_103 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P52_constr_105 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P52_constr_105 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P53_constr_107 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P53_constr_107 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P54_constr_109 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P54_constr_109 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P55_constr_111 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P55_constr_111 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P56_constr_113 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P56_constr_113 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P57_constr_115 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P57_constr_115 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P58_constr_117 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P58_constr_117 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P59_constr_119 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P59_constr_119 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P60_constr_121 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P60_constr_121 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P61_constr_123 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P61_constr_123 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P62_constr_125 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P62_constr_125 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P63_constr_127 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P63_constr_127 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P64_constr_129 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P64_constr_129 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P65_constr_131 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P65_constr_131 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P66_constr_133 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P66_constr_133 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P67_constr_135 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P67_constr_135 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P68_constr_137 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P68_constr_137 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P69_constr_139 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P69_constr_139 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P70_constr_141 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P70_constr_141 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P71_constr_143 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P71_constr_143 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P72_constr_145 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P72_constr_145 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P73_constr_147 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P73_constr_147 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P74_constr_149 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P74_constr_149 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P75_constr_151 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P75_constr_151 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P76_constr_153 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P76_constr_153 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P77_constr_155 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P77_constr_155 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P78_constr_157 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P78_constr_157 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P79_constr_159 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P79_constr_159 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P80_constr_161 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P80_constr_161 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P81_constr_163 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P81_constr_163 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P82_constr_165 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P82_constr_165 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P83_constr_167 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P83_constr_167 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P84_constr_169 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P84_constr_169 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P85_constr_171 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P85_constr_171 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P86_constr_173 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P86_constr_173 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P87_constr_175 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P87_constr_175 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P88_constr_177 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P88_constr_177 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P89_constr_179 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P89_constr_179 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P90_constr_181 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P90_constr_181 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P91_constr_183 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P91_constr_183 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P92_constr_185 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P92_constr_185 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P93_constr_187 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P93_constr_187 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P94_constr_189 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P94_constr_189 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P95_constr_191 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P95_constr_191 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P96_constr_193 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P96_constr_193 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P97_constr_195 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P97_constr_195 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P98_constr_197 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P98_constr_197 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P99_constr_199 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P99_constr_199 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P100_constr_201 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P100_constr_201 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P101_constr_203 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P101_constr_203 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P102_constr_205 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P102_constr_205 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P103_constr_207 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P103_constr_207 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P104_constr_209 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P104_constr_209 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P105_constr_211 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P105_constr_211 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P106_constr_213 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P106_constr_213 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P107_constr_215 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P107_constr_215 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P108_constr_217 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P108_constr_217 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P109_constr_219 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P109_constr_219 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P110_constr_221 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P110_constr_221 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P111_constr_223 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P111_constr_223 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P112_constr_225 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P112_constr_225 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P113_constr_227 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P113_constr_227 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P114_constr_229 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P114_constr_229 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P115_constr_231 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P115_constr_231 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P116_constr_233 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P116_constr_233 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P117_constr_235 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P117_constr_235 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P118_constr_237 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P118_constr_237 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P119_constr_239 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P119_constr_239 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P120_constr_241 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P120_constr_241 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P121_constr_243 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P121_constr_243 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P122_constr_245 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P122_constr_245 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P123_constr_247 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P123_constr_247 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P124_constr_249 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P124_constr_249 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P125_constr_251 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P125_constr_251 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P126_constr_253 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P126_constr_253 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P127_constr_255 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P127_constr_255 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P128_constr_257 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P128_constr_257 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P129_constr_259 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P129_constr_259 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P130_constr_261 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P130_constr_261 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P131_constr_263 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P131_constr_263 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P132_constr_265 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P132_constr_265 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P133_constr_267 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P133_constr_267 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P134_constr_269 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P134_constr_269 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P135_constr_271 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P135_constr_271 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P136_constr_273 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P136_constr_273 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P137_constr_275 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P137_constr_275 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P138_constr_277 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P138_constr_277 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P139_constr_279 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P139_constr_279 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P140_constr_281 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P140_constr_281 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P141_constr_283 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P141_constr_283 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P142_constr_285 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P142_constr_285 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P143_constr_287 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P143_constr_287 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P144_constr_289 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P144_constr_289 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P145_constr_291 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P145_constr_291 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P146_constr_293 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P146_constr_293 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P147_constr_295 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P147_constr_295 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P148_constr_297 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P148_constr_297 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P149_constr_299 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P149_constr_299 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P150_constr_301 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P150_constr_301 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P151_constr_303 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P151_constr_303 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P152_constr_305 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P152_constr_305 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P153_constr_307 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P153_constr_307 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P154_constr_309 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P154_constr_309 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P155_constr_311 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P155_constr_311 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P156_constr_313 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P156_constr_313 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P157_constr_315 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P157_constr_315 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P158_constr_317 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P158_constr_317 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P159_constr_319 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P159_constr_319 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P160_constr_321 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P160_constr_321 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P161_constr_323 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P161_constr_323 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P162_constr_325 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P162_constr_325 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P163_constr_327 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P163_constr_327 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P164_constr_329 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P164_constr_329 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P165_constr_331 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P165_constr_331 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P166_constr_333 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P166_constr_333 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P167_constr_335 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P167_constr_335 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P168_constr_337 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P168_constr_337 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P169_constr_339 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P169_constr_339 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P170_constr_341 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P170_constr_341 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P171_constr_343 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P171_constr_343 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P172_constr_345 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P172_constr_345 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P173_constr_347 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P173_constr_347 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P174_constr_349 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P174_constr_349 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P175_constr_351 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P175_constr_351 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P176_constr_353 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P176_constr_353 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P177_constr_355 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P177_constr_355 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P178_constr_357 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P178_constr_357 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P179_constr_359 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P179_constr_359 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P180_constr_361 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P180_constr_361 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P181_constr_363 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P181_constr_363 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P182_constr_365 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P182_constr_365 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P183_constr_367 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P183_constr_367 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P184_constr_369 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P184_constr_369 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P185_constr_371 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P185_constr_371 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P186_constr_373 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P186_constr_373 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P187_constr_375 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P187_constr_375 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P188_constr_377 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P188_constr_377 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P189_constr_379 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P189_constr_379 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P190_constr_381 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P190_constr_381 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P191_constr_383 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P191_constr_383 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P192_constr_385 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P192_constr_385 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P193_constr_387 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P193_constr_387 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P194_constr_389 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P194_constr_389 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P195_constr_391 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P195_constr_391 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P196_constr_393 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P196_constr_393 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P197_constr_395 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P197_constr_395 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P198_constr_397 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P198_constr_397 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P199_constr_399 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P199_constr_399 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P200_constr_401 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P200_constr_401 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P201_constr_403 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P201_constr_403 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P202_constr_405 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P202_constr_405 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P203_constr_407 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P203_constr_407 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P204_constr_409 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P204_constr_409 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P205_constr_411 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P205_constr_411 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P206_constr_413 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P206_constr_413 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P207_constr_415 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P207_constr_415 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P208_constr_417 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P208_constr_417 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P209_constr_419 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P209_constr_419 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P210_constr_421 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P210_constr_421 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P211_constr_423 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P211_constr_423 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P212_constr_425 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P212_constr_425 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P213_constr_427 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P213_constr_427 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P214_constr_429 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P214_constr_429 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P215_constr_431 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P215_constr_431 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P216_constr_433 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P216_constr_433 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P217_constr_435 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P217_constr_435 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P218_constr_437 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P218_constr_437 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P219_constr_439 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P219_constr_439 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P220_constr_441 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P220_constr_441 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P221_constr_443 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P221_constr_443 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolExtensionContainer_9566P222_constr_445 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(1..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_9566P222_constr_445 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
	0, 0	/* No PER value map */
};
asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P0_1[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_UE_ContextInformation_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P0_tags_1[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P0_specs_1 = {
	sizeof(struct ProtocolExtensionContainer_9566P0),
	offsetof(struct ProtocolExtensionContainer_9566P0, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P0 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P0_tags_1,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P0_tags_1)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P0_tags_1[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P0_tags_1,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P0_tags_1)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P0_tags_1[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P0_constr_1, &asn_PER_type_ProtocolExtensionContainer_9566P0_constr_1, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P0_1,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P0_specs_1	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P1_3[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_ToBeSetup_ItemExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P1_tags_3[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P1_specs_3 = {
	sizeof(struct ProtocolExtensionContainer_9566P1),
	offsetof(struct ProtocolExtensionContainer_9566P1, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P1 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P1_tags_3,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P1_tags_3)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P1_tags_3[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P1_tags_3,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P1_tags_3)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P1_tags_3[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P1_constr_3, &asn_PER_type_ProtocolExtensionContainer_9566P1_constr_3, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P1_3,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P1_specs_3	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P2_5[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_UE_ContextReferenceAtSeNB_ItemExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P2_tags_5[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P2_specs_5 = {
	sizeof(struct ProtocolExtensionContainer_9566P2),
	offsetof(struct ProtocolExtensionContainer_9566P2, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P2 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P2_tags_5,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P2_tags_5)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P2_tags_5[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P2_tags_5,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P2_tags_5)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P2_tags_5[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P2_constr_5, &asn_PER_type_ProtocolExtensionContainer_9566P2_constr_5, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P2_5,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P2_specs_5	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P3_7[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_UE_ContextReferenceAtWT_ItemExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P3_tags_7[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P3_specs_7 = {
	sizeof(struct ProtocolExtensionContainer_9566P3),
	offsetof(struct ProtocolExtensionContainer_9566P3, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P3 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P3_tags_7,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P3_tags_7)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P3_tags_7[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P3_tags_7,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P3_tags_7)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P3_tags_7[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P3_constr_7, &asn_PER_type_ProtocolExtensionContainer_9566P3_constr_7, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P3_7,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P3_specs_7	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P4_9[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_UE_ContextReferenceAtSgNB_ItemExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P4_tags_9[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P4_specs_9 = {
	sizeof(struct ProtocolExtensionContainer_9566P4),
	offsetof(struct ProtocolExtensionContainer_9566P4, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P4 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P4_tags_9,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P4_tags_9)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P4_tags_9[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P4_tags_9,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P4_tags_9)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P4_tags_9[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P4_constr_9, &asn_PER_type_ProtocolExtensionContainer_9566P4_constr_9, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P4_9,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P4_specs_9	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P5_11[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_Admitted_Item_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P5_tags_11[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P5_specs_11 = {
	sizeof(struct ProtocolExtensionContainer_9566P5),
	offsetof(struct ProtocolExtensionContainer_9566P5, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P5 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P5_tags_11,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P5_tags_11)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P5_tags_11[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P5_tags_11,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P5_tags_11)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P5_tags_11[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P5_constr_11, &asn_PER_type_ProtocolExtensionContainer_9566P5_constr_11, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P5_11,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P5_specs_11	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P6_13[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_SubjectToStatusTransfer_ItemExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P6_tags_13[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P6_specs_13 = {
	sizeof(struct ProtocolExtensionContainer_9566P6),
	offsetof(struct ProtocolExtensionContainer_9566P6, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P6 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P6_tags_13,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P6_tags_13)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P6_tags_13[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P6_tags_13,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P6_tags_13)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P6_tags_13[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P6_constr_13, &asn_PER_type_ProtocolExtensionContainer_9566P6_constr_13, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P6_13,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P6_specs_13	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P7_15[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_CellInformation_Item_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P7_tags_15[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P7_specs_15 = {
	sizeof(struct ProtocolExtensionContainer_9566P7),
	offsetof(struct ProtocolExtensionContainer_9566P7, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P7 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P7_tags_15,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P7_tags_15)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P7_tags_15[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P7_tags_15,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P7_tags_15)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P7_tags_15[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P7_constr_15, &asn_PER_type_ProtocolExtensionContainer_9566P7_constr_15, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P7_15,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P7_specs_15	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P8_17[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ServedCellsToModify_Item_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P8_tags_17[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P8_specs_17 = {
	sizeof(struct ProtocolExtensionContainer_9566P8),
	offsetof(struct ProtocolExtensionContainer_9566P8, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P8 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P8_tags_17,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P8_tags_17)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P8_tags_17[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P8_tags_17,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P8_tags_17)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P8_tags_17[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P8_constr_17, &asn_PER_type_ProtocolExtensionContainer_9566P8_constr_17, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P8_17,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P8_specs_17	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P9_19[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_CellToReport_Item_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P9_tags_19[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P9_specs_19 = {
	sizeof(struct ProtocolExtensionContainer_9566P9),
	offsetof(struct ProtocolExtensionContainer_9566P9, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P9 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P9_tags_19,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P9_tags_19)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P9_tags_19[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P9_tags_19,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P9_tags_19)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P9_tags_19[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P9_constr_19, &asn_PER_type_ProtocolExtensionContainer_9566P9_constr_19, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P9_19,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P9_specs_19	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P10_21[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_MeasurementInitiationResult_Item_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P10_tags_21[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P10_specs_21 = {
	sizeof(struct ProtocolExtensionContainer_9566P10),
	offsetof(struct ProtocolExtensionContainer_9566P10, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P10 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P10_tags_21,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P10_tags_21)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P10_tags_21[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P10_tags_21,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P10_tags_21)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P10_tags_21[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P10_constr_21, &asn_PER_type_ProtocolExtensionContainer_9566P10_constr_21, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P10_21,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P10_specs_21	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P11_23[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_MeasurementFailureCause_Item_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P11_tags_23[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P11_specs_23 = {
	sizeof(struct ProtocolExtensionContainer_9566P11),
	offsetof(struct ProtocolExtensionContainer_9566P11, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P11 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P11_tags_23,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P11_tags_23)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P11_tags_23[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P11_tags_23,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P11_tags_23)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P11_tags_23[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P11_constr_23, &asn_PER_type_ProtocolExtensionContainer_9566P11_constr_23, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P11_23,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P11_specs_23	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P12_25[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_CompleteFailureCauseInformation_Item_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P12_tags_25[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P12_specs_25 = {
	sizeof(struct ProtocolExtensionContainer_9566P12),
	offsetof(struct ProtocolExtensionContainer_9566P12, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P12 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P12_tags_25,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P12_tags_25)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P12_tags_25[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P12_tags_25,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P12_tags_25)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P12_tags_25[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P12_constr_25, &asn_PER_type_ProtocolExtensionContainer_9566P12_constr_25, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P12_25,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P12_specs_25	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P13_27[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_CellMeasurementResult_Item_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P13_tags_27[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P13_specs_27 = {
	sizeof(struct ProtocolExtensionContainer_9566P13),
	offsetof(struct ProtocolExtensionContainer_9566P13, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P13 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P13_tags_27,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P13_tags_27)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P13_tags_27[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P13_tags_27,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P13_tags_27)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P13_tags_27[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P13_constr_27, &asn_PER_type_ProtocolExtensionContainer_9566P13_constr_27, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P13_27,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P13_specs_27	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P14_29[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ServedCellsToActivate_Item_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P14_tags_29[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P14_specs_29 = {
	sizeof(struct ProtocolExtensionContainer_9566P14),
	offsetof(struct ProtocolExtensionContainer_9566P14, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P14 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P14_tags_29,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P14_tags_29)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P14_tags_29[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P14_tags_29,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P14_tags_29)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P14_tags_29[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P14_constr_29, &asn_PER_type_ProtocolExtensionContainer_9566P14_constr_29, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P14_29,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P14_specs_29	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P15_31[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ActivatedCellList_Item_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P15_tags_31[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P15_specs_31 = {
	sizeof(struct ProtocolExtensionContainer_9566P15),
	offsetof(struct ProtocolExtensionContainer_9566P15, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P15 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P15_tags_31,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P15_tags_31)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P15_tags_31[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P15_tags_31,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P15_tags_31)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P15_tags_31[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P15_constr_31, &asn_PER_type_ProtocolExtensionContainer_9566P15_constr_31, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P15_31,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P15_specs_31	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P16_33[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_RNL_Header_Item_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P16_tags_33[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P16_specs_33 = {
	sizeof(struct ProtocolExtensionContainer_9566P16),
	offsetof(struct ProtocolExtensionContainer_9566P16, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P16 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P16_tags_33,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P16_tags_33)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P16_tags_33[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P16_tags_33,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P16_tags_33)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P16_tags_33[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P16_constr_33, &asn_PER_type_ProtocolExtensionContainer_9566P16_constr_33, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P16_33,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P16_specs_33	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P17_35[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P17_tags_35[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P17_specs_35 = {
	sizeof(struct ProtocolExtensionContainer_9566P17),
	offsetof(struct ProtocolExtensionContainer_9566P17, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P17 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P17_tags_35,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P17_tags_35)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P17_tags_35[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P17_tags_35,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P17_tags_35)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P17_tags_35[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P17_constr_35, &asn_PER_type_ProtocolExtensionContainer_9566P17_constr_35, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P17_35,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P17_specs_35	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P18_37[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_ToBeAdded_Item_Split_BearerExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P18_tags_37[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P18_specs_37 = {
	sizeof(struct ProtocolExtensionContainer_9566P18),
	offsetof(struct ProtocolExtensionContainer_9566P18, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P18 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P18_tags_37,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P18_tags_37)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P18_tags_37[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P18_tags_37,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P18_tags_37)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P18_tags_37[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P18_constr_37, &asn_PER_type_ProtocolExtensionContainer_9566P18_constr_37, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P18_37,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P18_specs_37	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P19_39[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P19_tags_39[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P19_specs_39 = {
	sizeof(struct ProtocolExtensionContainer_9566P19),
	offsetof(struct ProtocolExtensionContainer_9566P19, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P19 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P19_tags_39,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P19_tags_39)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P19_tags_39[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P19_tags_39,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P19_tags_39)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P19_tags_39[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P19_constr_39, &asn_PER_type_ProtocolExtensionContainer_9566P19_constr_39, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P19_39,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P19_specs_39	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P20_41[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P20_tags_41[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P20_specs_41 = {
	sizeof(struct ProtocolExtensionContainer_9566P20),
	offsetof(struct ProtocolExtensionContainer_9566P20, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P20 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P20_tags_41,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P20_tags_41)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P20_tags_41[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P20_tags_41,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P20_tags_41)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P20_tags_41[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P20_constr_41, &asn_PER_type_ProtocolExtensionContainer_9566P20_constr_41, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P20_41,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P20_specs_41	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P21_43[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ResponseInformationSeNBReconfComp_SuccessItemExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P21_tags_43[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P21_specs_43 = {
	sizeof(struct ProtocolExtensionContainer_9566P21),
	offsetof(struct ProtocolExtensionContainer_9566P21, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P21 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P21_tags_43,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P21_tags_43)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P21_tags_43[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P21_tags_43,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P21_tags_43)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P21_tags_43[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P21_constr_43, &asn_PER_type_ProtocolExtensionContainer_9566P21_constr_43, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P21_43,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P21_specs_43	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P22_45[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P22_tags_45[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P22_specs_45 = {
	sizeof(struct ProtocolExtensionContainer_9566P22),
	offsetof(struct ProtocolExtensionContainer_9566P22, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P22 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P22_tags_45,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P22_tags_45)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P22_tags_45[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P22_tags_45,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P22_tags_45)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P22_tags_45[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P22_constr_45, &asn_PER_type_ProtocolExtensionContainer_9566P22_constr_45, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P22_45,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P22_specs_45	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P23_47[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_UE_ContextInformationSeNBModReqExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P23_tags_47[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P23_specs_47 = {
	sizeof(struct ProtocolExtensionContainer_9566P23),
	offsetof(struct ProtocolExtensionContainer_9566P23, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P23 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P23_tags_47,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P23_tags_47)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P23_tags_47[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P23_tags_47,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P23_tags_47)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P23_tags_47[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P23_constr_47, &asn_PER_type_ProtocolExtensionContainer_9566P23_constr_47, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P23_47,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P23_specs_47	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P24_49[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P24_tags_49[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P24_specs_49 = {
	sizeof(struct ProtocolExtensionContainer_9566P24),
	offsetof(struct ProtocolExtensionContainer_9566P24, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P24 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P24_tags_49,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P24_tags_49)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P24_tags_49[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P24_tags_49,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P24_tags_49)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P24_tags_49[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P24_constr_49, &asn_PER_type_ProtocolExtensionContainer_9566P24_constr_49, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P24_49,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P24_specs_49	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P25_51[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P25_tags_51[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P25_specs_51 = {
	sizeof(struct ProtocolExtensionContainer_9566P25),
	offsetof(struct ProtocolExtensionContainer_9566P25, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P25 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P25_tags_51,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P25_tags_51)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P25_tags_51[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P25_tags_51,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P25_tags_51)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P25_tags_51[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P25_constr_51, &asn_PER_type_ProtocolExtensionContainer_9566P25_constr_51, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P25_51,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P25_specs_51	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P26_53[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P26_tags_53[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P26_specs_53 = {
	sizeof(struct ProtocolExtensionContainer_9566P26),
	offsetof(struct ProtocolExtensionContainer_9566P26, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P26 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P26_tags_53,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P26_tags_53)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P26_tags_53[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P26_tags_53,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P26_tags_53)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P26_tags_53[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P26_constr_53, &asn_PER_type_ProtocolExtensionContainer_9566P26_constr_53, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P26_53,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P26_specs_53	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P27_55[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P27_tags_55[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P27_specs_55 = {
	sizeof(struct ProtocolExtensionContainer_9566P27),
	offsetof(struct ProtocolExtensionContainer_9566P27, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P27 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P27_tags_55,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P27_tags_55)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P27_tags_55[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P27_tags_55,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P27_tags_55)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P27_tags_55[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P27_constr_55, &asn_PER_type_ProtocolExtensionContainer_9566P27_constr_55, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P27_55,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P27_specs_55	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P28_57[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P28_tags_57[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P28_specs_57 = {
	sizeof(struct ProtocolExtensionContainer_9566P28),
	offsetof(struct ProtocolExtensionContainer_9566P28, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P28 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P28_tags_57,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P28_tags_57)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P28_tags_57[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P28_tags_57,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P28_tags_57)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P28_tags_57[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P28_constr_57, &asn_PER_type_ProtocolExtensionContainer_9566P28_constr_57, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P28_57,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P28_specs_57	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P29_59[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P29_tags_59[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P29_specs_59 = {
	sizeof(struct ProtocolExtensionContainer_9566P29),
	offsetof(struct ProtocolExtensionContainer_9566P29, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P29 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P29_tags_59,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P29_tags_59)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P29_tags_59[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P29_tags_59,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P29_tags_59)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P29_tags_59[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P29_constr_59, &asn_PER_type_ProtocolExtensionContainer_9566P29_constr_59, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P29_59,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P29_specs_59	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P30_61[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P30_tags_61[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P30_specs_61 = {
	sizeof(struct ProtocolExtensionContainer_9566P30),
	offsetof(struct ProtocolExtensionContainer_9566P30, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P30 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P30_tags_61,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P30_tags_61)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P30_tags_61[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P30_tags_61,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P30_tags_61)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P30_tags_61[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P30_constr_61, &asn_PER_type_ProtocolExtensionContainer_9566P30_constr_61, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P30_61,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P30_specs_61	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P31_63[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P31_tags_63[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P31_specs_63 = {
	sizeof(struct ProtocolExtensionContainer_9566P31),
	offsetof(struct ProtocolExtensionContainer_9566P31, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P31 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P31_tags_63,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P31_tags_63)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P31_tags_63[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P31_tags_63,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P31_tags_63)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P31_tags_63[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P31_constr_63, &asn_PER_type_ProtocolExtensionContainer_9566P31_constr_63, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P31_63,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P31_specs_63	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P32_65[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P32_tags_65[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P32_specs_65 = {
	sizeof(struct ProtocolExtensionContainer_9566P32),
	offsetof(struct ProtocolExtensionContainer_9566P32, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P32 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P32_tags_65,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P32_tags_65)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P32_tags_65[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P32_tags_65,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P32_tags_65)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P32_tags_65[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P32_constr_65, &asn_PER_type_ProtocolExtensionContainer_9566P32_constr_65, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P32_65,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P32_specs_65	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P33_67[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P33_tags_67[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P33_specs_67 = {
	sizeof(struct ProtocolExtensionContainer_9566P33),
	offsetof(struct ProtocolExtensionContainer_9566P33, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P33 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P33_tags_67,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P33_tags_67)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P33_tags_67[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P33_tags_67,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P33_tags_67)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P33_tags_67[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P33_constr_67, &asn_PER_type_ProtocolExtensionContainer_9566P33_constr_67, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P33_67,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P33_specs_67	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P34_69[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P34_tags_69[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P34_specs_69 = {
	sizeof(struct ProtocolExtensionContainer_9566P34),
	offsetof(struct ProtocolExtensionContainer_9566P34, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P34 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P34_tags_69,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P34_tags_69)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P34_tags_69[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P34_tags_69,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P34_tags_69)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P34_tags_69[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P34_constr_69, &asn_PER_type_ProtocolExtensionContainer_9566P34_constr_69, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P34_69,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P34_specs_69	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P35_71[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P35_tags_71[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P35_specs_71 = {
	sizeof(struct ProtocolExtensionContainer_9566P35),
	offsetof(struct ProtocolExtensionContainer_9566P35, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P35 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P35_tags_71,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P35_tags_71)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P35_tags_71[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P35_tags_71,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P35_tags_71)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P35_tags_71[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P35_constr_71, &asn_PER_type_ProtocolExtensionContainer_9566P35_constr_71, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P35_71,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P35_specs_71	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P36_73[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_ToBeReleased_ModReqdItemExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P36_tags_73[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P36_specs_73 = {
	sizeof(struct ProtocolExtensionContainer_9566P36),
	offsetof(struct ProtocolExtensionContainer_9566P36, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P36 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P36_tags_73,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P36_tags_73)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P36_tags_73[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P36_tags_73,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P36_tags_73)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P36_tags_73[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P36_constr_73, &asn_PER_type_ProtocolExtensionContainer_9566P36_constr_73, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P36_73,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P36_specs_73	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P37_75[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P37_tags_75[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P37_specs_75 = {
	sizeof(struct ProtocolExtensionContainer_9566P37),
	offsetof(struct ProtocolExtensionContainer_9566P37, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P37 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P37_tags_75,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P37_tags_75)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P37_tags_75[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P37_tags_75,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P37_tags_75)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P37_tags_75[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P37_constr_75, &asn_PER_type_ProtocolExtensionContainer_9566P37_constr_75, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P37_75,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P37_specs_75	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P38_77[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P38_tags_77[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P38_specs_77 = {
	sizeof(struct ProtocolExtensionContainer_9566P38),
	offsetof(struct ProtocolExtensionContainer_9566P38, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P38 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P38_tags_77,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P38_tags_77)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P38_tags_77[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P38_tags_77,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P38_tags_77)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P38_tags_77[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P38_constr_77, &asn_PER_type_ProtocolExtensionContainer_9566P38_constr_77, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P38_77,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P38_specs_77	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P39_79[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P39_tags_79[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P39_specs_79 = {
	sizeof(struct ProtocolExtensionContainer_9566P39),
	offsetof(struct ProtocolExtensionContainer_9566P39, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P39 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P39_tags_79,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P39_tags_79)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P39_tags_79[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P39_tags_79,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P39_tags_79)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P39_tags_79[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P39_constr_79, &asn_PER_type_ProtocolExtensionContainer_9566P39_constr_79, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P39_79,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P39_specs_79	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P40_81[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P40_tags_81[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P40_specs_81 = {
	sizeof(struct ProtocolExtensionContainer_9566P40),
	offsetof(struct ProtocolExtensionContainer_9566P40, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P40 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P40_tags_81,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P40_tags_81)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P40_tags_81[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P40_tags_81,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P40_tags_81)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P40_tags_81[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P40_constr_81, &asn_PER_type_ProtocolExtensionContainer_9566P40_constr_81, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P40_81,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P40_specs_81	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P41_83[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_SubjectToCounterCheckItemExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P41_tags_83[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P41_specs_83 = {
	sizeof(struct ProtocolExtensionContainer_9566P41),
	offsetof(struct ProtocolExtensionContainer_9566P41, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P41 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P41_tags_83,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P41_tags_83)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P41_tags_83[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P41_tags_83,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P41_tags_83)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P41_tags_83[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P41_constr_83, &asn_PER_type_ProtocolExtensionContainer_9566P41_constr_83, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P41_83,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P41_specs_83	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P42_85[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_UE_ContextInformationRetrieve_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P42_tags_85[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P42_specs_85 = {
	sizeof(struct ProtocolExtensionContainer_9566P42),
	offsetof(struct ProtocolExtensionContainer_9566P42, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P42 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P42_tags_85,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P42_tags_85)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P42_tags_85[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P42_tags_85,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P42_tags_85)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P42_tags_85[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P42_constr_85, &asn_PER_type_ProtocolExtensionContainer_9566P42_constr_85, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P42_85,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P42_specs_85	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P43_87[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_ToBeSetupRetrieve_ItemExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P43_tags_87[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P43_specs_87 = {
	sizeof(struct ProtocolExtensionContainer_9566P43),
	offsetof(struct ProtocolExtensionContainer_9566P43, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P43 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P43_tags_87,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P43_tags_87)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P43_tags_87[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P43_tags_87,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P43_tags_87)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P43_tags_87[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P43_constr_87, &asn_PER_type_ProtocolExtensionContainer_9566P43_constr_87, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P43_87,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P43_specs_87	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P44_89[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P44_tags_89[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P44_specs_89 = {
	sizeof(struct ProtocolExtensionContainer_9566P44),
	offsetof(struct ProtocolExtensionContainer_9566P44, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P44 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P44_tags_89,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P44_tags_89)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P44_tags_89[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P44_tags_89,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P44_tags_89)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P44_tags_89[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P44_constr_89, &asn_PER_type_ProtocolExtensionContainer_9566P44_constr_89, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P44_89,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P44_specs_89	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P45_91[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P45_tags_91[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P45_specs_91 = {
	sizeof(struct ProtocolExtensionContainer_9566P45),
	offsetof(struct ProtocolExtensionContainer_9566P45, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P45 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P45_tags_91,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P45_tags_91)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P45_tags_91[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P45_tags_91,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P45_tags_91)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P45_tags_91[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P45_constr_91, &asn_PER_type_ProtocolExtensionContainer_9566P45_constr_91, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P45_91,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P45_specs_91	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P46_93[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P46_tags_93[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P46_specs_93 = {
	sizeof(struct ProtocolExtensionContainer_9566P46),
	offsetof(struct ProtocolExtensionContainer_9566P46, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P46 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P46_tags_93,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P46_tags_93)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P46_tags_93[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P46_tags_93,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P46_tags_93)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P46_tags_93[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P46_constr_93, &asn_PER_type_ProtocolExtensionContainer_9566P46_constr_93, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P46_93,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P46_specs_93	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P47_95[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P47_tags_95[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P47_specs_95 = {
	sizeof(struct ProtocolExtensionContainer_9566P47),
	offsetof(struct ProtocolExtensionContainer_9566P47, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P47 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P47_tags_95,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P47_tags_95)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P47_tags_95[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P47_tags_95,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P47_tags_95)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P47_tags_95[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P47_constr_95, &asn_PER_type_ProtocolExtensionContainer_9566P47_constr_95, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P47_95,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P47_specs_95	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P48_97[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P48_tags_97[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P48_specs_97 = {
	sizeof(struct ProtocolExtensionContainer_9566P48),
	offsetof(struct ProtocolExtensionContainer_9566P48, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P48 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P48_tags_97,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P48_tags_97)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P48_tags_97[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P48_tags_97,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P48_tags_97)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P48_tags_97[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P48_constr_97, &asn_PER_type_ProtocolExtensionContainer_9566P48_constr_97, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P48_97,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P48_specs_97	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P49_99[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P49_tags_99[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P49_specs_99 = {
	sizeof(struct ProtocolExtensionContainer_9566P49),
	offsetof(struct ProtocolExtensionContainer_9566P49, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P49 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P49_tags_99,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P49_tags_99)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P49_tags_99[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P49_tags_99,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P49_tags_99)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P49_tags_99[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P49_constr_99, &asn_PER_type_ProtocolExtensionContainer_9566P49_constr_99, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P49_99,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P49_specs_99	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P50_101[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ResponseInformationSgNBReconfComp_SuccessItemExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P50_tags_101[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P50_specs_101 = {
	sizeof(struct ProtocolExtensionContainer_9566P50),
	offsetof(struct ProtocolExtensionContainer_9566P50, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P50 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P50_tags_101,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P50_tags_101)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P50_tags_101[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P50_tags_101,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P50_tags_101)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P50_tags_101[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P50_constr_101, &asn_PER_type_ProtocolExtensionContainer_9566P50_constr_101, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P50_101,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P50_specs_101	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P51_103[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P51_tags_103[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P51_specs_103 = {
	sizeof(struct ProtocolExtensionContainer_9566P51),
	offsetof(struct ProtocolExtensionContainer_9566P51, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P51 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P51_tags_103,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P51_tags_103)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P51_tags_103[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P51_tags_103,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P51_tags_103)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P51_tags_103[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P51_constr_103, &asn_PER_type_ProtocolExtensionContainer_9566P51_constr_103, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P51_103,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P51_specs_103	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P52_105[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_UE_ContextInformationSgNBModReqExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P52_tags_105[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P52_specs_105 = {
	sizeof(struct ProtocolExtensionContainer_9566P52),
	offsetof(struct ProtocolExtensionContainer_9566P52, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P52 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P52_tags_105,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P52_tags_105)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P52_tags_105[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P52_tags_105,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P52_tags_105)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P52_tags_105[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P52_constr_105, &asn_PER_type_ProtocolExtensionContainer_9566P52_constr_105, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P52_105,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P52_specs_105	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P53_107[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P53_tags_107[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P53_specs_107 = {
	sizeof(struct ProtocolExtensionContainer_9566P53),
	offsetof(struct ProtocolExtensionContainer_9566P53, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P53 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P53_tags_107,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P53_tags_107)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P53_tags_107[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P53_tags_107,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P53_tags_107)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P53_tags_107[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P53_constr_107, &asn_PER_type_ProtocolExtensionContainer_9566P53_constr_107, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P53_107,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P53_specs_107	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P54_109[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P54_tags_109[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P54_specs_109 = {
	sizeof(struct ProtocolExtensionContainer_9566P54),
	offsetof(struct ProtocolExtensionContainer_9566P54, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P54 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P54_tags_109,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P54_tags_109)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P54_tags_109[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P54_tags_109,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P54_tags_109)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P54_tags_109[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P54_constr_109, &asn_PER_type_ProtocolExtensionContainer_9566P54_constr_109, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P54_109,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P54_specs_109	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P55_111[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P55_tags_111[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P55_specs_111 = {
	sizeof(struct ProtocolExtensionContainer_9566P55),
	offsetof(struct ProtocolExtensionContainer_9566P55, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P55 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P55_tags_111,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P55_tags_111)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P55_tags_111[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P55_tags_111,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P55_tags_111)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P55_tags_111[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P55_constr_111, &asn_PER_type_ProtocolExtensionContainer_9566P55_constr_111, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P55_111,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P55_specs_111	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P56_113[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_ToBeModified_SgNBModReq_ItemExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P56_tags_113[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P56_specs_113 = {
	sizeof(struct ProtocolExtensionContainer_9566P56),
	offsetof(struct ProtocolExtensionContainer_9566P56, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P56 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P56_tags_113,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P56_tags_113)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P56_tags_113[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P56_tags_113,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P56_tags_113)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P56_tags_113[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P56_constr_113, &asn_PER_type_ProtocolExtensionContainer_9566P56_constr_113, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P56_113,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P56_specs_113	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P57_115[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P57_tags_115[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P57_specs_115 = {
	sizeof(struct ProtocolExtensionContainer_9566P57),
	offsetof(struct ProtocolExtensionContainer_9566P57, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P57 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P57_tags_115,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P57_tags_115)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P57_tags_115[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P57_tags_115,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P57_tags_115)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P57_tags_115[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P57_constr_115, &asn_PER_type_ProtocolExtensionContainer_9566P57_constr_115, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P57_115,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P57_specs_115	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P58_117[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P58_tags_117[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P58_specs_117 = {
	sizeof(struct ProtocolExtensionContainer_9566P58),
	offsetof(struct ProtocolExtensionContainer_9566P58, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P58 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P58_tags_117,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P58_tags_117)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P58_tags_117[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P58_tags_117,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P58_tags_117)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P58_tags_117[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P58_constr_117, &asn_PER_type_ProtocolExtensionContainer_9566P58_constr_117, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P58_117,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P58_specs_117	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P59_119[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P59_tags_119[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P59_specs_119 = {
	sizeof(struct ProtocolExtensionContainer_9566P59),
	offsetof(struct ProtocolExtensionContainer_9566P59, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P59 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P59_tags_119,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P59_tags_119)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P59_tags_119[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P59_tags_119,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P59_tags_119)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P59_tags_119[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P59_constr_119, &asn_PER_type_ProtocolExtensionContainer_9566P59_constr_119, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P59_119,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P59_specs_119	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P60_121[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P60_tags_121[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P60_specs_121 = {
	sizeof(struct ProtocolExtensionContainer_9566P60),
	offsetof(struct ProtocolExtensionContainer_9566P60, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P60 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P60_tags_121,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P60_tags_121)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P60_tags_121[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P60_tags_121,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P60_tags_121)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P60_tags_121[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P60_constr_121, &asn_PER_type_ProtocolExtensionContainer_9566P60_constr_121, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P60_121,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P60_specs_121	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P61_123[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P61_tags_123[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P61_specs_123 = {
	sizeof(struct ProtocolExtensionContainer_9566P61),
	offsetof(struct ProtocolExtensionContainer_9566P61, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P61 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P61_tags_123,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P61_tags_123)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P61_tags_123[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P61_tags_123,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P61_tags_123)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P61_tags_123[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P61_constr_123, &asn_PER_type_ProtocolExtensionContainer_9566P61_constr_123, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P61_123,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P61_specs_123	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P62_125[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P62_tags_125[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P62_specs_125 = {
	sizeof(struct ProtocolExtensionContainer_9566P62),
	offsetof(struct ProtocolExtensionContainer_9566P62, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P62 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P62_tags_125,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P62_tags_125)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P62_tags_125[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P62_tags_125,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P62_tags_125)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P62_tags_125[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P62_constr_125, &asn_PER_type_ProtocolExtensionContainer_9566P62_constr_125, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P62_125,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P62_specs_125	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P63_127[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P63_tags_127[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P63_specs_127 = {
	sizeof(struct ProtocolExtensionContainer_9566P63),
	offsetof(struct ProtocolExtensionContainer_9566P63, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P63 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P63_tags_127,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P63_tags_127)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P63_tags_127[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P63_tags_127,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P63_tags_127)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P63_tags_127[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P63_constr_127, &asn_PER_type_ProtocolExtensionContainer_9566P63_constr_127, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P63_127,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P63_specs_127	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P64_129[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P64_tags_129[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P64_specs_129 = {
	sizeof(struct ProtocolExtensionContainer_9566P64),
	offsetof(struct ProtocolExtensionContainer_9566P64, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P64 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P64_tags_129,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P64_tags_129)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P64_tags_129[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P64_tags_129,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P64_tags_129)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P64_tags_129[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P64_constr_129, &asn_PER_type_ProtocolExtensionContainer_9566P64_constr_129, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P64_129,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P64_specs_129	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P65_131[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P65_tags_131[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P65_specs_131 = {
	sizeof(struct ProtocolExtensionContainer_9566P65),
	offsetof(struct ProtocolExtensionContainer_9566P65, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P65 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P65_tags_131,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P65_tags_131)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P65_tags_131[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P65_tags_131,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P65_tags_131)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P65_tags_131[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P65_constr_131, &asn_PER_type_ProtocolExtensionContainer_9566P65_constr_131, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P65_131,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P65_specs_131	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P66_133[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P66_tags_133[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P66_specs_133 = {
	sizeof(struct ProtocolExtensionContainer_9566P66),
	offsetof(struct ProtocolExtensionContainer_9566P66, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P66 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P66_tags_133,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P66_tags_133)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P66_tags_133[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P66_tags_133,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P66_tags_133)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P66_tags_133[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P66_constr_133, &asn_PER_type_ProtocolExtensionContainer_9566P66_constr_133, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P66_133,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P66_specs_133	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P67_135[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P67_tags_135[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P67_specs_135 = {
	sizeof(struct ProtocolExtensionContainer_9566P67),
	offsetof(struct ProtocolExtensionContainer_9566P67, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P67 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P67_tags_135,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P67_tags_135)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P67_tags_135[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P67_tags_135,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P67_tags_135)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P67_tags_135[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P67_constr_135, &asn_PER_type_ProtocolExtensionContainer_9566P67_constr_135, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P67_135,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P67_specs_135	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P68_137[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P68_tags_137[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P68_specs_137 = {
	sizeof(struct ProtocolExtensionContainer_9566P68),
	offsetof(struct ProtocolExtensionContainer_9566P68, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P68 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P68_tags_137,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P68_tags_137)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P68_tags_137[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P68_tags_137,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P68_tags_137)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P68_tags_137[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P68_constr_137, &asn_PER_type_ProtocolExtensionContainer_9566P68_constr_137, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P68_137,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P68_specs_137	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P69_139[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P69_tags_139[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P69_specs_139 = {
	sizeof(struct ProtocolExtensionContainer_9566P69),
	offsetof(struct ProtocolExtensionContainer_9566P69, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P69 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P69_tags_139,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P69_tags_139)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P69_tags_139[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P69_tags_139,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P69_tags_139)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P69_tags_139[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P69_constr_139, &asn_PER_type_ProtocolExtensionContainer_9566P69_constr_139, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P69_139,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P69_specs_139	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P70_141[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P70_tags_141[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P70_specs_141 = {
	sizeof(struct ProtocolExtensionContainer_9566P70),
	offsetof(struct ProtocolExtensionContainer_9566P70, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P70 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P70_tags_141,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P70_tags_141)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P70_tags_141[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P70_tags_141,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P70_tags_141)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P70_tags_141[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P70_constr_141, &asn_PER_type_ProtocolExtensionContainer_9566P70_constr_141, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P70_141,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P70_specs_141	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P71_143[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P71_tags_143[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P71_specs_143 = {
	sizeof(struct ProtocolExtensionContainer_9566P71),
	offsetof(struct ProtocolExtensionContainer_9566P71, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P71 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P71_tags_143,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P71_tags_143)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P71_tags_143[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P71_tags_143,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P71_tags_143)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P71_tags_143[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P71_constr_143, &asn_PER_type_ProtocolExtensionContainer_9566P71_constr_143, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P71_143,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P71_specs_143	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P72_145[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P72_tags_145[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P72_specs_145 = {
	sizeof(struct ProtocolExtensionContainer_9566P72),
	offsetof(struct ProtocolExtensionContainer_9566P72, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P72 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P72_tags_145,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P72_tags_145)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P72_tags_145[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P72_tags_145,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P72_tags_145)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P72_tags_145[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P72_constr_145, &asn_PER_type_ProtocolExtensionContainer_9566P72_constr_145, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P72_145,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P72_specs_145	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P73_147[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P73_tags_147[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P73_specs_147 = {
	sizeof(struct ProtocolExtensionContainer_9566P73),
	offsetof(struct ProtocolExtensionContainer_9566P73, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P73 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P73_tags_147,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P73_tags_147)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P73_tags_147[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P73_tags_147,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P73_tags_147)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P73_tags_147[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P73_constr_147, &asn_PER_type_ProtocolExtensionContainer_9566P73_constr_147, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P73_147,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P73_specs_147	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P74_149[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P74_tags_149[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P74_specs_149 = {
	sizeof(struct ProtocolExtensionContainer_9566P74),
	offsetof(struct ProtocolExtensionContainer_9566P74, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P74 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P74_tags_149,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P74_tags_149)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P74_tags_149[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P74_tags_149,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P74_tags_149)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P74_tags_149[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P74_constr_149, &asn_PER_type_ProtocolExtensionContainer_9566P74_constr_149, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P74_149,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P74_specs_149	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P75_151[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P75_tags_151[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P75_specs_151 = {
	sizeof(struct ProtocolExtensionContainer_9566P75),
	offsetof(struct ProtocolExtensionContainer_9566P75, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P75 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P75_tags_151,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P75_tags_151)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P75_tags_151[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P75_tags_151,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P75_tags_151)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P75_tags_151[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P75_constr_151, &asn_PER_type_ProtocolExtensionContainer_9566P75_constr_151, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P75_151,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P75_specs_151	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P76_153[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P76_tags_153[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P76_specs_153 = {
	sizeof(struct ProtocolExtensionContainer_9566P76),
	offsetof(struct ProtocolExtensionContainer_9566P76, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P76 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P76_tags_153,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P76_tags_153)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P76_tags_153[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P76_tags_153,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P76_tags_153)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P76_tags_153[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P76_constr_153, &asn_PER_type_ProtocolExtensionContainer_9566P76_constr_153, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P76_153,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P76_specs_153	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P77_155[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P77_tags_155[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P77_specs_155 = {
	sizeof(struct ProtocolExtensionContainer_9566P77),
	offsetof(struct ProtocolExtensionContainer_9566P77, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P77 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P77_tags_155,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P77_tags_155)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P77_tags_155[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P77_tags_155,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P77_tags_155)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P77_tags_155[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P77_constr_155, &asn_PER_type_ProtocolExtensionContainer_9566P77_constr_155, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P77_155,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P77_specs_155	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P78_157[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P78_tags_157[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P78_specs_157 = {
	sizeof(struct ProtocolExtensionContainer_9566P78),
	offsetof(struct ProtocolExtensionContainer_9566P78, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P78 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P78_tags_157,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P78_tags_157)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P78_tags_157[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P78_tags_157,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P78_tags_157)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P78_tags_157[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P78_constr_157, &asn_PER_type_ProtocolExtensionContainer_9566P78_constr_157, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P78_157,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P78_specs_157	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P79_159[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P79_tags_159[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P79_specs_159 = {
	sizeof(struct ProtocolExtensionContainer_9566P79),
	offsetof(struct ProtocolExtensionContainer_9566P79, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P79 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P79_tags_159,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P79_tags_159)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P79_tags_159[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P79_tags_159,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P79_tags_159)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P79_tags_159[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P79_constr_159, &asn_PER_type_ProtocolExtensionContainer_9566P79_constr_159, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P79_159,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P79_specs_159	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P80_161[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P80_tags_161[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P80_specs_161 = {
	sizeof(struct ProtocolExtensionContainer_9566P80),
	offsetof(struct ProtocolExtensionContainer_9566P80, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P80 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P80_tags_161,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P80_tags_161)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P80_tags_161[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P80_tags_161,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P80_tags_161)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P80_tags_161[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P80_constr_161, &asn_PER_type_ProtocolExtensionContainer_9566P80_constr_161, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P80_161,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P80_specs_161	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P81_163[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P81_tags_163[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P81_specs_163 = {
	sizeof(struct ProtocolExtensionContainer_9566P81),
	offsetof(struct ProtocolExtensionContainer_9566P81, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P81 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P81_tags_163,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P81_tags_163)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P81_tags_163[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P81_tags_163,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P81_tags_163)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P81_tags_163[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P81_constr_163, &asn_PER_type_ProtocolExtensionContainer_9566P81_constr_163, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P81_163,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P81_specs_163	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P82_165[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P82_tags_165[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P82_specs_165 = {
	sizeof(struct ProtocolExtensionContainer_9566P82),
	offsetof(struct ProtocolExtensionContainer_9566P82, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P82 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P82_tags_165,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P82_tags_165)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P82_tags_165[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P82_tags_165,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P82_tags_165)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P82_tags_165[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P82_constr_165, &asn_PER_type_ProtocolExtensionContainer_9566P82_constr_165, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P82_165,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P82_specs_165	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P83_167[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P83_tags_167[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P83_specs_167 = {
	sizeof(struct ProtocolExtensionContainer_9566P83),
	offsetof(struct ProtocolExtensionContainer_9566P83, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P83 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P83_tags_167,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P83_tags_167)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P83_tags_167[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P83_tags_167,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P83_tags_167)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P83_tags_167[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P83_constr_167, &asn_PER_type_ProtocolExtensionContainer_9566P83_constr_167, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P83_167,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P83_specs_167	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P84_169[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P84_tags_169[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P84_specs_169 = {
	sizeof(struct ProtocolExtensionContainer_9566P84),
	offsetof(struct ProtocolExtensionContainer_9566P84, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P84 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P84_tags_169,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P84_tags_169)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P84_tags_169[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P84_tags_169,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P84_tags_169)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P84_tags_169[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P84_constr_169, &asn_PER_type_ProtocolExtensionContainer_9566P84_constr_169, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P84_169,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P84_specs_169	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P85_171[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P85_tags_171[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P85_specs_171 = {
	sizeof(struct ProtocolExtensionContainer_9566P85),
	offsetof(struct ProtocolExtensionContainer_9566P85, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P85 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P85_tags_171,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P85_tags_171)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P85_tags_171[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P85_tags_171,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P85_tags_171)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P85_tags_171[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P85_constr_171, &asn_PER_type_ProtocolExtensionContainer_9566P85_constr_171, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P85_171,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P85_specs_171	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P86_173[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P86_tags_173[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P86_specs_173 = {
	sizeof(struct ProtocolExtensionContainer_9566P86),
	offsetof(struct ProtocolExtensionContainer_9566P86, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P86 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P86_tags_173,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P86_tags_173)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P86_tags_173[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P86_tags_173,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P86_tags_173)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P86_tags_173[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P86_constr_173, &asn_PER_type_ProtocolExtensionContainer_9566P86_constr_173, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P86_173,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P86_specs_173	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P87_175[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P87_tags_175[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P87_specs_175 = {
	sizeof(struct ProtocolExtensionContainer_9566P87),
	offsetof(struct ProtocolExtensionContainer_9566P87, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P87 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P87_tags_175,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P87_tags_175)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P87_tags_175[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P87_tags_175,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P87_tags_175)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P87_tags_175[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P87_constr_175, &asn_PER_type_ProtocolExtensionContainer_9566P87_constr_175, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P87_175,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P87_specs_175	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P88_177[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P88_tags_177[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P88_specs_177 = {
	sizeof(struct ProtocolExtensionContainer_9566P88),
	offsetof(struct ProtocolExtensionContainer_9566P88, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P88 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P88_tags_177,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P88_tags_177)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P88_tags_177[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P88_tags_177,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P88_tags_177)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P88_tags_177[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P88_constr_177, &asn_PER_type_ProtocolExtensionContainer_9566P88_constr_177, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P88_177,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P88_specs_177	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P89_179[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P89_tags_179[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P89_specs_179 = {
	sizeof(struct ProtocolExtensionContainer_9566P89),
	offsetof(struct ProtocolExtensionContainer_9566P89, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P89 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P89_tags_179,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P89_tags_179)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P89_tags_179[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P89_tags_179,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P89_tags_179)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P89_tags_179[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P89_constr_179, &asn_PER_type_ProtocolExtensionContainer_9566P89_constr_179, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P89_179,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P89_specs_179	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P90_181[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ServedEUTRAcellsENDCX2Management_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P90_tags_181[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P90_specs_181 = {
	sizeof(struct ProtocolExtensionContainer_9566P90),
	offsetof(struct ProtocolExtensionContainer_9566P90, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P90 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P90_tags_181,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P90_tags_181)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P90_tags_181[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P90_tags_181,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P90_tags_181)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P90_tags_181[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P90_constr_181, &asn_PER_type_ProtocolExtensionContainer_9566P90_constr_181, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P90_181,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P90_specs_181	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P91_183[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_En_gNBServedCells_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P91_tags_183[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P91_specs_183 = {
	sizeof(struct ProtocolExtensionContainer_9566P91),
	offsetof(struct ProtocolExtensionContainer_9566P91, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P91 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P91_tags_183,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P91_tags_183)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P91_tags_183[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P91_tags_183,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P91_tags_183)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P91_tags_183[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P91_constr_183, &asn_PER_type_ProtocolExtensionContainer_9566P91_constr_183, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P91_183,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P91_specs_183	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P92_185[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ServedNRCell_Information_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P92_tags_185[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P92_specs_185 = {
	sizeof(struct ProtocolExtensionContainer_9566P92),
	offsetof(struct ProtocolExtensionContainer_9566P92, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P92 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P92_tags_185,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P92_tags_185)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P92_tags_185[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P92_tags_185,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P92_tags_185)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P92_tags_185[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P92_constr_185, &asn_PER_type_ProtocolExtensionContainer_9566P92_constr_185, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P92_185,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P92_specs_185	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P93_187[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_FDD_InfoServedNRCell_Information_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P93_tags_187[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P93_specs_187 = {
	sizeof(struct ProtocolExtensionContainer_9566P93),
	offsetof(struct ProtocolExtensionContainer_9566P93, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P93 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P93_tags_187,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P93_tags_187)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P93_tags_187[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P93_tags_187,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P93_tags_187)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P93_tags_187[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P93_constr_187, &asn_PER_type_ProtocolExtensionContainer_9566P93_constr_187, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P93_187,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P93_specs_187	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P94_189[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_FDD_InfoNeighbourServedNRCell_Information_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P94_tags_189[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P94_specs_189 = {
	sizeof(struct ProtocolExtensionContainer_9566P94),
	offsetof(struct ProtocolExtensionContainer_9566P94, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P94 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P94_tags_189,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P94_tags_189)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P94_tags_189[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P94_tags_189,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P94_tags_189)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P94_tags_189[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P94_constr_189, &asn_PER_type_ProtocolExtensionContainer_9566P94_constr_189, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P94_189,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P94_specs_189	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P95_191[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_TDD_InfoServedNRCell_Information_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P95_tags_191[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P95_specs_191 = {
	sizeof(struct ProtocolExtensionContainer_9566P95),
	offsetof(struct ProtocolExtensionContainer_9566P95, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P95 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P95_tags_191,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P95_tags_191)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P95_tags_191[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P95_tags_191,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P95_tags_191)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P95_tags_191[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P95_constr_191, &asn_PER_type_ProtocolExtensionContainer_9566P95_constr_191, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P95_191,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P95_specs_191	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P96_193[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_TDD_InfoNeighbourServedNRCell_Information_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P96_tags_193[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P96_specs_193 = {
	sizeof(struct ProtocolExtensionContainer_9566P96),
	offsetof(struct ProtocolExtensionContainer_9566P96, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P96 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P96_tags_193,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P96_tags_193)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P96_tags_193[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P96_tags_193,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P96_tags_193)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P96_tags_193[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P96_constr_193, &asn_PER_type_ProtocolExtensionContainer_9566P96_constr_193, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P96_193,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P96_specs_193	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P97_195[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_NRNeighbour_Information_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P97_tags_195[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P97_specs_195 = {
	sizeof(struct ProtocolExtensionContainer_9566P97),
	offsetof(struct ProtocolExtensionContainer_9566P97, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P97 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P97_tags_195,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P97_tags_195)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P97_tags_195[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P97_tags_195,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P97_tags_195)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P97_tags_195[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P97_constr_195, &asn_PER_type_ProtocolExtensionContainer_9566P97_constr_195, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P97_195,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P97_specs_195	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P98_197[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_Limited_list_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P98_tags_197[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P98_specs_197 = {
	sizeof(struct ProtocolExtensionContainer_9566P98),
	offsetof(struct ProtocolExtensionContainer_9566P98, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P98 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P98_tags_197,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P98_tags_197)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P98_tags_197[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P98_tags_197,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P98_tags_197)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P98_tags_197[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P98_constr_197, &asn_PER_type_ProtocolExtensionContainer_9566P98_constr_197, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P98_197,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P98_specs_197	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P99_199[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P99_tags_199[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P99_specs_199 = {
	sizeof(struct ProtocolExtensionContainer_9566P99),
	offsetof(struct ProtocolExtensionContainer_9566P99, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P99 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P99_tags_199,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P99_tags_199)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P99_tags_199[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P99_tags_199,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P99_tags_199)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P99_tags_199[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P99_constr_199, &asn_PER_type_ProtocolExtensionContainer_9566P99_constr_199, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P99_199,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P99_specs_199	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P100_201[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ServedNRCellsToModify_Item_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P100_tags_201[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P100_specs_201 = {
	sizeof(struct ProtocolExtensionContainer_9566P100),
	offsetof(struct ProtocolExtensionContainer_9566P100, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P100 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P100_tags_201,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P100_tags_201)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P100_tags_201[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P100_tags_201,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P100_tags_201)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P100_tags_201[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P100_constr_201, &asn_PER_type_ProtocolExtensionContainer_9566P100_constr_201, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P100_201,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P100_specs_201	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P101_203[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ServedNRCellsToActivate_Item_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P101_tags_203[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P101_specs_203 = {
	sizeof(struct ProtocolExtensionContainer_9566P101),
	offsetof(struct ProtocolExtensionContainer_9566P101, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P101 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P101_tags_203,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P101_tags_203)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P101_tags_203[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P101_tags_203,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P101_tags_203)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P101_tags_203[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P101_constr_203, &asn_PER_type_ProtocolExtensionContainer_9566P101_constr_203, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P101_203,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P101_specs_203	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P102_205[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ActivatedNRCellList_Item_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P102_tags_205[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P102_specs_205 = {
	sizeof(struct ProtocolExtensionContainer_9566P102),
	offsetof(struct ProtocolExtensionContainer_9566P102, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P102 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P102_tags_205,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P102_tags_205)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P102_tags_205[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P102_tags_205,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P102_tags_205)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P102_tags_205[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P102_constr_205, &asn_PER_type_ProtocolExtensionContainer_9566P102_constr_205, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P102_205,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P102_specs_205	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P103_207[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABs_DataForwardingAddress_ItemExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P103_tags_207[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P103_specs_207 = {
	sizeof(struct ProtocolExtensionContainer_9566P103),
	offsetof(struct ProtocolExtensionContainer_9566P103, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P103 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P103_tags_207,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P103_tags_207)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P103_tags_207[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P103_tags_207,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P103_tags_207)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P103_tags_207[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P103_constr_207, &asn_PER_type_ProtocolExtensionContainer_9566P103_constr_207, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P103_207,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P103_specs_207	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P104_209[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ABSInformationFDD_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P104_tags_209[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P104_specs_209 = {
	sizeof(struct ProtocolExtensionContainer_9566P104),
	offsetof(struct ProtocolExtensionContainer_9566P104, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P104 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P104_tags_209,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P104_tags_209)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P104_tags_209[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P104_tags_209,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P104_tags_209)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P104_tags_209[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P104_constr_209, &asn_PER_type_ProtocolExtensionContainer_9566P104_constr_209, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P104_209,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P104_specs_209	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P105_211[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ABSInformationTDD_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P105_tags_211[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P105_specs_211 = {
	sizeof(struct ProtocolExtensionContainer_9566P105),
	offsetof(struct ProtocolExtensionContainer_9566P105, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P105 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P105_tags_211,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P105_tags_211)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P105_tags_211[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P105_tags_211,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P105_tags_211)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P105_tags_211[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P105_constr_211, &asn_PER_type_ProtocolExtensionContainer_9566P105_constr_211, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P105_211,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P105_specs_211	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P106_213[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ABS_Status_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P106_tags_213[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P106_specs_213 = {
	sizeof(struct ProtocolExtensionContainer_9566P106),
	offsetof(struct ProtocolExtensionContainer_9566P106, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P106 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P106_tags_213,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P106_tags_213)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P106_tags_213[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P106_tags_213,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P106_tags_213)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P106_tags_213[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P106_constr_213, &asn_PER_type_ProtocolExtensionContainer_9566P106_constr_213, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P106_213,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P106_specs_213	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P107_215[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_AdditionalSpecialSubframe_Info_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P107_tags_215[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P107_specs_215 = {
	sizeof(struct ProtocolExtensionContainer_9566P107),
	offsetof(struct ProtocolExtensionContainer_9566P107, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P107 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P107_tags_215,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P107_tags_215)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P107_tags_215[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P107_tags_215,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P107_tags_215)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P107_tags_215[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P107_constr_215, &asn_PER_type_ProtocolExtensionContainer_9566P107_constr_215, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P107_215,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P107_specs_215	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P108_217[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_AdditionalSpecialSubframeExtension_Info_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P108_tags_217[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P108_specs_217 = {
	sizeof(struct ProtocolExtensionContainer_9566P108),
	offsetof(struct ProtocolExtensionContainer_9566P108, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P108 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P108_tags_217,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P108_tags_217)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P108_tags_217[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P108_tags_217,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P108_tags_217)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P108_tags_217[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P108_constr_217, &asn_PER_type_ProtocolExtensionContainer_9566P108_constr_217, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P108_217,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P108_specs_217	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P109_219[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_AllocationAndRetentionPriority_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P109_tags_219[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P109_specs_219 = {
	sizeof(struct ProtocolExtensionContainer_9566P109),
	offsetof(struct ProtocolExtensionContainer_9566P109, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P109 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P109_tags_219,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P109_tags_219)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P109_tags_219[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P109_tags_219,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P109_tags_219)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P109_tags_219[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P109_constr_219, &asn_PER_type_ProtocolExtensionContainer_9566P109_constr_219, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P109_219,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P109_specs_219	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P110_221[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_AS_SecurityInformation_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P110_tags_221[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P110_specs_221 = {
	sizeof(struct ProtocolExtensionContainer_9566P110),
	offsetof(struct ProtocolExtensionContainer_9566P110, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P110 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P110_tags_221,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P110_tags_221)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P110_tags_221[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P110_tags_221,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P110_tags_221)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P110_tags_221[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P110_constr_221, &asn_PER_type_ProtocolExtensionContainer_9566P110_constr_221, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P110_221,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P110_specs_221	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P111_223[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_BluetoothMeasurementConfiguration_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P111_tags_223[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P111_specs_223 = {
	sizeof(struct ProtocolExtensionContainer_9566P111),
	offsetof(struct ProtocolExtensionContainer_9566P111, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P111 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P111_tags_223,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P111_tags_223)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P111_tags_223[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P111_tags_223,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P111_tags_223)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P111_tags_223[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P111_constr_223, &asn_PER_type_ProtocolExtensionContainer_9566P111_constr_223, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P111_223,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P111_specs_223	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P112_225[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_CellBasedMDT_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P112_tags_225[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P112_specs_225 = {
	sizeof(struct ProtocolExtensionContainer_9566P112),
	offsetof(struct ProtocolExtensionContainer_9566P112, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P112 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P112_tags_225,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P112_tags_225)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P112_tags_225[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P112_tags_225,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P112_tags_225)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P112_tags_225[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P112_constr_225, &asn_PER_type_ProtocolExtensionContainer_9566P112_constr_225, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P112_225,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P112_specs_225	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P113_227[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_CellBasedQMC_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P113_tags_227[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P113_specs_227 = {
	sizeof(struct ProtocolExtensionContainer_9566P113),
	offsetof(struct ProtocolExtensionContainer_9566P113, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P113 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P113_tags_227,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P113_tags_227)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P113_tags_227[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P113_tags_227,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P113_tags_227)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P113_tags_227[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P113_constr_227, &asn_PER_type_ProtocolExtensionContainer_9566P113_constr_227, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P113_227,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P113_specs_227	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P114_229[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_CellReplacingInfo_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P114_tags_229[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P114_specs_229 = {
	sizeof(struct ProtocolExtensionContainer_9566P114),
	offsetof(struct ProtocolExtensionContainer_9566P114, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P114 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P114_tags_229,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P114_tags_229)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P114_tags_229[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P114_tags_229,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P114_tags_229)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P114_tags_229[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P114_constr_229, &asn_PER_type_ProtocolExtensionContainer_9566P114_constr_229, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P114_229,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P114_specs_229	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P115_231[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_CellType_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P115_tags_231[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P115_specs_231 = {
	sizeof(struct ProtocolExtensionContainer_9566P115),
	offsetof(struct ProtocolExtensionContainer_9566P115, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P115 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P115_tags_231,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P115_tags_231)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P115_tags_231[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P115_tags_231,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P115_tags_231)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P115_tags_231[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P115_constr_231, &asn_PER_type_ProtocolExtensionContainer_9566P115_constr_231, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P115_231,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P115_specs_231	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P116_233[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_CNTypeRestrictionsItem_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P116_tags_233[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P116_specs_233 = {
	sizeof(struct ProtocolExtensionContainer_9566P116),
	offsetof(struct ProtocolExtensionContainer_9566P116, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P116 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P116_tags_233,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P116_tags_233)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P116_tags_233[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P116_tags_233,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P116_tags_233)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P116_tags_233[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P116_constr_233, &asn_PER_type_ProtocolExtensionContainer_9566P116_constr_233, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P116_233,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P116_specs_233	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P117_235[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_CoMPHypothesisSetItem_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P117_tags_235[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P117_specs_235 = {
	sizeof(struct ProtocolExtensionContainer_9566P117),
	offsetof(struct ProtocolExtensionContainer_9566P117, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P117 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P117_tags_235,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P117_tags_235)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P117_tags_235[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P117_tags_235,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P117_tags_235)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P117_tags_235[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P117_constr_235, &asn_PER_type_ProtocolExtensionContainer_9566P117_constr_235, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P117_235,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P117_specs_235	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P118_237[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_CoMPInformation_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P118_tags_237[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P118_specs_237 = {
	sizeof(struct ProtocolExtensionContainer_9566P118),
	offsetof(struct ProtocolExtensionContainer_9566P118, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P118 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P118_tags_237,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P118_tags_237)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P118_tags_237[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P118_tags_237,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P118_tags_237)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P118_tags_237[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P118_constr_237, &asn_PER_type_ProtocolExtensionContainer_9566P118_constr_237, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P118_237,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P118_specs_237	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P119_239[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_CoMPInformationItem_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P119_tags_239[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P119_specs_239 = {
	sizeof(struct ProtocolExtensionContainer_9566P119),
	offsetof(struct ProtocolExtensionContainer_9566P119, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P119 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P119_tags_239,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P119_tags_239)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P119_tags_239[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P119_tags_239,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P119_tags_239)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P119_tags_239[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P119_constr_239, &asn_PER_type_ProtocolExtensionContainer_9566P119_constr_239, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P119_239,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P119_specs_239	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P120_241[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_CoMPInformationStartTime_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P120_tags_241[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P120_specs_241 = {
	sizeof(struct ProtocolExtensionContainer_9566P120),
	offsetof(struct ProtocolExtensionContainer_9566P120, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P120 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P120_tags_241,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P120_tags_241)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P120_tags_241[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P120_tags_241,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P120_tags_241)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P120_tags_241[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P120_constr_241, &asn_PER_type_ProtocolExtensionContainer_9566P120_constr_241, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P120_241,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P120_specs_241	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P121_243[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_CompositeAvailableCapacity_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P121_tags_243[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P121_specs_243 = {
	sizeof(struct ProtocolExtensionContainer_9566P121),
	offsetof(struct ProtocolExtensionContainer_9566P121, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P121 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P121_tags_243,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P121_tags_243)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P121_tags_243[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P121_tags_243,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P121_tags_243)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P121_tags_243[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P121_constr_243, &asn_PER_type_ProtocolExtensionContainer_9566P121_constr_243, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P121_243,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P121_specs_243	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P122_245[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_CompositeAvailableCapacityGroup_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P122_tags_245[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P122_specs_245 = {
	sizeof(struct ProtocolExtensionContainer_9566P122),
	offsetof(struct ProtocolExtensionContainer_9566P122, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P122 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P122_tags_245,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P122_tags_245)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P122_tags_245[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P122_tags_245,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P122_tags_245)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P122_tags_245[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P122_constr_245, &asn_PER_type_ProtocolExtensionContainer_9566P122_constr_245, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P122_245,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P122_specs_245	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P123_247[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_COUNTvalue_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P123_tags_247[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P123_specs_247 = {
	sizeof(struct ProtocolExtensionContainer_9566P123),
	offsetof(struct ProtocolExtensionContainer_9566P123, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P123 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P123_tags_247,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P123_tags_247)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P123_tags_247[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P123_tags_247,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P123_tags_247)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P123_tags_247[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P123_constr_247, &asn_PER_type_ProtocolExtensionContainer_9566P123_constr_247, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P123_247,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P123_specs_247	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P124_249[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_COUNTValueExtended_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P124_tags_249[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P124_specs_249 = {
	sizeof(struct ProtocolExtensionContainer_9566P124),
	offsetof(struct ProtocolExtensionContainer_9566P124, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P124 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P124_tags_249,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P124_tags_249)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P124_tags_249[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P124_tags_249,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P124_tags_249)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P124_tags_249[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P124_constr_249, &asn_PER_type_ProtocolExtensionContainer_9566P124_constr_249, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P124_249,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P124_specs_249	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P125_251[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_COUNTvaluePDCP_SNlength18_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P125_tags_251[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P125_specs_251 = {
	sizeof(struct ProtocolExtensionContainer_9566P125),
	offsetof(struct ProtocolExtensionContainer_9566P125, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P125 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P125_tags_251,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P125_tags_251)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P125_tags_251[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P125_tags_251,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P125_tags_251)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P125_tags_251[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P125_constr_251, &asn_PER_type_ProtocolExtensionContainer_9566P125_constr_251, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P125_251,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P125_specs_251	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P126_253[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_CriticalityDiagnostics_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P126_tags_253[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P126_specs_253 = {
	sizeof(struct ProtocolExtensionContainer_9566P126),
	offsetof(struct ProtocolExtensionContainer_9566P126, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P126 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P126_tags_253,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P126_tags_253)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P126_tags_253[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P126_tags_253,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P126_tags_253)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P126_tags_253[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P126_constr_253, &asn_PER_type_ProtocolExtensionContainer_9566P126_constr_253, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P126_253,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P126_specs_253	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P127_255[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_CriticalityDiagnostics_IE_List_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P127_tags_255[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P127_specs_255 = {
	sizeof(struct ProtocolExtensionContainer_9566P127),
	offsetof(struct ProtocolExtensionContainer_9566P127, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P127 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P127_tags_255,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P127_tags_255)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P127_tags_255[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P127_tags_255,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P127_tags_255)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P127_tags_255[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P127_constr_255, &asn_PER_type_ProtocolExtensionContainer_9566P127_constr_255, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P127_255,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P127_specs_255	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P128_257[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_CSIReportList_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P128_tags_257[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P128_specs_257 = {
	sizeof(struct ProtocolExtensionContainer_9566P128),
	offsetof(struct ProtocolExtensionContainer_9566P128, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P128 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P128_tags_257,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P128_tags_257)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P128_tags_257[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P128_tags_257,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P128_tags_257)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P128_tags_257[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P128_constr_257, &asn_PER_type_ProtocolExtensionContainer_9566P128_constr_257, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P128_257,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P128_specs_257	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P129_259[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_CSIReportPerCSIProcess_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P129_tags_259[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P129_specs_259 = {
	sizeof(struct ProtocolExtensionContainer_9566P129),
	offsetof(struct ProtocolExtensionContainer_9566P129, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P129 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P129_tags_259,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P129_tags_259)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P129_tags_259[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P129_tags_259,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P129_tags_259)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P129_tags_259[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P129_constr_259, &asn_PER_type_ProtocolExtensionContainer_9566P129_constr_259, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P129_259,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P129_specs_259	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P130_261[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_CSIReportPerCSIProcessItem_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P130_tags_261[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P130_specs_261 = {
	sizeof(struct ProtocolExtensionContainer_9566P130),
	offsetof(struct ProtocolExtensionContainer_9566P130, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P130 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P130_tags_261,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P130_tags_261)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P130_tags_261[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P130_tags_261,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P130_tags_261)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P130_tags_261[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P130_constr_261, &asn_PER_type_ProtocolExtensionContainer_9566P130_constr_261, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P130_261,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P130_specs_261	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P131_263[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_DataTrafficResourceIndication_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P131_tags_263[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P131_specs_263 = {
	sizeof(struct ProtocolExtensionContainer_9566P131),
	offsetof(struct ProtocolExtensionContainer_9566P131, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P131 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P131_tags_263,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P131_tags_263)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P131_tags_263[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P131_tags_263,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P131_tags_263)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P131_tags_263[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P131_constr_263, &asn_PER_type_ProtocolExtensionContainer_9566P131_constr_263, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P131_263,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P131_specs_263	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P132_265[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_DeliveryStatus_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P132_tags_265[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P132_specs_265 = {
	sizeof(struct ProtocolExtensionContainer_9566P132),
	offsetof(struct ProtocolExtensionContainer_9566P132, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P132 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P132_tags_265,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P132_tags_265)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P132_tags_265[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P132_tags_265,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P132_tags_265)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P132_tags_265[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P132_constr_265, &asn_PER_type_ProtocolExtensionContainer_9566P132_constr_265, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P132_265,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P132_specs_265	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P133_267[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_DynamicNAICSInformation_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P133_tags_267[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P133_specs_267 = {
	sizeof(struct ProtocolExtensionContainer_9566P133),
	offsetof(struct ProtocolExtensionContainer_9566P133, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P133 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P133_tags_267,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P133_tags_267)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P133_tags_267[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P133_tags_267,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P133_tags_267)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P133_tags_267[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P133_constr_267, &asn_PER_type_ProtocolExtensionContainer_9566P133_constr_267, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P133_267,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P133_specs_267	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P134_269[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ECGI_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P134_tags_269[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P134_specs_269 = {
	sizeof(struct ProtocolExtensionContainer_9566P134),
	offsetof(struct ProtocolExtensionContainer_9566P134, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P134 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P134_tags_269,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P134_tags_269)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P134_tags_269[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P134_tags_269,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P134_tags_269)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P134_tags_269[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P134_constr_269, &asn_PER_type_ProtocolExtensionContainer_9566P134_constr_269, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P134_269,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P134_specs_269	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P135_271[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_EnhancedRNTP_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P135_tags_271[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P135_specs_271 = {
	sizeof(struct ProtocolExtensionContainer_9566P135),
	offsetof(struct ProtocolExtensionContainer_9566P135, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P135 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P135_tags_271,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P135_tags_271)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P135_tags_271[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P135_tags_271,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P135_tags_271)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P135_tags_271[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P135_constr_271, &asn_PER_type_ProtocolExtensionContainer_9566P135_constr_271, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P135_271,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P135_specs_271	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P136_273[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_EnhancedRNTPStartTime_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P136_tags_273[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P136_specs_273 = {
	sizeof(struct ProtocolExtensionContainer_9566P136),
	offsetof(struct ProtocolExtensionContainer_9566P136, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P136 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P136_tags_273,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P136_tags_273)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P136_tags_273[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P136_tags_273,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P136_tags_273)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P136_tags_273[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P136_constr_273, &asn_PER_type_ProtocolExtensionContainer_9566P136_constr_273, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P136_273,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P136_specs_273	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P137_275[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_EN_DC_ResourceConfigurationExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P137_tags_275[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P137_specs_275 = {
	sizeof(struct ProtocolExtensionContainer_9566P137),
	offsetof(struct ProtocolExtensionContainer_9566P137, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P137 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P137_tags_275,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P137_tags_275)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P137_tags_275[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P137_tags_275,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P137_tags_275)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P137_tags_275[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P137_constr_275, &asn_PER_type_ProtocolExtensionContainer_9566P137_constr_275, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P137_275,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P137_specs_275	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P138_277[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ERABActivityNotifyItem_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P138_tags_277[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P138_specs_277 = {
	sizeof(struct ProtocolExtensionContainer_9566P138),
	offsetof(struct ProtocolExtensionContainer_9566P138, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P138 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P138_tags_277,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P138_tags_277)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P138_tags_277[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P138_tags_277,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P138_tags_277)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P138_tags_277[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P138_constr_277, &asn_PER_type_ProtocolExtensionContainer_9566P138_constr_277, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P138_277,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P138_specs_277	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P139_279[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RAB_Level_QoS_Parameters_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P139_tags_279[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P139_specs_279 = {
	sizeof(struct ProtocolExtensionContainer_9566P139),
	offsetof(struct ProtocolExtensionContainer_9566P139, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P139 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P139_tags_279,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P139_tags_279)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P139_tags_279[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P139_tags_279,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P139_tags_279)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P139_tags_279[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P139_constr_279, &asn_PER_type_ProtocolExtensionContainer_9566P139_constr_279, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P139_279,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P139_specs_279	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P140_281[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RAB_Item_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P140_tags_281[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P140_specs_281 = {
	sizeof(struct ProtocolExtensionContainer_9566P140),
	offsetof(struct ProtocolExtensionContainer_9566P140, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P140 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P140_tags_281,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P140_tags_281)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P140_tags_281[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P140_tags_281,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P140_tags_281)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P140_tags_281[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P140_constr_281, &asn_PER_type_ProtocolExtensionContainer_9566P140_constr_281, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P140_281,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P140_specs_281	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P141_283[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_E_RABUsageReport_Item_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P141_tags_283[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P141_specs_283 = {
	sizeof(struct ProtocolExtensionContainer_9566P141),
	offsetof(struct ProtocolExtensionContainer_9566P141, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P141 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P141_tags_283,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P141_tags_283)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P141_tags_283[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P141_tags_283,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P141_tags_283)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P141_tags_283[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P141_constr_283, &asn_PER_type_ProtocolExtensionContainer_9566P141_constr_283, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P141_283,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P141_specs_283	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P142_285[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ExpectedUEBehaviour_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P142_tags_285[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P142_specs_285 = {
	sizeof(struct ProtocolExtensionContainer_9566P142),
	offsetof(struct ProtocolExtensionContainer_9566P142, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P142 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P142_tags_285,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P142_tags_285)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P142_tags_285[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P142_tags_285,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P142_tags_285)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P142_tags_285[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P142_constr_285, &asn_PER_type_ProtocolExtensionContainer_9566P142_constr_285, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P142_285,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P142_specs_285	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P143_287[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ExpectedUEActivityBehaviour_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P143_tags_287[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P143_specs_287 = {
	sizeof(struct ProtocolExtensionContainer_9566P143),
	offsetof(struct ProtocolExtensionContainer_9566P143, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P143 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P143_tags_287,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P143_tags_287)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P143_tags_287[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P143_tags_287,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P143_tags_287)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P143_tags_287[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P143_constr_287, &asn_PER_type_ProtocolExtensionContainer_9566P143_constr_287, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P143_287,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P143_specs_287	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P144_289[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ExtendedULInterferenceOverloadInfo_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P144_tags_289[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P144_specs_289 = {
	sizeof(struct ProtocolExtensionContainer_9566P144),
	offsetof(struct ProtocolExtensionContainer_9566P144, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P144 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P144_tags_289,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P144_tags_289)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P144_tags_289[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P144_tags_289,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P144_tags_289)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P144_tags_289[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P144_constr_289, &asn_PER_type_ProtocolExtensionContainer_9566P144_constr_289, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P144_289,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P144_specs_289	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P145_291[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_FDD_Info_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P145_tags_291[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P145_specs_291 = {
	sizeof(struct ProtocolExtensionContainer_9566P145),
	offsetof(struct ProtocolExtensionContainer_9566P145, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P145 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P145_tags_291,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P145_tags_291)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P145_tags_291[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P145_tags_291,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P145_tags_291)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P145_tags_291[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P145_constr_291, &asn_PER_type_ProtocolExtensionContainer_9566P145_constr_291, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P145_291,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P145_specs_291	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P146_293[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ForbiddenTAs_Item_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P146_tags_293[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P146_specs_293 = {
	sizeof(struct ProtocolExtensionContainer_9566P146),
	offsetof(struct ProtocolExtensionContainer_9566P146, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P146 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P146_tags_293,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P146_tags_293)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P146_tags_293[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P146_tags_293,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P146_tags_293)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P146_tags_293[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P146_constr_293, &asn_PER_type_ProtocolExtensionContainer_9566P146_constr_293, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P146_293,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P146_specs_293	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P147_295[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ForbiddenLAs_Item_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P147_tags_295[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P147_specs_295 = {
	sizeof(struct ProtocolExtensionContainer_9566P147),
	offsetof(struct ProtocolExtensionContainer_9566P147, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P147 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P147_tags_295,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P147_tags_295)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P147_tags_295[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P147_tags_295,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P147_tags_295)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P147_tags_295[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P147_constr_295, &asn_PER_type_ProtocolExtensionContainer_9566P147_constr_295, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P147_295,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P147_specs_295	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P148_297[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_FreqBandNrItem_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P148_tags_297[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P148_specs_297 = {
	sizeof(struct ProtocolExtensionContainer_9566P148),
	offsetof(struct ProtocolExtensionContainer_9566P148, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P148 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P148_tags_297,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P148_tags_297)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P148_tags_297[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P148_tags_297,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P148_tags_297)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P148_tags_297[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P148_constr_297, &asn_PER_type_ProtocolExtensionContainer_9566P148_constr_297, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P148_297,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P148_specs_297	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P149_299[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_GBR_QosInformation_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P149_tags_299[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P149_specs_299 = {
	sizeof(struct ProtocolExtensionContainer_9566P149),
	offsetof(struct ProtocolExtensionContainer_9566P149, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P149 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P149_tags_299,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P149_tags_299)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P149_tags_299[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P149_tags_299,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P149_tags_299)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P149_tags_299[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P149_constr_299, &asn_PER_type_ProtocolExtensionContainer_9566P149_constr_299, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P149_299,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P149_specs_299	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P150_301[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_GlobalENB_ID_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P150_tags_301[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P150_specs_301 = {
	sizeof(struct ProtocolExtensionContainer_9566P150),
	offsetof(struct ProtocolExtensionContainer_9566P150, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P150 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P150_tags_301,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P150_tags_301)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P150_tags_301[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P150_tags_301,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P150_tags_301)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P150_tags_301[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P150_constr_301, &asn_PER_type_ProtocolExtensionContainer_9566P150_constr_301, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P150_301,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P150_specs_301	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P151_303[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_GlobalGNB_ID_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P151_tags_303[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P151_specs_303 = {
	sizeof(struct ProtocolExtensionContainer_9566P151),
	offsetof(struct ProtocolExtensionContainer_9566P151, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P151 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P151_tags_303,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P151_tags_303)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P151_tags_303[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P151_tags_303,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P151_tags_303)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P151_tags_303[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P151_constr_303, &asn_PER_type_ProtocolExtensionContainer_9566P151_constr_303, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P151_303,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P151_specs_303	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P152_305[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_GTPtunnelEndpoint_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P152_tags_305[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P152_specs_305 = {
	sizeof(struct ProtocolExtensionContainer_9566P152),
	offsetof(struct ProtocolExtensionContainer_9566P152, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P152 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P152_tags_305,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P152_tags_305)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P152_tags_305[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P152_tags_305,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P152_tags_305)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P152_tags_305[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P152_constr_305, &asn_PER_type_ProtocolExtensionContainer_9566P152_constr_305, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P152_305,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P152_specs_305	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P153_307[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_GU_Group_ID_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P153_tags_307[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P153_specs_307 = {
	sizeof(struct ProtocolExtensionContainer_9566P153),
	offsetof(struct ProtocolExtensionContainer_9566P153, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P153 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P153_tags_307,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P153_tags_307)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P153_tags_307[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P153_tags_307,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P153_tags_307)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P153_tags_307[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P153_constr_307, &asn_PER_type_ProtocolExtensionContainer_9566P153_constr_307, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P153_307,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P153_specs_307	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P154_309[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_GUMMEI_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P154_tags_309[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P154_specs_309 = {
	sizeof(struct ProtocolExtensionContainer_9566P154),
	offsetof(struct ProtocolExtensionContainer_9566P154, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P154 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P154_tags_309,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P154_tags_309)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P154_tags_309[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P154_tags_309,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P154_tags_309)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P154_tags_309[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P154_constr_309, &asn_PER_type_ProtocolExtensionContainer_9566P154_constr_309, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P154_309,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P154_specs_309	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P155_311[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_HandoverRestrictionList_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P155_tags_311[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P155_specs_311 = {
	sizeof(struct ProtocolExtensionContainer_9566P155),
	offsetof(struct ProtocolExtensionContainer_9566P155, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P155 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P155_tags_311,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P155_tags_311)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P155_tags_311[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P155_tags_311,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P155_tags_311)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P155_tags_311[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P155_constr_311, &asn_PER_type_ProtocolExtensionContainer_9566P155_constr_311, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P155_311,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P155_specs_311	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P156_313[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_HWLoadIndicator_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P156_tags_313[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P156_specs_313 = {
	sizeof(struct ProtocolExtensionContainer_9566P156),
	offsetof(struct ProtocolExtensionContainer_9566P156, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P156 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P156_tags_313,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P156_tags_313)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P156_tags_313[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P156_tags_313,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P156_tags_313)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P156_tags_313[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P156_constr_313, &asn_PER_type_ProtocolExtensionContainer_9566P156_constr_313, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P156_313,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P156_specs_313	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P157_315[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_LastVisitedEUTRANCellInformation_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P157_tags_315[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P157_specs_315 = {
	sizeof(struct ProtocolExtensionContainer_9566P157),
	offsetof(struct ProtocolExtensionContainer_9566P157, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P157 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P157_tags_315,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P157_tags_315)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P157_tags_315[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P157_tags_315,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P157_tags_315)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P157_tags_315[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P157_constr_315, &asn_PER_type_ProtocolExtensionContainer_9566P157_constr_315, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P157_315,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P157_specs_315	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P158_317[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_LocationReportingInformation_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P158_tags_317[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P158_specs_317 = {
	sizeof(struct ProtocolExtensionContainer_9566P158),
	offsetof(struct ProtocolExtensionContainer_9566P158, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P158 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P158_tags_317,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P158_tags_317)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P158_tags_317[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P158_tags_317,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P158_tags_317)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P158_tags_317[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P158_constr_317, &asn_PER_type_ProtocolExtensionContainer_9566P158_constr_317, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P158_317,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P158_specs_317	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P159_319[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_M1PeriodicReporting_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P159_tags_319[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P159_specs_319 = {
	sizeof(struct ProtocolExtensionContainer_9566P159),
	offsetof(struct ProtocolExtensionContainer_9566P159, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P159 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P159_tags_319,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P159_tags_319)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P159_tags_319[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P159_tags_319,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P159_tags_319)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P159_tags_319[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P159_constr_319, &asn_PER_type_ProtocolExtensionContainer_9566P159_constr_319, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P159_319,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P159_specs_319	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P160_321[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_M1ThresholdEventA2_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P160_tags_321[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P160_specs_321 = {
	sizeof(struct ProtocolExtensionContainer_9566P160),
	offsetof(struct ProtocolExtensionContainer_9566P160, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P160 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P160_tags_321,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P160_tags_321)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P160_tags_321[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P160_tags_321,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P160_tags_321)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P160_tags_321[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P160_constr_321, &asn_PER_type_ProtocolExtensionContainer_9566P160_constr_321, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P160_321,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P160_specs_321	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P161_323[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_M3Configuration_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P161_tags_323[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P161_specs_323 = {
	sizeof(struct ProtocolExtensionContainer_9566P161),
	offsetof(struct ProtocolExtensionContainer_9566P161, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P161 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P161_tags_323,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P161_tags_323)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P161_tags_323[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P161_tags_323,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P161_tags_323)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P161_tags_323[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P161_constr_323, &asn_PER_type_ProtocolExtensionContainer_9566P161_constr_323, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P161_323,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P161_specs_323	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P162_325[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_M4Configuration_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P162_tags_325[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P162_specs_325 = {
	sizeof(struct ProtocolExtensionContainer_9566P162),
	offsetof(struct ProtocolExtensionContainer_9566P162, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P162 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P162_tags_325,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P162_tags_325)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P162_tags_325[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P162_tags_325,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P162_tags_325)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P162_tags_325[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P162_constr_325, &asn_PER_type_ProtocolExtensionContainer_9566P162_constr_325, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P162_325,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P162_specs_325	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P163_327[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_M5Configuration_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P163_tags_327[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P163_specs_327 = {
	sizeof(struct ProtocolExtensionContainer_9566P163),
	offsetof(struct ProtocolExtensionContainer_9566P163, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P163 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P163_tags_327,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P163_tags_327)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P163_tags_327[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P163_tags_327,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P163_tags_327)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P163_tags_327[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P163_constr_327, &asn_PER_type_ProtocolExtensionContainer_9566P163_constr_327, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P163_327,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P163_specs_327	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P164_329[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_M6Configuration_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P164_tags_329[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P164_specs_329 = {
	sizeof(struct ProtocolExtensionContainer_9566P164),
	offsetof(struct ProtocolExtensionContainer_9566P164, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P164 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P164_tags_329,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P164_tags_329)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P164_tags_329[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P164_tags_329,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P164_tags_329)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P164_tags_329[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P164_constr_329, &asn_PER_type_ProtocolExtensionContainer_9566P164_constr_329, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P164_329,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P164_specs_329	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P165_331[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_M7Configuration_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P165_tags_331[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P165_specs_331 = {
	sizeof(struct ProtocolExtensionContainer_9566P165),
	offsetof(struct ProtocolExtensionContainer_9566P165, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P165 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P165_tags_331,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P165_tags_331)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P165_tags_331[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P165_tags_331,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P165_tags_331)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P165_tags_331[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P165_constr_331, &asn_PER_type_ProtocolExtensionContainer_9566P165_constr_331, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P165_331,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P165_specs_331	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P166_333[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_MDT_Configuration_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P166_tags_333[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P166_specs_333 = {
	sizeof(struct ProtocolExtensionContainer_9566P166),
	offsetof(struct ProtocolExtensionContainer_9566P166, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P166 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P166_tags_333,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P166_tags_333)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P166_tags_333[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P166_tags_333,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P166_tags_333)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P166_tags_333[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P166_constr_333, &asn_PER_type_ProtocolExtensionContainer_9566P166_constr_333, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P166_333,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P166_specs_333	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P167_335[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_MeNBResourceCoordinationInformationExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P167_tags_335[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P167_specs_335 = {
	sizeof(struct ProtocolExtensionContainer_9566P167),
	offsetof(struct ProtocolExtensionContainer_9566P167, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P167 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P167_tags_335,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P167_tags_335)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P167_tags_335[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P167_tags_335,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P167_tags_335)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P167_tags_335[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P167_constr_335, &asn_PER_type_ProtocolExtensionContainer_9566P167_constr_335, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P167_335,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P167_specs_335	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P168_337[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_MBSFN_Subframe_Info_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P168_tags_337[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P168_specs_337 = {
	sizeof(struct ProtocolExtensionContainer_9566P168),
	offsetof(struct ProtocolExtensionContainer_9566P168, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P168 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P168_tags_337,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P168_tags_337)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P168_tags_337[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P168_tags_337,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P168_tags_337)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P168_tags_337[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P168_constr_337, &asn_PER_type_ProtocolExtensionContainer_9566P168_constr_337, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P168_337,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P168_specs_337	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P169_339[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_BandInfo_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P169_tags_339[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P169_specs_339 = {
	sizeof(struct ProtocolExtensionContainer_9566P169),
	offsetof(struct ProtocolExtensionContainer_9566P169, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P169 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P169_tags_339,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P169_tags_339)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P169_tags_339[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P169_tags_339,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P169_tags_339)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P169_tags_339[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P169_constr_339, &asn_PER_type_ProtocolExtensionContainer_9566P169_constr_339, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P169_339,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P169_specs_339	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P170_341[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_SplitSRB_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P170_tags_341[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P170_specs_341 = {
	sizeof(struct ProtocolExtensionContainer_9566P170),
	offsetof(struct ProtocolExtensionContainer_9566P170, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P170 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P170_tags_341,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P170_tags_341)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P170_tags_341[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P170_tags_341,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P170_tags_341)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P170_tags_341[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P170_constr_341, &asn_PER_type_ProtocolExtensionContainer_9566P170_constr_341, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P170_341,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P170_specs_341	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P171_343[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_UENRMeasurement_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P171_tags_343[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P171_specs_343 = {
	sizeof(struct ProtocolExtensionContainer_9566P171),
	offsetof(struct ProtocolExtensionContainer_9566P171, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P171 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P171_tags_343,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P171_tags_343)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P171_tags_343[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P171_tags_343,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P171_tags_343)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P171_tags_343[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P171_constr_343, &asn_PER_type_ProtocolExtensionContainer_9566P171_constr_343, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P171_343,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P171_specs_343	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P172_345[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_Neighbour_Information_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P172_tags_345[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P172_specs_345 = {
	sizeof(struct ProtocolExtensionContainer_9566P172),
	offsetof(struct ProtocolExtensionContainer_9566P172, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P172 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P172_tags_345,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P172_tags_345)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P172_tags_345[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P172_tags_345,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P172_tags_345)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P172_tags_345[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P172_constr_345, &asn_PER_type_ProtocolExtensionContainer_9566P172_constr_345, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P172_345,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P172_specs_345	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P173_347[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_NRFreqInfo_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P173_tags_347[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P173_specs_347 = {
	sizeof(struct ProtocolExtensionContainer_9566P173),
	offsetof(struct ProtocolExtensionContainer_9566P173, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P173 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P173_tags_347,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P173_tags_347)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P173_tags_347[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P173_tags_347,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P173_tags_347)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P173_tags_347[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P173_constr_347, &asn_PER_type_ProtocolExtensionContainer_9566P173_constr_347, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P173_347,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P173_specs_347	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P174_349[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_NRCGI_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P174_tags_349[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P174_specs_349 = {
	sizeof(struct ProtocolExtensionContainer_9566P174),
	offsetof(struct ProtocolExtensionContainer_9566P174, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P174 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P174_tags_349,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P174_tags_349)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P174_tags_349[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P174_tags_349,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P174_tags_349)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P174_tags_349[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P174_constr_349, &asn_PER_type_ProtocolExtensionContainer_9566P174_constr_349, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P174_349,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P174_specs_349	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P175_351[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_NR_TxBW_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P175_tags_351[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P175_specs_351 = {
	sizeof(struct ProtocolExtensionContainer_9566P175),
	offsetof(struct ProtocolExtensionContainer_9566P175, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P175 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P175_tags_351,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P175_tags_351)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P175_tags_351[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P175_tags_351,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P175_tags_351)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P175_tags_351[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P175_constr_351, &asn_PER_type_ProtocolExtensionContainer_9566P175_constr_351, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P175_351,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P175_specs_351	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P176_353[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_NRUESecurityCapabilities_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P176_tags_353[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P176_specs_353 = {
	sizeof(struct ProtocolExtensionContainer_9566P176),
	offsetof(struct ProtocolExtensionContainer_9566P176, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P176 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P176_tags_353,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P176_tags_353)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P176_tags_353[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P176_tags_353,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P176_tags_353)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P176_tags_353[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P176_constr_353, &asn_PER_type_ProtocolExtensionContainer_9566P176_constr_353, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P176_353,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P176_specs_353	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P177_355[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_PRACH_Configuration_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P177_tags_355[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P177_specs_355 = {
	sizeof(struct ProtocolExtensionContainer_9566P177),
	offsetof(struct ProtocolExtensionContainer_9566P177, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P177 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P177_tags_355,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P177_tags_355)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P177_tags_355[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P177_tags_355,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P177_tags_355)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P177_tags_355[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P177_constr_355, &asn_PER_type_ProtocolExtensionContainer_9566P177_constr_355, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P177_355,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P177_specs_355	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P178_357[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_PLMNAreaBasedQMC_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P178_tags_357[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P178_specs_357 = {
	sizeof(struct ProtocolExtensionContainer_9566P178),
	offsetof(struct ProtocolExtensionContainer_9566P178, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P178 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P178_tags_357,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P178_tags_357)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P178_tags_357[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P178_tags_357,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P178_tags_357)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P178_tags_357[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P178_constr_357, &asn_PER_type_ProtocolExtensionContainer_9566P178_constr_357, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P178_357,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P178_specs_357	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P179_359[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ProSeAuthorized_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P179_tags_359[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P179_specs_359 = {
	sizeof(struct ProtocolExtensionContainer_9566P179),
	offsetof(struct ProtocolExtensionContainer_9566P179, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P179 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P179_tags_359,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P179_tags_359)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P179_tags_359[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P179_tags_359,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P179_tags_359)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P179_tags_359[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P179_constr_359, &asn_PER_type_ProtocolExtensionContainer_9566P179_constr_359, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P179_359,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P179_specs_359	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P180_361[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ProtectedEUTRAResourceIndication_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P180_tags_361[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P180_specs_361 = {
	sizeof(struct ProtocolExtensionContainer_9566P180),
	offsetof(struct ProtocolExtensionContainer_9566P180, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P180 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P180_tags_361,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P180_tags_361)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P180_tags_361[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P180_tags_361,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P180_tags_361)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P180_tags_361[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P180_constr_361, &asn_PER_type_ProtocolExtensionContainer_9566P180_constr_361, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P180_361,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P180_specs_361	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P181_363[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ProtectedFootprintTimePattern_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P181_tags_363[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P181_specs_363 = {
	sizeof(struct ProtocolExtensionContainer_9566P181),
	offsetof(struct ProtocolExtensionContainer_9566P181, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P181 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P181_tags_363,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P181_tags_363)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P181_tags_363[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P181_tags_363,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P181_tags_363)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P181_tags_363[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P181_constr_363, &asn_PER_type_ProtocolExtensionContainer_9566P181_constr_363, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P181_363,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P181_specs_363	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P182_365[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ProtectedResourceList_Item_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P182_tags_365[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P182_specs_365 = {
	sizeof(struct ProtocolExtensionContainer_9566P182),
	offsetof(struct ProtocolExtensionContainer_9566P182, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P182 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P182_tags_365,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P182_tags_365)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P182_tags_365[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P182_tags_365,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P182_tags_365)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P182_tags_365[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P182_constr_365, &asn_PER_type_ProtocolExtensionContainer_9566P182_constr_365, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P182_365,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P182_specs_365	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P183_367[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_RadioResourceStatus_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P183_tags_367[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P183_specs_367 = {
	sizeof(struct ProtocolExtensionContainer_9566P183),
	offsetof(struct ProtocolExtensionContainer_9566P183, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P183 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P183_tags_367,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P183_tags_367)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P183_tags_367[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P183_tags_367,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P183_tags_367)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P183_tags_367[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P183_constr_367, &asn_PER_type_ProtocolExtensionContainer_9566P183_constr_367, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P183_367,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P183_specs_367	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P184_369[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_RelativeNarrowbandTxPower_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P184_tags_369[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P184_specs_369 = {
	sizeof(struct ProtocolExtensionContainer_9566P184),
	offsetof(struct ProtocolExtensionContainer_9566P184, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P184 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P184_tags_369,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P184_tags_369)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P184_tags_369[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P184_tags_369,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P184_tags_369)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P184_tags_369[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P184_constr_369, &asn_PER_type_ProtocolExtensionContainer_9566P184_constr_369, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P184_369,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P184_specs_369	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P185_371[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ReservedSubframePattern_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P185_tags_371[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P185_specs_371 = {
	sizeof(struct ProtocolExtensionContainer_9566P185),
	offsetof(struct ProtocolExtensionContainer_9566P185, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P185 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P185_tags_371,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P185_tags_371)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P185_tags_371[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P185_tags_371,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P185_tags_371)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P185_tags_371[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P185_constr_371, &asn_PER_type_ProtocolExtensionContainer_9566P185_constr_371, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P185_371,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P185_specs_371	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P186_373[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_RLC_Status_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P186_tags_373[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P186_specs_373 = {
	sizeof(struct ProtocolExtensionContainer_9566P186),
	offsetof(struct ProtocolExtensionContainer_9566P186, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P186 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P186_tags_373,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P186_tags_373)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P186_tags_373[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P186_tags_373,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P186_tags_373)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P186_tags_373[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P186_constr_373, &asn_PER_type_ProtocolExtensionContainer_9566P186_constr_373, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P186_373,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P186_specs_373	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P187_375[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_RSRPMeasurementResult_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P187_tags_375[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P187_specs_375 = {
	sizeof(struct ProtocolExtensionContainer_9566P187),
	offsetof(struct ProtocolExtensionContainer_9566P187, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P187 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P187_tags_375,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P187_tags_375)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P187_tags_375[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P187_tags_375,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P187_tags_375)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P187_tags_375[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P187_constr_375, &asn_PER_type_ProtocolExtensionContainer_9566P187_constr_375, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P187_375,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P187_specs_375	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P188_377[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_RSRPMRList_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P188_tags_377[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P188_specs_377 = {
	sizeof(struct ProtocolExtensionContainer_9566P188),
	offsetof(struct ProtocolExtensionContainer_9566P188, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P188 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P188_tags_377,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P188_tags_377)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P188_tags_377[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P188_tags_377,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P188_tags_377)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P188_tags_377[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P188_constr_377, &asn_PER_type_ProtocolExtensionContainer_9566P188_constr_377, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P188_377,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P188_specs_377	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P189_379[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_S1TNLLoadIndicator_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P189_tags_379[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P189_specs_379 = {
	sizeof(struct ProtocolExtensionContainer_9566P189),
	offsetof(struct ProtocolExtensionContainer_9566P189, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P189 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P189_tags_379,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P189_tags_379)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P189_tags_379[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P189_tags_379,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P189_tags_379)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P189_tags_379[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P189_constr_379, &asn_PER_type_ProtocolExtensionContainer_9566P189_constr_379, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P189_379,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P189_specs_379	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P190_381[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_SecondaryRATUsageReport_Item_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P190_tags_381[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P190_specs_381 = {
	sizeof(struct ProtocolExtensionContainer_9566P190),
	offsetof(struct ProtocolExtensionContainer_9566P190, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P190 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P190_tags_381,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P190_tags_381)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P190_tags_381[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P190_tags_381,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P190_tags_381)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P190_tags_381[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P190_constr_381, &asn_PER_type_ProtocolExtensionContainer_9566P190_constr_381, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P190_381,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P190_specs_381	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P191_383[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ServedCell_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P191_tags_383[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P191_specs_383 = {
	sizeof(struct ProtocolExtensionContainer_9566P191),
	offsetof(struct ProtocolExtensionContainer_9566P191, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P191 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P191_tags_383,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P191_tags_383)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P191_tags_383[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P191_tags_383,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P191_tags_383)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P191_tags_383[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P191_constr_383, &asn_PER_type_ProtocolExtensionContainer_9566P191_constr_383, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P191_383,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P191_specs_383	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P192_385[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ServedCell_Information_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P192_tags_385[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P192_specs_385 = {
	sizeof(struct ProtocolExtensionContainer_9566P192),
	offsetof(struct ProtocolExtensionContainer_9566P192, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P192 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P192_tags_385,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P192_tags_385)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P192_tags_385[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P192_tags_385,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P192_tags_385)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P192_tags_385[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P192_constr_385, &asn_PER_type_ProtocolExtensionContainer_9566P192_constr_385, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P192_385,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P192_specs_385	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P193_387[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_SgNBResourceCoordinationInformationExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P193_tags_387[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P193_specs_387 = {
	sizeof(struct ProtocolExtensionContainer_9566P193),
	offsetof(struct ProtocolExtensionContainer_9566P193, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P193 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P193_tags_387,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P193_tags_387)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P193_tags_387[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P193_tags_387,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P193_tags_387)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P193_tags_387[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P193_constr_387, &asn_PER_type_ProtocolExtensionContainer_9566P193_constr_387, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P193_387,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P193_specs_387	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P194_389[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_SpecialSubframe_Info_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P194_tags_389[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P194_specs_389 = {
	sizeof(struct ProtocolExtensionContainer_9566P194),
	offsetof(struct ProtocolExtensionContainer_9566P194, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P194 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P194_tags_389,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P194_tags_389)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P194_tags_389[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P194_tags_389,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P194_tags_389)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P194_tags_389[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P194_constr_389, &asn_PER_type_ProtocolExtensionContainer_9566P194_constr_389, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P194_389,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P194_specs_389	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P195_391[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_SubbandCQI_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P195_tags_391[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P195_specs_391 = {
	sizeof(struct ProtocolExtensionContainer_9566P195),
	offsetof(struct ProtocolExtensionContainer_9566P195, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P195 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P195_tags_391,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P195_tags_391)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P195_tags_391[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P195_tags_391,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P195_tags_391)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P195_tags_391[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P195_constr_391, &asn_PER_type_ProtocolExtensionContainer_9566P195_constr_391, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P195_391,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P195_specs_391	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P196_393[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_Subscription_Based_UE_DifferentiationInfo_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P196_tags_393[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P196_specs_393 = {
	sizeof(struct ProtocolExtensionContainer_9566P196),
	offsetof(struct ProtocolExtensionContainer_9566P196, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P196 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P196_tags_393,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P196_tags_393)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P196_tags_393[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P196_tags_393,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P196_tags_393)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P196_tags_393[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P196_constr_393, &asn_PER_type_ProtocolExtensionContainer_9566P196_constr_393, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P196_393,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P196_specs_393	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P197_395[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ScheduledCommunicationTime_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P197_tags_395[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P197_specs_395 = {
	sizeof(struct ProtocolExtensionContainer_9566P197),
	offsetof(struct ProtocolExtensionContainer_9566P197, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P197 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P197_tags_395,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P197_tags_395)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P197_tags_395[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P197_tags_395,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P197_tags_395)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P197_tags_395[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P197_constr_395, &asn_PER_type_ProtocolExtensionContainer_9566P197_constr_395, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P197_395,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P197_specs_395	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P198_397[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_SubbandCQIItem_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P198_tags_397[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P198_specs_397 = {
	sizeof(struct ProtocolExtensionContainer_9566P198),
	offsetof(struct ProtocolExtensionContainer_9566P198, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P198 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P198_tags_397,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P198_tags_397)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P198_tags_397[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P198_tags_397,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P198_tags_397)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P198_tags_397[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P198_constr_397, &asn_PER_type_ProtocolExtensionContainer_9566P198_constr_397, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P198_397,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P198_specs_397	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P199_399[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_SULInformation_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P199_tags_399[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P199_specs_399 = {
	sizeof(struct ProtocolExtensionContainer_9566P199),
	offsetof(struct ProtocolExtensionContainer_9566P199, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P199 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P199_tags_399,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P199_tags_399)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P199_tags_399[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P199_tags_399,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P199_tags_399)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P199_tags_399[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P199_constr_399, &asn_PER_type_ProtocolExtensionContainer_9566P199_constr_399, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P199_399,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P199_specs_399	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P200_401[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_SupportedSULFreqBandItem_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P200_tags_401[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P200_specs_401 = {
	sizeof(struct ProtocolExtensionContainer_9566P200),
	offsetof(struct ProtocolExtensionContainer_9566P200, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P200 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P200_tags_401,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P200_tags_401)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P200_tags_401[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P200_tags_401,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P200_tags_401)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P200_tags_401[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P200_constr_401, &asn_PER_type_ProtocolExtensionContainer_9566P200_constr_401, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P200_401,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P200_specs_401	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P201_403[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_TABasedMDT_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P201_tags_403[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P201_specs_403 = {
	sizeof(struct ProtocolExtensionContainer_9566P201),
	offsetof(struct ProtocolExtensionContainer_9566P201, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P201 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P201_tags_403,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P201_tags_403)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P201_tags_403[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P201_tags_403,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P201_tags_403)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P201_tags_403[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P201_constr_403, &asn_PER_type_ProtocolExtensionContainer_9566P201_constr_403, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P201_403,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P201_specs_403	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P202_405[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_TAIBasedMDT_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P202_tags_405[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P202_specs_405 = {
	sizeof(struct ProtocolExtensionContainer_9566P202),
	offsetof(struct ProtocolExtensionContainer_9566P202, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P202 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P202_tags_405,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P202_tags_405)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P202_tags_405[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P202_tags_405,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P202_tags_405)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P202_tags_405[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P202_constr_405, &asn_PER_type_ProtocolExtensionContainer_9566P202_constr_405, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P202_405,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P202_specs_405	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P203_407[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_TAI_Item_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P203_tags_407[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P203_specs_407 = {
	sizeof(struct ProtocolExtensionContainer_9566P203),
	offsetof(struct ProtocolExtensionContainer_9566P203, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P203 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P203_tags_407,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P203_tags_407)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P203_tags_407[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P203_tags_407,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P203_tags_407)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P203_tags_407[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P203_constr_407, &asn_PER_type_ProtocolExtensionContainer_9566P203_constr_407, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P203_407,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P203_specs_407	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P204_409[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_TABasedQMC_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P204_tags_409[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P204_specs_409 = {
	sizeof(struct ProtocolExtensionContainer_9566P204),
	offsetof(struct ProtocolExtensionContainer_9566P204, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P204 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P204_tags_409,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P204_tags_409)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P204_tags_409[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P204_tags_409,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P204_tags_409)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P204_tags_409[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P204_constr_409, &asn_PER_type_ProtocolExtensionContainer_9566P204_constr_409, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P204_409,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P204_specs_409	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P205_411[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_TAIBasedQMC_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P205_tags_411[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P205_specs_411 = {
	sizeof(struct ProtocolExtensionContainer_9566P205),
	offsetof(struct ProtocolExtensionContainer_9566P205, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P205 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P205_tags_411,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P205_tags_411)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P205_tags_411[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P205_tags_411,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P205_tags_411)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P205_tags_411[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P205_constr_411, &asn_PER_type_ProtocolExtensionContainer_9566P205_constr_411, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P205_411,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P205_specs_411	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P206_413[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_TDD_Info_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P206_tags_413[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P206_specs_413 = {
	sizeof(struct ProtocolExtensionContainer_9566P206),
	offsetof(struct ProtocolExtensionContainer_9566P206, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P206 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P206_tags_413,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P206_tags_413)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P206_tags_413[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P206_tags_413,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P206_tags_413)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P206_tags_413[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P206_constr_413, &asn_PER_type_ProtocolExtensionContainer_9566P206_constr_413, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P206_413,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P206_specs_413	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P207_415[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_TraceActivation_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P207_tags_415[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P207_specs_415 = {
	sizeof(struct ProtocolExtensionContainer_9566P207),
	offsetof(struct ProtocolExtensionContainer_9566P207, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P207 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P207_tags_415,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P207_tags_415)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P207_tags_415[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P207_tags_415,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P207_tags_415)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P207_tags_415[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P207_constr_415, &asn_PER_type_ProtocolExtensionContainer_9566P207_constr_415, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P207_415,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P207_specs_415	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P208_417[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_Tunnel_Information_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P208_tags_417[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P208_specs_417 = {
	sizeof(struct ProtocolExtensionContainer_9566P208),
	offsetof(struct ProtocolExtensionContainer_9566P208, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P208 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P208_tags_417,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P208_tags_417)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P208_tags_417[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P208_tags_417,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P208_tags_417)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P208_tags_417[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P208_constr_417, &asn_PER_type_ProtocolExtensionContainer_9566P208_constr_417, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P208_417,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P208_specs_417	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P209_419[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_UEAggregate_MaximumBitrate_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P209_tags_419[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P209_specs_419 = {
	sizeof(struct ProtocolExtensionContainer_9566P209),
	offsetof(struct ProtocolExtensionContainer_9566P209, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P209 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P209_tags_419,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P209_tags_419)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P209_tags_419[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P209_tags_419,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P209_tags_419)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P209_tags_419[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P209_constr_419, &asn_PER_type_ProtocolExtensionContainer_9566P209_constr_419, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P209_419,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P209_specs_419	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P210_421[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_UEAppLayerMeasConfig_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P210_tags_421[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P210_specs_421 = {
	sizeof(struct ProtocolExtensionContainer_9566P210),
	offsetof(struct ProtocolExtensionContainer_9566P210, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P210 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P210_tags_421,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P210_tags_421)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P210_tags_421[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P210_tags_421,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P210_tags_421)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P210_tags_421[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P210_constr_421, &asn_PER_type_ProtocolExtensionContainer_9566P210_constr_421, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P210_421,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P210_specs_421	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P211_423[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_UESecurityCapabilities_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P211_tags_423[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P211_specs_423 = {
	sizeof(struct ProtocolExtensionContainer_9566P211),
	offsetof(struct ProtocolExtensionContainer_9566P211, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P211 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P211_tags_423,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P211_tags_423)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P211_tags_423[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P211_tags_423,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P211_tags_423)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P211_tags_423[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P211_constr_423, &asn_PER_type_ProtocolExtensionContainer_9566P211_constr_423, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P211_423,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P211_specs_423	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P212_425[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P212_tags_425[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P212_specs_425 = {
	sizeof(struct ProtocolExtensionContainer_9566P212),
	offsetof(struct ProtocolExtensionContainer_9566P212, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P212 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P212_tags_425,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P212_tags_425)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P212_tags_425[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P212_tags_425,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P212_tags_425)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P212_tags_425[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P212_constr_425, &asn_PER_type_ProtocolExtensionContainer_9566P212_constr_425, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P212_425,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P212_specs_425	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P213_427[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_UEsToBeResetList_Item_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P213_tags_427[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P213_specs_427 = {
	sizeof(struct ProtocolExtensionContainer_9566P213),
	offsetof(struct ProtocolExtensionContainer_9566P213, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P213 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P213_tags_427,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P213_tags_427)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P213_tags_427[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P213_tags_427,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P213_tags_427)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P213_tags_427[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P213_constr_427, &asn_PER_type_ProtocolExtensionContainer_9566P213_constr_427, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P213_427,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P213_specs_427	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P214_429[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ULandDLSharing_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P214_tags_429[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P214_specs_429 = {
	sizeof(struct ProtocolExtensionContainer_9566P214),
	offsetof(struct ProtocolExtensionContainer_9566P214, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P214 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P214_tags_429,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P214_tags_429)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P214_tags_429[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P214_tags_429,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P214_tags_429)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P214_tags_429[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P214_constr_429, &asn_PER_type_ProtocolExtensionContainer_9566P214_constr_429, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P214_429,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P214_specs_429	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P215_431[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ULConfiguration_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P215_tags_431[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P215_specs_431 = {
	sizeof(struct ProtocolExtensionContainer_9566P215),
	offsetof(struct ProtocolExtensionContainer_9566P215, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P215 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P215_tags_431,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P215_tags_431)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P215_tags_431[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P215_tags_431,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P215_tags_431)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P215_tags_431[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P215_constr_431, &asn_PER_type_ProtocolExtensionContainer_9566P215_constr_431, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P215_431,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P215_specs_431	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P216_433[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_UL_HighInterferenceIndicationInfo_Item_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P216_tags_433[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P216_specs_433 = {
	sizeof(struct ProtocolExtensionContainer_9566P216),
	offsetof(struct ProtocolExtensionContainer_9566P216, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P216 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P216_tags_433,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P216_tags_433)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P216_tags_433[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P216_tags_433,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P216_tags_433)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P216_tags_433[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P216_constr_433, &asn_PER_type_ProtocolExtensionContainer_9566P216_constr_433, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P216_433,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P216_specs_433	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P217_435[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ULOnlySharing_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P217_tags_435[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P217_specs_435 = {
	sizeof(struct ProtocolExtensionContainer_9566P217),
	offsetof(struct ProtocolExtensionContainer_9566P217, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P217 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P217_tags_435,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P217_tags_435)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P217_tags_435[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P217_tags_435,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P217_tags_435)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P217_tags_435[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P217_constr_435, &asn_PER_type_ProtocolExtensionContainer_9566P217_constr_435, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P217_435,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P217_specs_435	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P218_437[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_UsableABSInformationFDD_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P218_tags_437[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P218_specs_437 = {
	sizeof(struct ProtocolExtensionContainer_9566P218),
	offsetof(struct ProtocolExtensionContainer_9566P218, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P218 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P218_tags_437,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P218_tags_437)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P218_tags_437[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P218_tags_437,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P218_tags_437)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P218_tags_437[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P218_constr_437, &asn_PER_type_ProtocolExtensionContainer_9566P218_constr_437, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P218_437,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P218_specs_437	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P219_439[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_UsableABSInformationTDD_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P219_tags_439[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P219_specs_439 = {
	sizeof(struct ProtocolExtensionContainer_9566P219),
	offsetof(struct ProtocolExtensionContainer_9566P219, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P219 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P219_tags_439,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P219_tags_439)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P219_tags_439[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P219_tags_439,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P219_tags_439)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P219_tags_439[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P219_constr_439, &asn_PER_type_ProtocolExtensionContainer_9566P219_constr_439, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P219_439,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P219_specs_439	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P220_441[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_V2XServicesAuthorized_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P220_tags_441[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P220_specs_441 = {
	sizeof(struct ProtocolExtensionContainer_9566P220),
	offsetof(struct ProtocolExtensionContainer_9566P220, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P220 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P220_tags_441,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P220_tags_441)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P220_tags_441[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P220_tags_441,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P220_tags_441)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P220_tags_441[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P220_constr_441, &asn_PER_type_ProtocolExtensionContainer_9566P220_constr_441, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P220_441,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P220_specs_441	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P221_443[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_WidebandCQI_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P221_tags_443[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P221_specs_443 = {
	sizeof(struct ProtocolExtensionContainer_9566P221),
	offsetof(struct ProtocolExtensionContainer_9566P221, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P221 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P221_tags_443,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P221_tags_443)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P221_tags_443[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P221_tags_443,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P221_tags_443)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P221_tags_443[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P221_constr_443, &asn_PER_type_ProtocolExtensionContainer_9566P221_constr_443, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P221_443,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P221_specs_443	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_9566P222_445[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_WLANMeasurementConfiguration_ExtIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_9566P222_tags_445[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_9566P222_specs_445 = {
	sizeof(struct ProtocolExtensionContainer_9566P222),
	offsetof(struct ProtocolExtensionContainer_9566P222, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_9566P222 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_9566P222_tags_445,
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P222_tags_445)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P222_tags_445[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_9566P222_tags_445,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_9566P222_tags_445)
		/sizeof(asn_DEF_ProtocolExtensionContainer_9566P222_tags_445[0]), /* 1 */
	{ &asn_OER_type_ProtocolExtensionContainer_9566P222_constr_445, &asn_PER_type_ProtocolExtensionContainer_9566P222_constr_445, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_9566P222_445,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_9566P222_specs_445	/* Additional specs */
};

