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

#include "ProtocolExtensionContainer.h"

#include "ProtocolExtensionField.h"
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P0_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P1_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P2_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P3_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P4_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P5_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P6_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P7_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P8_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P9_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P10_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P11_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P12_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P13_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P14_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P15_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P16_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P17_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P18_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P19_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P20_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P21_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P22_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P23_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P24_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P25_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P26_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P27_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P28_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P29_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P30_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P31_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P32_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P33_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P34_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P35_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P36_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P37_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P38_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P39_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P40_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P41_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P42_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P43_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P44_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P45_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P46_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P47_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P48_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P49_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P50_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P51_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P52_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P53_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P54_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P55_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P56_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P57_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P58_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P59_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P60_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P61_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P62_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P63_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P64_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P65_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P66_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P67_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P68_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P69_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P70_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P71_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P72_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P73_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P74_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P75_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 */
};
asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P0_1[] = {
	{ 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_8858P0_tags_1[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P0_specs_1 = {
	sizeof(struct ProtocolExtensionContainer_8858P0),
	offsetof(struct ProtocolExtensionContainer_8858P0, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P0 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P0_tags_1,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P0_tags_1)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P0_tags_1[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P0_tags_1,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P0_tags_1)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P0_tags_1[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P0_constr_1, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P0_1,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P0_specs_1	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P1_3[] = {
	{ 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_8858P1_tags_3[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P1_specs_3 = {
	sizeof(struct ProtocolExtensionContainer_8858P1),
	offsetof(struct ProtocolExtensionContainer_8858P1, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P1 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P1_tags_3,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P1_tags_3)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P1_tags_3[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P1_tags_3,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P1_tags_3)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P1_tags_3[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P1_constr_3, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P1_3,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P1_specs_3	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P2_5[] = {
	{ 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_8858P2_tags_5[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P2_specs_5 = {
	sizeof(struct ProtocolExtensionContainer_8858P2),
	offsetof(struct ProtocolExtensionContainer_8858P2, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P2 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P2_tags_5,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P2_tags_5)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P2_tags_5[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P2_tags_5,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P2_tags_5)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P2_tags_5[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P2_constr_5, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P2_5,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P2_specs_5	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P3_7[] = {
	{ 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_8858P3_tags_7[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P3_specs_7 = {
	sizeof(struct ProtocolExtensionContainer_8858P3),
	offsetof(struct ProtocolExtensionContainer_8858P3, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P3 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P3_tags_7,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P3_tags_7)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P3_tags_7[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P3_tags_7,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P3_tags_7)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P3_tags_7[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P3_constr_7, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P3_7,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P3_specs_7	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P4_9[] = {
	{ 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_8858P4_tags_9[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P4_specs_9 = {
	sizeof(struct ProtocolExtensionContainer_8858P4),
	offsetof(struct ProtocolExtensionContainer_8858P4, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P4 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P4_tags_9,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P4_tags_9)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P4_tags_9[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P4_tags_9,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P4_tags_9)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P4_tags_9[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P4_constr_9, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P4_9,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P4_specs_9	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P5_11[] = {
	{ 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_8858P5_tags_11[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P5_specs_11 = {
	sizeof(struct ProtocolExtensionContainer_8858P5),
	offsetof(struct ProtocolExtensionContainer_8858P5, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P5 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P5_tags_11,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P5_tags_11)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P5_tags_11[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P5_tags_11,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P5_tags_11)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P5_tags_11[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P5_constr_11, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P5_11,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P5_specs_11	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P6_13[] = {
	{ 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_8858P6_tags_13[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P6_specs_13 = {
	sizeof(struct ProtocolExtensionContainer_8858P6),
	offsetof(struct ProtocolExtensionContainer_8858P6, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P6 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P6_tags_13,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P6_tags_13)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P6_tags_13[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P6_tags_13,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P6_tags_13)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P6_tags_13[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P6_constr_13, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P6_13,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P6_specs_13	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P7_15[] = {
	{ 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_8858P7_tags_15[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P7_specs_15 = {
	sizeof(struct ProtocolExtensionContainer_8858P7),
	offsetof(struct ProtocolExtensionContainer_8858P7, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P7 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P7_tags_15,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P7_tags_15)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P7_tags_15[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P7_tags_15,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P7_tags_15)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P7_tags_15[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P7_constr_15, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P7_15,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P7_specs_15	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P8_17[] = {
	{ 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_8858P8_tags_17[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P8_specs_17 = {
	sizeof(struct ProtocolExtensionContainer_8858P8),
	offsetof(struct ProtocolExtensionContainer_8858P8, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P8 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P8_tags_17,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P8_tags_17)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P8_tags_17[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P8_tags_17,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P8_tags_17)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P8_tags_17[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P8_constr_17, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P8_17,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P8_specs_17	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P9_19[] = {
	{ 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_8858P9_tags_19[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P9_specs_19 = {
	sizeof(struct ProtocolExtensionContainer_8858P9),
	offsetof(struct ProtocolExtensionContainer_8858P9, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P9 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P9_tags_19,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P9_tags_19)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P9_tags_19[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P9_tags_19,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P9_tags_19)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P9_tags_19[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P9_constr_19, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P9_19,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P9_specs_19	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P10_21[] = {
	{ 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_8858P10_tags_21[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P10_specs_21 = {
	sizeof(struct ProtocolExtensionContainer_8858P10),
	offsetof(struct ProtocolExtensionContainer_8858P10, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P10 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P10_tags_21,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P10_tags_21)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P10_tags_21[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P10_tags_21,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P10_tags_21)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P10_tags_21[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P10_constr_21, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P10_21,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P10_specs_21	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P11_23[] = {
	{ 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_8858P11_tags_23[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P11_specs_23 = {
	sizeof(struct ProtocolExtensionContainer_8858P11),
	offsetof(struct ProtocolExtensionContainer_8858P11, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P11 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P11_tags_23,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P11_tags_23)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P11_tags_23[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P11_tags_23,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P11_tags_23)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P11_tags_23[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P11_constr_23, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P11_23,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P11_specs_23	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P12_25[] = {
	{ 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_8858P12_tags_25[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P12_specs_25 = {
	sizeof(struct ProtocolExtensionContainer_8858P12),
	offsetof(struct ProtocolExtensionContainer_8858P12, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P12 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P12_tags_25,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P12_tags_25)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P12_tags_25[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P12_tags_25,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P12_tags_25)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P12_tags_25[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P12_constr_25, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P12_25,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P12_specs_25	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P13_27[] = {
	{ 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_8858P13_tags_27[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P13_specs_27 = {
	sizeof(struct ProtocolExtensionContainer_8858P13),
	offsetof(struct ProtocolExtensionContainer_8858P13, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P13 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P13_tags_27,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P13_tags_27)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P13_tags_27[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P13_tags_27,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P13_tags_27)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P13_tags_27[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P13_constr_27, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P13_27,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P13_specs_27	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P14_29[] = {
	{ 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_8858P14_tags_29[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P14_specs_29 = {
	sizeof(struct ProtocolExtensionContainer_8858P14),
	offsetof(struct ProtocolExtensionContainer_8858P14, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P14 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P14_tags_29,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P14_tags_29)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P14_tags_29[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P14_tags_29,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P14_tags_29)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P14_tags_29[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P14_constr_29, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P14_29,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P14_specs_29	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P15_31[] = {
	{ 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_8858P15_tags_31[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P15_specs_31 = {
	sizeof(struct ProtocolExtensionContainer_8858P15),
	offsetof(struct ProtocolExtensionContainer_8858P15, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P15 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P15_tags_31,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P15_tags_31)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P15_tags_31[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P15_tags_31,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P15_tags_31)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P15_tags_31[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P15_constr_31, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P15_31,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P15_specs_31	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P16_33[] = {
	{ 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_8858P16_tags_33[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P16_specs_33 = {
	sizeof(struct ProtocolExtensionContainer_8858P16),
	offsetof(struct ProtocolExtensionContainer_8858P16, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P16 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P16_tags_33,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P16_tags_33)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P16_tags_33[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P16_tags_33,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P16_tags_33)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P16_tags_33[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P16_constr_33, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P16_33,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P16_specs_33	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P17_35[] = {
	{ 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_8858P17_tags_35[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P17_specs_35 = {
	sizeof(struct ProtocolExtensionContainer_8858P17),
	offsetof(struct ProtocolExtensionContainer_8858P17, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P17 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P17_tags_35,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P17_tags_35)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P17_tags_35[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P17_tags_35,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P17_tags_35)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P17_tags_35[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P17_constr_35, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P17_35,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P17_specs_35	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P18_37[] = {
	{ 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_8858P18_tags_37[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P18_specs_37 = {
	sizeof(struct ProtocolExtensionContainer_8858P18),
	offsetof(struct ProtocolExtensionContainer_8858P18, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P18 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P18_tags_37,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P18_tags_37)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P18_tags_37[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P18_tags_37,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P18_tags_37)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P18_tags_37[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P18_constr_37, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P18_37,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P18_specs_37	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P19_39[] = {
	{ 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_8858P19_tags_39[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P19_specs_39 = {
	sizeof(struct ProtocolExtensionContainer_8858P19),
	offsetof(struct ProtocolExtensionContainer_8858P19, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P19 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P19_tags_39,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P19_tags_39)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P19_tags_39[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P19_tags_39,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P19_tags_39)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P19_tags_39[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P19_constr_39, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P19_39,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P19_specs_39	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P20_41[] = {
	{ 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_8858P20_tags_41[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P20_specs_41 = {
	sizeof(struct ProtocolExtensionContainer_8858P20),
	offsetof(struct ProtocolExtensionContainer_8858P20, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P20 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P20_tags_41,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P20_tags_41)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P20_tags_41[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P20_tags_41,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P20_tags_41)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P20_tags_41[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P20_constr_41, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P20_41,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P20_specs_41	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P21_43[] = {
	{ 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_8858P21_tags_43[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P21_specs_43 = {
	sizeof(struct ProtocolExtensionContainer_8858P21),
	offsetof(struct ProtocolExtensionContainer_8858P21, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P21 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P21_tags_43,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P21_tags_43)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P21_tags_43[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P21_tags_43,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P21_tags_43)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P21_tags_43[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P21_constr_43, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P21_43,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P21_specs_43	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P22_45[] = {
	{ 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_8858P22_tags_45[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P22_specs_45 = {
	sizeof(struct ProtocolExtensionContainer_8858P22),
	offsetof(struct ProtocolExtensionContainer_8858P22, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P22 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P22_tags_45,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P22_tags_45)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P22_tags_45[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P22_tags_45,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P22_tags_45)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P22_tags_45[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P22_constr_45, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P22_45,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P22_specs_45	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P23_47[] = {
	{ 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_8858P23_tags_47[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P23_specs_47 = {
	sizeof(struct ProtocolExtensionContainer_8858P23),
	offsetof(struct ProtocolExtensionContainer_8858P23, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P23 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P23_tags_47,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P23_tags_47)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P23_tags_47[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P23_tags_47,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P23_tags_47)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P23_tags_47[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P23_constr_47, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P23_47,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P23_specs_47	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P24_49[] = {
	{ 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_8858P24_tags_49[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P24_specs_49 = {
	sizeof(struct ProtocolExtensionContainer_8858P24),
	offsetof(struct ProtocolExtensionContainer_8858P24, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P24 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P24_tags_49,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P24_tags_49)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P24_tags_49[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P24_tags_49,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P24_tags_49)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P24_tags_49[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P24_constr_49, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P24_49,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P24_specs_49	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P25_51[] = {
	{ 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_8858P25_tags_51[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P25_specs_51 = {
	sizeof(struct ProtocolExtensionContainer_8858P25),
	offsetof(struct ProtocolExtensionContainer_8858P25, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P25 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P25_tags_51,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P25_tags_51)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P25_tags_51[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P25_tags_51,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P25_tags_51)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P25_tags_51[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P25_constr_51, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P25_51,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P25_specs_51	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P26_53[] = {
	{ 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_8858P26_tags_53[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P26_specs_53 = {
	sizeof(struct ProtocolExtensionContainer_8858P26),
	offsetof(struct ProtocolExtensionContainer_8858P26, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P26 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P26_tags_53,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P26_tags_53)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P26_tags_53[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P26_tags_53,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P26_tags_53)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P26_tags_53[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P26_constr_53, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P26_53,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P26_specs_53	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P27_55[] = {
	{ 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_8858P27_tags_55[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P27_specs_55 = {
	sizeof(struct ProtocolExtensionContainer_8858P27),
	offsetof(struct ProtocolExtensionContainer_8858P27, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P27 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P27_tags_55,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P27_tags_55)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P27_tags_55[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P27_tags_55,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P27_tags_55)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P27_tags_55[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P27_constr_55, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P27_55,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P27_specs_55	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P28_57[] = {
	{ 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_8858P28_tags_57[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P28_specs_57 = {
	sizeof(struct ProtocolExtensionContainer_8858P28),
	offsetof(struct ProtocolExtensionContainer_8858P28, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P28 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P28_tags_57,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P28_tags_57)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P28_tags_57[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P28_tags_57,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P28_tags_57)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P28_tags_57[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P28_constr_57, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P28_57,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P28_specs_57	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P29_59[] = {
	{ 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_8858P29_tags_59[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P29_specs_59 = {
	sizeof(struct ProtocolExtensionContainer_8858P29),
	offsetof(struct ProtocolExtensionContainer_8858P29, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P29 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P29_tags_59,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P29_tags_59)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P29_tags_59[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P29_tags_59,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P29_tags_59)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P29_tags_59[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P29_constr_59, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P29_59,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P29_specs_59	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P30_61[] = {
	{ 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_8858P30_tags_61[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P30_specs_61 = {
	sizeof(struct ProtocolExtensionContainer_8858P30),
	offsetof(struct ProtocolExtensionContainer_8858P30, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P30 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P30_tags_61,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P30_tags_61)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P30_tags_61[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P30_tags_61,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P30_tags_61)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P30_tags_61[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P30_constr_61, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P30_61,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P30_specs_61	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P31_63[] = {
	{ 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_8858P31_tags_63[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P31_specs_63 = {
	sizeof(struct ProtocolExtensionContainer_8858P31),
	offsetof(struct ProtocolExtensionContainer_8858P31, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P31 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P31_tags_63,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P31_tags_63)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P31_tags_63[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P31_tags_63,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P31_tags_63)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P31_tags_63[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P31_constr_63, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P31_63,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P31_specs_63	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P32_65[] = {
	{ 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_8858P32_tags_65[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P32_specs_65 = {
	sizeof(struct ProtocolExtensionContainer_8858P32),
	offsetof(struct ProtocolExtensionContainer_8858P32, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P32 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P32_tags_65,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P32_tags_65)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P32_tags_65[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P32_tags_65,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P32_tags_65)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P32_tags_65[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P32_constr_65, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P32_65,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P32_specs_65	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P33_67[] = {
	{ 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_8858P33_tags_67[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P33_specs_67 = {
	sizeof(struct ProtocolExtensionContainer_8858P33),
	offsetof(struct ProtocolExtensionContainer_8858P33, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P33 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P33_tags_67,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P33_tags_67)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P33_tags_67[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P33_tags_67,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P33_tags_67)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P33_tags_67[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P33_constr_67, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P33_67,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P33_specs_67	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P34_69[] = {
	{ 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_8858P34_tags_69[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P34_specs_69 = {
	sizeof(struct ProtocolExtensionContainer_8858P34),
	offsetof(struct ProtocolExtensionContainer_8858P34, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P34 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P34_tags_69,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P34_tags_69)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P34_tags_69[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P34_tags_69,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P34_tags_69)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P34_tags_69[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P34_constr_69, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P34_69,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P34_specs_69	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P35_71[] = {
	{ 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_8858P35_tags_71[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P35_specs_71 = {
	sizeof(struct ProtocolExtensionContainer_8858P35),
	offsetof(struct ProtocolExtensionContainer_8858P35, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P35 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P35_tags_71,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P35_tags_71)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P35_tags_71[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P35_tags_71,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P35_tags_71)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P35_tags_71[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P35_constr_71, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P35_71,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P35_specs_71	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P36_73[] = {
	{ 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_8858P36_tags_73[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P36_specs_73 = {
	sizeof(struct ProtocolExtensionContainer_8858P36),
	offsetof(struct ProtocolExtensionContainer_8858P36, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P36 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P36_tags_73,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P36_tags_73)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P36_tags_73[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P36_tags_73,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P36_tags_73)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P36_tags_73[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P36_constr_73, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P36_73,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P36_specs_73	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P37_75[] = {
	{ 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_8858P37_tags_75[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P37_specs_75 = {
	sizeof(struct ProtocolExtensionContainer_8858P37),
	offsetof(struct ProtocolExtensionContainer_8858P37, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P37 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P37_tags_75,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P37_tags_75)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P37_tags_75[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P37_tags_75,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P37_tags_75)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P37_tags_75[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P37_constr_75, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P37_75,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P37_specs_75	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P38_77[] = {
	{ 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_8858P38_tags_77[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P38_specs_77 = {
	sizeof(struct ProtocolExtensionContainer_8858P38),
	offsetof(struct ProtocolExtensionContainer_8858P38, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P38 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P38_tags_77,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P38_tags_77)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P38_tags_77[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P38_tags_77,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P38_tags_77)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P38_tags_77[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P38_constr_77, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P38_77,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P38_specs_77	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P39_79[] = {
	{ 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_8858P39_tags_79[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P39_specs_79 = {
	sizeof(struct ProtocolExtensionContainer_8858P39),
	offsetof(struct ProtocolExtensionContainer_8858P39, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P39 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P39_tags_79,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P39_tags_79)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P39_tags_79[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P39_tags_79,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P39_tags_79)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P39_tags_79[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P39_constr_79, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P39_79,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P39_specs_79	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P40_81[] = {
	{ 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_8858P40_tags_81[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P40_specs_81 = {
	sizeof(struct ProtocolExtensionContainer_8858P40),
	offsetof(struct ProtocolExtensionContainer_8858P40, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P40 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P40_tags_81,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P40_tags_81)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P40_tags_81[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P40_tags_81,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P40_tags_81)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P40_tags_81[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P40_constr_81, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P40_81,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P40_specs_81	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P41_83[] = {
	{ 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_8858P41_tags_83[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P41_specs_83 = {
	sizeof(struct ProtocolExtensionContainer_8858P41),
	offsetof(struct ProtocolExtensionContainer_8858P41, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P41 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P41_tags_83,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P41_tags_83)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P41_tags_83[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P41_tags_83,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P41_tags_83)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P41_tags_83[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P41_constr_83, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P41_83,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P41_specs_83	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P42_85[] = {
	{ 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_8858P42_tags_85[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P42_specs_85 = {
	sizeof(struct ProtocolExtensionContainer_8858P42),
	offsetof(struct ProtocolExtensionContainer_8858P42, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P42 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P42_tags_85,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P42_tags_85)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P42_tags_85[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P42_tags_85,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P42_tags_85)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P42_tags_85[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P42_constr_85, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P42_85,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P42_specs_85	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P43_87[] = {
	{ 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_8858P43_tags_87[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P43_specs_87 = {
	sizeof(struct ProtocolExtensionContainer_8858P43),
	offsetof(struct ProtocolExtensionContainer_8858P43, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P43 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P43_tags_87,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P43_tags_87)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P43_tags_87[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P43_tags_87,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P43_tags_87)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P43_tags_87[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P43_constr_87, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P43_87,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P43_specs_87	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P44_89[] = {
	{ 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_8858P44_tags_89[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P44_specs_89 = {
	sizeof(struct ProtocolExtensionContainer_8858P44),
	offsetof(struct ProtocolExtensionContainer_8858P44, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P44 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P44_tags_89,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P44_tags_89)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P44_tags_89[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P44_tags_89,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P44_tags_89)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P44_tags_89[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P44_constr_89, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P44_89,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P44_specs_89	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P45_91[] = {
	{ 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_8858P45_tags_91[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P45_specs_91 = {
	sizeof(struct ProtocolExtensionContainer_8858P45),
	offsetof(struct ProtocolExtensionContainer_8858P45, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P45 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P45_tags_91,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P45_tags_91)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P45_tags_91[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P45_tags_91,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P45_tags_91)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P45_tags_91[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P45_constr_91, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P45_91,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P45_specs_91	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P46_93[] = {
	{ 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_8858P46_tags_93[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P46_specs_93 = {
	sizeof(struct ProtocolExtensionContainer_8858P46),
	offsetof(struct ProtocolExtensionContainer_8858P46, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P46 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P46_tags_93,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P46_tags_93)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P46_tags_93[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P46_tags_93,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P46_tags_93)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P46_tags_93[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P46_constr_93, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P46_93,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P46_specs_93	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P47_95[] = {
	{ 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_8858P47_tags_95[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P47_specs_95 = {
	sizeof(struct ProtocolExtensionContainer_8858P47),
	offsetof(struct ProtocolExtensionContainer_8858P47, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P47 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P47_tags_95,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P47_tags_95)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P47_tags_95[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P47_tags_95,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P47_tags_95)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P47_tags_95[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P47_constr_95, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P47_95,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P47_specs_95	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P48_97[] = {
	{ 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_8858P48_tags_97[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P48_specs_97 = {
	sizeof(struct ProtocolExtensionContainer_8858P48),
	offsetof(struct ProtocolExtensionContainer_8858P48, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P48 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P48_tags_97,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P48_tags_97)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P48_tags_97[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P48_tags_97,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P48_tags_97)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P48_tags_97[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P48_constr_97, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P48_97,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P48_specs_97	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P49_99[] = {
	{ 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_8858P49_tags_99[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P49_specs_99 = {
	sizeof(struct ProtocolExtensionContainer_8858P49),
	offsetof(struct ProtocolExtensionContainer_8858P49, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P49 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P49_tags_99,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P49_tags_99)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P49_tags_99[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P49_tags_99,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P49_tags_99)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P49_tags_99[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P49_constr_99, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P49_99,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P49_specs_99	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P50_101[] = {
	{ 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_8858P50_tags_101[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P50_specs_101 = {
	sizeof(struct ProtocolExtensionContainer_8858P50),
	offsetof(struct ProtocolExtensionContainer_8858P50, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P50 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P50_tags_101,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P50_tags_101)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P50_tags_101[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P50_tags_101,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P50_tags_101)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P50_tags_101[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P50_constr_101, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P50_101,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P50_specs_101	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P51_103[] = {
	{ 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_8858P51_tags_103[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P51_specs_103 = {
	sizeof(struct ProtocolExtensionContainer_8858P51),
	offsetof(struct ProtocolExtensionContainer_8858P51, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P51 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P51_tags_103,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P51_tags_103)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P51_tags_103[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P51_tags_103,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P51_tags_103)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P51_tags_103[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P51_constr_103, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P51_103,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P51_specs_103	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P52_105[] = {
	{ 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_8858P52_tags_105[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P52_specs_105 = {
	sizeof(struct ProtocolExtensionContainer_8858P52),
	offsetof(struct ProtocolExtensionContainer_8858P52, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P52 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P52_tags_105,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P52_tags_105)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P52_tags_105[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P52_tags_105,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P52_tags_105)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P52_tags_105[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P52_constr_105, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P52_105,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P52_specs_105	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P53_107[] = {
	{ 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_8858P53_tags_107[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P53_specs_107 = {
	sizeof(struct ProtocolExtensionContainer_8858P53),
	offsetof(struct ProtocolExtensionContainer_8858P53, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P53 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P53_tags_107,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P53_tags_107)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P53_tags_107[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P53_tags_107,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P53_tags_107)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P53_tags_107[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P53_constr_107, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P53_107,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P53_specs_107	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P54_109[] = {
	{ 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_8858P54_tags_109[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P54_specs_109 = {
	sizeof(struct ProtocolExtensionContainer_8858P54),
	offsetof(struct ProtocolExtensionContainer_8858P54, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P54 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P54_tags_109,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P54_tags_109)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P54_tags_109[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P54_tags_109,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P54_tags_109)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P54_tags_109[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P54_constr_109, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P54_109,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P54_specs_109	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P55_111[] = {
	{ 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_8858P55_tags_111[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P55_specs_111 = {
	sizeof(struct ProtocolExtensionContainer_8858P55),
	offsetof(struct ProtocolExtensionContainer_8858P55, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P55 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P55_tags_111,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P55_tags_111)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P55_tags_111[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P55_tags_111,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P55_tags_111)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P55_tags_111[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P55_constr_111, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P55_111,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P55_specs_111	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P56_113[] = {
	{ 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_8858P56_tags_113[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P56_specs_113 = {
	sizeof(struct ProtocolExtensionContainer_8858P56),
	offsetof(struct ProtocolExtensionContainer_8858P56, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P56 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P56_tags_113,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P56_tags_113)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P56_tags_113[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P56_tags_113,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P56_tags_113)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P56_tags_113[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P56_constr_113, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P56_113,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P56_specs_113	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P57_115[] = {
	{ 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_8858P57_tags_115[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P57_specs_115 = {
	sizeof(struct ProtocolExtensionContainer_8858P57),
	offsetof(struct ProtocolExtensionContainer_8858P57, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P57 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P57_tags_115,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P57_tags_115)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P57_tags_115[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P57_tags_115,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P57_tags_115)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P57_tags_115[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P57_constr_115, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P57_115,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P57_specs_115	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P58_117[] = {
	{ 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_8858P58_tags_117[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P58_specs_117 = {
	sizeof(struct ProtocolExtensionContainer_8858P58),
	offsetof(struct ProtocolExtensionContainer_8858P58, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P58 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P58_tags_117,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P58_tags_117)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P58_tags_117[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P58_tags_117,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P58_tags_117)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P58_tags_117[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P58_constr_117, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P58_117,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P58_specs_117	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P59_119[] = {
	{ 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_8858P59_tags_119[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P59_specs_119 = {
	sizeof(struct ProtocolExtensionContainer_8858P59),
	offsetof(struct ProtocolExtensionContainer_8858P59, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P59 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P59_tags_119,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P59_tags_119)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P59_tags_119[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P59_tags_119,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P59_tags_119)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P59_tags_119[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P59_constr_119, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P59_119,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P59_specs_119	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P60_121[] = {
	{ 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_8858P60_tags_121[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P60_specs_121 = {
	sizeof(struct ProtocolExtensionContainer_8858P60),
	offsetof(struct ProtocolExtensionContainer_8858P60, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P60 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P60_tags_121,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P60_tags_121)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P60_tags_121[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P60_tags_121,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P60_tags_121)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P60_tags_121[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P60_constr_121, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P60_121,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P60_specs_121	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P61_123[] = {
	{ 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_8858P61_tags_123[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P61_specs_123 = {
	sizeof(struct ProtocolExtensionContainer_8858P61),
	offsetof(struct ProtocolExtensionContainer_8858P61, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P61 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P61_tags_123,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P61_tags_123)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P61_tags_123[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P61_tags_123,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P61_tags_123)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P61_tags_123[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P61_constr_123, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P61_123,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P61_specs_123	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P62_125[] = {
	{ 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_8858P62_tags_125[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P62_specs_125 = {
	sizeof(struct ProtocolExtensionContainer_8858P62),
	offsetof(struct ProtocolExtensionContainer_8858P62, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P62 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P62_tags_125,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P62_tags_125)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P62_tags_125[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P62_tags_125,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P62_tags_125)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P62_tags_125[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P62_constr_125, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P62_125,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P62_specs_125	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P63_127[] = {
	{ 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_8858P63_tags_127[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P63_specs_127 = {
	sizeof(struct ProtocolExtensionContainer_8858P63),
	offsetof(struct ProtocolExtensionContainer_8858P63, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P63 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P63_tags_127,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P63_tags_127)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P63_tags_127[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P63_tags_127,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P63_tags_127)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P63_tags_127[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P63_constr_127, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P63_127,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P63_specs_127	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P64_129[] = {
	{ 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_8858P64_tags_129[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P64_specs_129 = {
	sizeof(struct ProtocolExtensionContainer_8858P64),
	offsetof(struct ProtocolExtensionContainer_8858P64, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P64 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P64_tags_129,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P64_tags_129)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P64_tags_129[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P64_tags_129,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P64_tags_129)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P64_tags_129[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P64_constr_129, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P64_129,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P64_specs_129	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P65_131[] = {
	{ 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_8858P65_tags_131[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P65_specs_131 = {
	sizeof(struct ProtocolExtensionContainer_8858P65),
	offsetof(struct ProtocolExtensionContainer_8858P65, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P65 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P65_tags_131,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P65_tags_131)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P65_tags_131[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P65_tags_131,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P65_tags_131)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P65_tags_131[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P65_constr_131, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P65_131,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P65_specs_131	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P66_133[] = {
	{ 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_8858P66_tags_133[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P66_specs_133 = {
	sizeof(struct ProtocolExtensionContainer_8858P66),
	offsetof(struct ProtocolExtensionContainer_8858P66, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P66 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P66_tags_133,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P66_tags_133)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P66_tags_133[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P66_tags_133,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P66_tags_133)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P66_tags_133[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P66_constr_133, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P66_133,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P66_specs_133	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P67_135[] = {
	{ 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_8858P67_tags_135[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P67_specs_135 = {
	sizeof(struct ProtocolExtensionContainer_8858P67),
	offsetof(struct ProtocolExtensionContainer_8858P67, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P67 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P67_tags_135,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P67_tags_135)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P67_tags_135[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P67_tags_135,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P67_tags_135)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P67_tags_135[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P67_constr_135, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P67_135,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P67_specs_135	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P68_137[] = {
	{ 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_8858P68_tags_137[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P68_specs_137 = {
	sizeof(struct ProtocolExtensionContainer_8858P68),
	offsetof(struct ProtocolExtensionContainer_8858P68, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P68 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P68_tags_137,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P68_tags_137)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P68_tags_137[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P68_tags_137,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P68_tags_137)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P68_tags_137[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P68_constr_137, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P68_137,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P68_specs_137	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P69_139[] = {
	{ 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_8858P69_tags_139[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P69_specs_139 = {
	sizeof(struct ProtocolExtensionContainer_8858P69),
	offsetof(struct ProtocolExtensionContainer_8858P69, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P69 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P69_tags_139,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P69_tags_139)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P69_tags_139[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P69_tags_139,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P69_tags_139)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P69_tags_139[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P69_constr_139, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P69_139,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P69_specs_139	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P70_141[] = {
	{ 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_8858P70_tags_141[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P70_specs_141 = {
	sizeof(struct ProtocolExtensionContainer_8858P70),
	offsetof(struct ProtocolExtensionContainer_8858P70, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P70 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P70_tags_141,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P70_tags_141)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P70_tags_141[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P70_tags_141,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P70_tags_141)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P70_tags_141[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P70_constr_141, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P70_141,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P70_specs_141	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P71_143[] = {
	{ 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_8858P71_tags_143[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P71_specs_143 = {
	sizeof(struct ProtocolExtensionContainer_8858P71),
	offsetof(struct ProtocolExtensionContainer_8858P71, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P71 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P71_tags_143,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P71_tags_143)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P71_tags_143[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P71_tags_143,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P71_tags_143)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P71_tags_143[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P71_constr_143, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P71_143,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P71_specs_143	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P72_145[] = {
	{ 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_8858P72_tags_145[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P72_specs_145 = {
	sizeof(struct ProtocolExtensionContainer_8858P72),
	offsetof(struct ProtocolExtensionContainer_8858P72, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P72 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P72_tags_145,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P72_tags_145)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P72_tags_145[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P72_tags_145,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P72_tags_145)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P72_tags_145[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P72_constr_145, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P72_145,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P72_specs_145	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P73_147[] = {
	{ 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_8858P73_tags_147[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P73_specs_147 = {
	sizeof(struct ProtocolExtensionContainer_8858P73),
	offsetof(struct ProtocolExtensionContainer_8858P73, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P73 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P73_tags_147,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P73_tags_147)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P73_tags_147[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P73_tags_147,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P73_tags_147)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P73_tags_147[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P73_constr_147, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P73_147,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P73_specs_147	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P74_149[] = {
	{ 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_8858P74_tags_149[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P74_specs_149 = {
	sizeof(struct ProtocolExtensionContainer_8858P74),
	offsetof(struct ProtocolExtensionContainer_8858P74, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P74 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P74_tags_149,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P74_tags_149)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P74_tags_149[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P74_tags_149,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P74_tags_149)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P74_tags_149[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P74_constr_149, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P74_149,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P74_specs_149	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P75_151[] = {
	{ 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_8858P75_tags_151[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P75_specs_151 = {
	sizeof(struct ProtocolExtensionContainer_8858P75),
	offsetof(struct ProtocolExtensionContainer_8858P75, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P75 = {
	"ProtocolExtensionContainer",
	"ProtocolExtensionContainer",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolExtensionContainer_8858P75_tags_151,
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P75_tags_151)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P75_tags_151[0]), /* 1 */
	asn_DEF_ProtocolExtensionContainer_8858P75_tags_151,	/* Same as above */
	sizeof(asn_DEF_ProtocolExtensionContainer_8858P75_tags_151)
		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P75_tags_151[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P75_constr_151, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolExtensionContainer_8858P75_151,
	1,	/* Single element */
	&asn_SPC_ProtocolExtensionContainer_8858P75_specs_151	/* Additional specs */
};

