eSIM RSP 测试用例对比站

人工切片(-man) ↔ Cas 盲生成(-cas)· 真机真卡执行证据对照

源码对照:4.2.24.2.1

ES10c eUICC 存储复位 / TC_eUICC_ES10c.eUICCMemoryReset

左侧为人工切片入口(-man,来自 原料/切片 的最小可执行脚本),右侧为 Cas 盲生成入口(-cas,仅依据规范生成)。文件按原始编码(多为 GBK)解码为 UTF-8 显示,行号自 1 起;字节级原文与 sha256 见两侧脚本包。完整 unified diff 见本页底部折叠区,以及 报告原文 §4。
-man 入口
Import/TestCase_SGP_23.js
588 行 / 23852 字符 / gb18030
-cas 入口
TC_eUICC_ES10c_eUICCMemoryReset/Import/TC_eUICC_ES10c_eUICCMemoryReset.js
791 行 / 59167 字符 / gb18030
默认折行显示长行;取消勾选可横向滚动查看原始行宽
-man 人工切片Import/TestCase_SGP_23.js588 行 / 23852 字符 / gb18030入口函数 @L3
1// slice of Import\TestCase_SGP_23.js - cases: TC_eUICC_ES10c_eUICCMemoryReset_01_Nominal_Reset_All_Operational_Profiles_without_Enabled_Profile + TC_eUICC_ES10c_eUICCMemoryReset_02_Nominal_Reset_All_Operational_Profiles_with_Enabled_Profile + TC_eUICC_ES10c_eUICCMemoryReset_03_Nominal_Reset_the_Default_SMDP_Address_only + TC_eUICC_ES10c_eUICCMemoryReset_04_Nominal_Reset_All_Operational_Profiles_and_the_Default_SMDP_Address + TC_eUICC_ES10c_eUICCMemoryReset_05_Nominal_eUICCMemoryReset_when_this_Operational_Profile_is_in_Enabled_state_while_proactive_sessionisongoing_catBusynotsupported + TC_eUICC_ES10c_eUICCMemoryReset_06_Nominal_eUICCMemoryReset_when_this_Profile_is_in_Enabled_state_while_proactive_sessionisongoing_catBusynotsupported (extracted verbatim)
2
3function TC_eUICC_ES10c_eUICCMemoryReset_01_Nominal_Reset_All_Operational_Profiles_without_Enabled_Profile()
4{
5	initial_condition_Start();
6	
7	initial_condition_Install_PROFILE_OPERATIONAL1();
8	
9	initial_condition_Set_SMDP_Address(TEST_DP_ADDRESS1);
10	
11	initial_condition_Install_PROFILE_OPERATIONAL3();
12	
13	initial_condition_set_Profile_Nickname("读卡器向卡片发送 StoreData命令,执行SetNickname,profileNickname为NICKNAME3;", ICCID_OP_PROF3, NICKNAME3);
14	
15	initial_condition_Remove_All_Notification();
16	
17	tracenamestr = "测试目的:没有处于激活状态的profile,重置所有的Operational Profile";
18	curDis.TraceStart(sno++,tracenamestr);
19	
20	curLogicChannel = 0;
21	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
22	Ini_powerOn_eUICC_LPAe_not_activate();
23	
24	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
25	TS_MANAGE_CHANNEL_OPEN();
26	
27	curLogicChannel = 1;
28	
29	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
30	TS_SELECT("Select ISD",ISD_R_AID,"9000");
31	
32	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GET_EUICC_INFO2,获取卡片的剩余不可变空间大小;");
33	var hexData = LPAd_Transport_data_to_eUICC(GetEuiccInfo2RequestHexStr);
34	
35	var euiccInfo2 = new EUICCInfo2();
36	euiccInfo2.checkCardResDataFormat(hexData);
37	var FREE_MEM_OP_PROF_INSTALLED = 0;
38	try
39	{
40		var extCardResourceObj = new ExtendedCardResource();
41		extCardResourceObj.SetHexData(euiccInfo2.extCardResource);
42		FREE_MEM_OP_PROF_INSTALLED = parseInt(extCardResourceObj.FreeNonVolatileMemory, 16);
43	}catch(e){
44		obj.SubLevel(display_rsp_card_data_format_check_fail, level_of_SubLevel.error);
45	}
46	
47	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EuiccMemoryResetRequest,删除OperationalProfile;");
48	var euiMemoryResetRequest = new EuiccMemoryResetRequest();
49	euiMemoryResetRequest.resetOptions = "0780";
50	euiMemoryResetRequest.GenHexData();
51	var respData = LPAd_Transport_data_to_eUICC(euiMemoryResetRequest.hexData);
52	curStrHandle.CheckData("BF3403800100", respData, "EuiccMemoryResetResponse");
53	
54	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_PROFILES_INFO_ALL,期望返回列表为空;");
55	var respData = LPAd_Transport_data_to_eUICC(RetrieveProfileInfoAll);
56	curStrHandle.CheckData(ProfileInfoListResponse_empty, respData, "ProfileInfoListResponse");
57	
58	
59	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,LIST_NOTIF_ALL;");
60	var resdata = LPAd_Transport_data_to_eUICC(listNotificationAllRequest);
61	var listNotificationResponse = new ListNotificationResponse();
62	listNotificationResponse.checkCardResDataFormat(resdata);
63	
64	Max_seqNumber_Of_Notification ++;
65	var arr1 = listNotificationResponse.notificationMetadataList.arrOfElement;
66	curStrHandle.CheckData("1", arr1.length.toString(), "Number of Notification");
67	
68	if (arr1.length >= 1)
69	{
70		curStrHandle.CheckData(Max_seqNumber_Of_Notification.toString(), parseInt(arr1[0].seqNumber,16).toString(), "seqNumber");
71		curStrHandle.CheckData("0410", arr1[0].profileManagementOperation, "profileManagementOperation");
72		curStrHandle.CheckData(TEST_DP_ADDRESS1, arr1[0].notificationAddress, "notificationAddress");
73		curStrHandle.CheckData(ICCID_OP_PROF1, arr1[0].iccid, "iccid");
74	}
75	
76	
77	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GET_EUICC_INFO2,获取卡片的剩余不可变空间大小,剩余不可变空间应变大;");
78	var hexData = LPAd_Transport_data_to_eUICC(GetEuiccInfo2RequestHexStr);
79	var euiccInfo2 = new EUICCInfo2();
80	euiccInfo2.checkCardResDataFormat(hexData);
81	
82	var FREE_MEMORY_NO_PROFILE = 0;
83	try
84	{
85		
86		var extCardResourceObj = new ExtendedCardResource();
87		extCardResourceObj.SetHexData(euiccInfo2.extCardResource);
88		FREE_MEMORY_NO_PROFILE = parseInt(extCardResourceObj.FreeNonVolatileMemory, 16);
89	}catch(e){
90		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
91	}
92	
93	if (FREE_MEMORY_NO_PROFILE > FREE_MEM_OP_PROF_INSTALLED)
94		obj.SubLevel("删除后的卡片剩余不可变空间变大了", 1);
95	else
96		obj.SubLevel("删除后的卡片剩余不可变空间没有变大", 0);
97		
98		obj.SubLevel("euiccInfo2.extCardResource.FreeNonVolatileMemory"+euiccInfo2.extCardResource.FreeNonVolatileMemory,1);
99	
100	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_EUICC_CONFIGURED_ADDRESSES,检查defaultDpAddress应没有改变;");
101	var hexData = LPAd_Transport_data_to_eUICC(EuiccConfiguredAddressesRequestHexStr);
102	var resObj = new EuiccConfiguredAddressesResponse();
103	resObj.checkCardResDataFormat(hexData);
104	
105	curStrHandle.CheckData(TEST_DP_ADDRESS1, resObj.defaultDpAddress, "defaultDpAddress");
106	curStrHandle.CheckData(TEST_ROOT_DS_ADDRESS, resObj.rootDsAddress, "rootDsAddress");
107	
108	RecoverCard();
109}
110
111function TC_eUICC_ES10c_eUICCMemoryReset_02_Nominal_Reset_All_Operational_Profiles_with_Enabled_Profile()
112{
113	initial_condition_Start();
114	
115	initial_condition_Install_PROFILE_OPERATIONAL1();
116	
117	initial_condition_Set_SMDP_Address(TEST_DP_ADDRESS1);
118	
119	initial_condition_Enable_Profile("Enable Profile1", ICCID_OP_PROF1);
120	
121	initial_condition_Remove_All_Notification();
122	
123	
124	tracenamestr = "测试目的:有处于激活状态的profile,重置所有的Operational Profile";
125	curDis.TraceStart(sno++,tracenamestr);
126	
127	curLogicChannel = 0;
128	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
129	Ini_powerOn_eUICC_LPAe_not_activate();
130	
131	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
132	TS_MANAGE_CHANNEL_OPEN();
133	
134	curLogicChannel = 1;
135	
136	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
137	TS_SELECT("Select ISD",ISD_R_AID,"9000");
138	
139	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EuiccMemoryResetRequest,删除OperationalProfile;");
140	var euiMemoryResetRequest = new EuiccMemoryResetRequest();
141	euiMemoryResetRequest.resetOptions = "0780";
142	euiMemoryResetRequest.GenHexData();
143	var respData = LPAd_Transport_data_to_eUICC(euiMemoryResetRequest.hexData, "91", "00", "91XX");
144	
145	curStrHandle.CheckData("BF3403800100", respData, "EuiccMemoryResetResponse");
146	
147	curLogicChannel = 0;
148	curDis.TestStepStart2(stno++,"Fetch主动式命令refresh;");
149	
150	FetchStr = Fetch("","9000","");
151		
152	var CmdDetails = GetValueByTag("01",1);
153	var CmdQualifier = CmdDetails.substr(4,2);
154	CheckData("04",CmdQualifier,"the command qualifier is equal to ’04’ (UICC Reset)");
155	
156	
157	curLogicChannel = 0;
158	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
159	Ini_powerOn_eUICC_LPAe_not_activate();
160	
161	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
162	TS_MANAGE_CHANNEL_OPEN();
163	
164	curLogicChannel = 1;
165	
166	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
167	TS_SELECT("Select ISD",ISD_R_AID,"9000");
168	
169	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,LIST_NOTIF_ALL;");
170	
171	var resdata = LPAd_Transport_data_to_eUICC(listNotificationAllRequest);
172	
173	var listNotificationResponse = new ListNotificationResponse();
174	
175	listNotificationResponse.checkCardResDataFormat(resdata);
176	
177	Max_seqNumber_Of_Notification ++;
178	var arr1 = listNotificationResponse.notificationMetadataList.arrOfElement;
179	curStrHandle.CheckData("1/2", arr1.length.toString(), "Number of Notification");
180	
181	if (arr1.length == 1)
182	{
183		curStrHandle.CheckData(Max_seqNumber_Of_Notification.toString(), parseInt(arr1[0].seqNumber,16).toString(), "seqNumber");
184		curStrHandle.CheckData("0410", arr1[0].profileManagementOperation, "profileManagementOperation");
185		curStrHandle.CheckData(TEST_DP_ADDRESS1, arr1[0].notificationAddress, "notificationAddress");
186		curStrHandle.CheckData(ICCID_OP_PROF1, arr1[0].iccid, "iccid");
187	}
188	else if (arr1.length == 2)
189	{
190		curStrHandle.CheckData(Max_seqNumber_Of_Notification.toString(), parseInt(arr1[0].seqNumber,16).toString(), "seqNumber");
191		curStrHandle.CheckData("0640", arr1[0].profileManagementOperation, "profileManagementOperation");
192		curStrHandle.CheckData(TEST_DP_ADDRESS1, arr1[0].notificationAddress, "notificationAddress");
193		curStrHandle.CheckData(ICCID_OP_PROF1, arr1[0].iccid, "iccid");
194		
195		Max_seqNumber_Of_Notification ++;
196		curStrHandle.CheckData(Max_seqNumber_Of_Notification.toString(), parseInt(arr1[0].seqNumber,16).toString(), "seqNumber");
197		curStrHandle.CheckData("0410", arr1[0].profileManagementOperation, "profileManagementOperation");
198		curStrHandle.CheckData(TEST_DP_ADDRESS1, arr1[0].notificationAddress, "notificationAddress");
199		curStrHandle.CheckData(ICCID_OP_PROF1, arr1[0].iccid, "iccid");
200	}
201	
202	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_RAT,期望返回值不变;");
203	
204	var respData = LPAd_Transport_data_to_eUICC(GetRatRequestHexStr);
205	curStrHandle.CheckData(R_DEFAULT_RAT, respData, "R_DEFAULT_RAT");
206	
207		
208	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_PROFILES_INFO_ALL,期望返回列表为空;");
209	
210	var respData = LPAd_Transport_data_to_eUICC(RetrieveProfileInfoAll);
211	curStrHandle.CheckData(ProfileInfoListResponse_empty, respData, "ProfileInfoListResponse");
212	
213	
214	RecoverCard();
215}
216
217function TC_eUICC_ES10c_eUICCMemoryReset_03_Nominal_Reset_the_Default_SMDP_Address_only()
218{
219	initial_condition_Start();
220	
221	initial_condition_Install_PROFILE_OPERATIONAL1();
222	
223	initial_condition_Set_SMDP_Address(TEST_DP_ADDRESS1);
224	
225	initial_condition_Install_PROFILE_OPERATIONAL3();
226	
227	initial_condition_set_Profile_Nickname("读卡器向卡片发送 StoreData命令,执行SetNickname,profileNickname为NICKNAME3;", ICCID_OP_PROF3, NICKNAME3);
228	
229	tracenamestr = "测试目的:重置缺省SM-DP+地址";
230	curDis.TraceStart(sno++,tracenamestr);
231	
232	curLogicChannel = 0;
233	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
234	Ini_powerOn_eUICC_LPAe_not_activate();
235	
236	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
237	TS_MANAGE_CHANNEL_OPEN();
238	
239	curLogicChannel = 1;
240	
241	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
242	TS_SELECT("Select ISD",ISD_R_AID,"9000");
243	
244	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,Reset the Default SM-DP+ Address only;");
245	var euiMemoryResetRequest = new EuiccMemoryResetRequest();
246	euiMemoryResetRequest.resetOptions = "0520";
247	euiMemoryResetRequest.GenHexData();
248	var respData = LPAd_Transport_data_to_eUICC(euiMemoryResetRequest.hexData);
249	
250	curStrHandle.CheckData("BF3403800100", respData, "EuiccMemoryResetResponse");
251	
252	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_PROFILES_INFO_ALL;");
253	
254	var respData = LPAd_Transport_data_to_eUICC(RetrieveProfileInfoAll);
255	var resObj = new ProfileInfoListResponse();
256	resObj.checkCardResDataFormat(respData);
257	
258	var num = resObj.profileInfoListOk.arrOfElement.length;
259	
260	curStrHandle.CheckData("2", num.toString(), "ProfileInfo Num");
261	
262	if (num == 2)
263	{
264		check_PROFILE_INFO1_DISABLED(resObj.profileInfoListOk.arrOfElement[0]);
265		check_PROFILE_INFO3(resObj.profileInfoListOk.arrOfElement[1]);
266	}
267	
268	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_EUICC_CONFIGURED_ADDRESSES,检查defaultDpAddress应不存在;");
269	
270	var hexData = LPAd_Transport_data_to_eUICC(EuiccConfiguredAddressesRequestHexStr);
271	var resObj = new EuiccConfiguredAddressesResponse();
272	resObj.checkCardResDataFormat(hexData);
273	
274	curStrHandle.CheckData("不存在", resObj.defaultDpAddress, "defaultDpAddress");
275	curStrHandle.CheckData(TEST_ROOT_DS_ADDRESS, resObj.rootDsAddress, "rootDsAddress");
276	
277	RecoverCard();
278}
279
280function TC_eUICC_ES10c_eUICCMemoryReset_04_Nominal_Reset_All_Operational_Profiles_and_the_Default_SMDP_Address()
281{
282	initial_condition_Start();
283	
284	initial_condition_Install_PROFILE_OPERATIONAL1();
285	
286	initial_condition_Set_SMDP_Address(TEST_DP_ADDRESS1);
287	
288	initial_condition_Install_PROFILE_OPERATIONAL3();
289	
290	tracenamestr = "测试目的:重置所有的Operational Profile和缺省SM-DP+地址";
291	curDis.TraceStart(sno++,tracenamestr);
292	
293	curLogicChannel = 0;
294	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
295	Ini_powerOn_eUICC_LPAe_not_activate();
296	
297	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
298	TS_MANAGE_CHANNEL_OPEN();
299	
300	curLogicChannel = 1;
301	
302	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
303	TS_SELECT("Select ISD",ISD_R_AID,"9000");
304	
305	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,Reset All Operational Profiles and the Default SM-DP+ Address;");
306	var euiMemoryResetRequest = new EuiccMemoryResetRequest();
307	euiMemoryResetRequest.resetOptions = "05A0";
308	euiMemoryResetRequest.GenHexData();
309	var respData = LPAd_Transport_data_to_eUICC(euiMemoryResetRequest.hexData);
310	
311	curStrHandle.CheckData("BF3403800100", respData, "EuiccMemoryResetResponse");
312	
313	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_PROFILES_INFO_ALL;");
314	
315	var respData = LPAd_Transport_data_to_eUICC(RetrieveProfileInfoAll);
316	curStrHandle.CheckData(ProfileInfoListResponse_empty, respData, "ProfileInfoListResponse");
317	
318	
319	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_EUICC_CONFIGURED_ADDRESSES,检查defaultDpAddress应不存在;");
320	
321	var hexData = LPAd_Transport_data_to_eUICC(EuiccConfiguredAddressesRequestHexStr);
322	var resObj = new EuiccConfiguredAddressesResponse();
323	resObj.checkCardResDataFormat(hexData);
324	
325	curStrHandle.CheckData("不存在", resObj.defaultDpAddress, "defaultDpAddress");
326	curStrHandle.CheckData(TEST_ROOT_DS_ADDRESS, resObj.rootDsAddress, "rootDsAddress");
327	
328	RecoverCard();
329}
330
331function TC_eUICC_ES10c_eUICCMemoryReset_05_Nominal_eUICCMemoryReset_when_this_Operational_Profile_is_in_Enabled_state_while_proactive_sessionisongoing_catBusynotsupported()
332{
333	
334	//测试入口条件
335	if(!check_Applicability_of_tests_RSP_SGP23_test("C033"))
336		return;
337	
338	initial_condition_Start();
339	
340	initial_condition_Install_PROFILE_OPERATIONAL1();
341	
342	initial_condition_Set_SMDP_Address(TEST_DP_ADDRESS1);
343	
344	initial_condition_Enable_Profile("Enable Profile1", ICCID_OP_PROF1);
345	
346	initial_condition_Remove_All_Notification();
347	
348	
349	tracenamestr = "测试目的:eUICC不支持catBusy,有一个处于激活状态的Operational Profile,主动式会话进行中时,执行eUICCMemoryReset";
350	curDis.TraceStart(sno++,tracenamestr);
351	
352	curLogicChannel = 0;
353	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
354	Ini_powerOn_eUICC_LPAe_not_activate();
355	
356	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
357	TS_MANAGE_CHANNEL_OPEN();
358	
359	curLogicChannel = 1;
360	
361	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
362	TS_SELECT("Select ISD",ISD_R_AID,"9000");
363		
364	curLogicChannel = 0;
365	var sSendType = SendTypeByOTA.SMS;
366	KIC = MNO_SCP80_ENC_KEY;
367	KID = MNO_SCP80_AUTH_KEY;
368	KIK = MNO_SCP80_DATA_ENC_KEY;
369	curDis.TestStepStart2(stno++,"SCP80,发送get status命令,使用MNO-SD的tar");
370	sAPDU = "80F28002024F0000";
371	SendMessageToCard_GP(sSendType,"91XX",0,"B20100","12210015",sAPDU);
372	HaveReEntry91XX = true;
373	var ss = obj.GetState();
374	ReEntry91XXLength = ss.substr(2,2);
375	
376	curLogicChannel = 1;
377	
378	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EuiccMemoryResetRequest,删除OperationalProfile;");
379	var euiMemoryResetRequest = new EuiccMemoryResetRequest();
380	euiMemoryResetRequest.resetOptions = "0780";
381	euiMemoryResetRequest.GenHexData();
382	var respData = LPAd_Transport_data_to_eUICC(euiMemoryResetRequest.hexData, "91", "00", "91XX");
383	
384	curStrHandle.CheckData("BF3403800105", respData, "EuiccMemoryResetResponse");
385	
386	curLogicChannel = 0;
387	curDis.TestStepStart2(stno++,"Fetch主动式命令refresh;");
388	
389	FetchStr = Fetch("","9000","");
390		
391	var CmdDetails = GetValueByTag("01",1);
392	var CmdQualifier = CmdDetails.substr(4,2);
393	CheckData("04",CmdQualifier,"the command qualifier is equal to ’04’ (UICC Reset)");
394	
395	
396	curLogicChannel = 0;
397	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
398	Ini_powerOn_eUICC_LPAe_not_activate();
399	
400	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
401	TS_MANAGE_CHANNEL_OPEN();
402	
403	curLogicChannel = 1;
404	
405	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
406	TS_SELECT("Select ISD",ISD_R_AID,"9000");
407	
408	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,LIST_NOTIF_ALL;");
409	
410	var resdata = LPAd_Transport_data_to_eUICC(listNotificationAllRequest);
411	
412	var listNotificationResponse = new ListNotificationResponse();
413	
414	listNotificationResponse.checkCardResDataFormat(resdata);
415	
416	Max_seqNumber_Of_Notification ++;
417	var arr1 = listNotificationResponse.notificationMetadataList.arrOfElement;
418	curStrHandle.CheckData("0", arr1.length.toString(), "Number of Notification");
419	
420	if (arr1.length == 1)
421	{
422		curStrHandle.CheckData(Max_seqNumber_Of_Notification.toString(), parseInt(arr1[0].seqNumber,16).toString(), "seqNumber");
423		curStrHandle.CheckData("0410", arr1[0].profileManagementOperation, "profileManagementOperation");
424		curStrHandle.CheckData(TEST_DP_ADDRESS1, arr1[0].notificationAddress, "notificationAddress");
425		curStrHandle.CheckData(ICCID_OP_PROF1, arr1[0].iccid, "iccid");
426	}
427	else if (arr1.length == 2)
428	{
429		curStrHandle.CheckData(Max_seqNumber_Of_Notification.toString(), parseInt(arr1[0].seqNumber,16).toString(), "seqNumber");
430		curStrHandle.CheckData("0640", arr1[0].profileManagementOperation, "profileManagementOperation");
431		curStrHandle.CheckData(TEST_DP_ADDRESS1, arr1[0].notificationAddress, "notificationAddress");
432		curStrHandle.CheckData(ICCID_OP_PROF1, arr1[0].iccid, "iccid");
433		
434		Max_seqNumber_Of_Notification ++;
435		curStrHandle.CheckData(Max_seqNumber_Of_Notification.toString(), parseInt(arr1[0].seqNumber,16).toString(), "seqNumber");
436		curStrHandle.CheckData("0410", arr1[0].profileManagementOperation, "profileManagementOperation");
437		curStrHandle.CheckData(TEST_DP_ADDRESS1, arr1[0].notificationAddress, "notificationAddress");
438		curStrHandle.CheckData(ICCID_OP_PROF1, arr1[0].iccid, "iccid");
439	}
440	
441	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_RAT,期望返回值不变;");
442	
443	var respData = LPAd_Transport_data_to_eUICC(GetRatRequestHexStr);
444	curStrHandle.CheckData(R_DEFAULT_RAT, respData, "R_DEFAULT_RAT");
445	
446		
447	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_PROFILES_INFO_ALL,期望返回列表为空;");
448	
449	var respData = LPAd_Transport_data_to_eUICC(RetrieveProfileInfoAll);
450	curStrHandle.CheckData(ProfileInfoListResponse_empty, respData, "ProfileInfoListResponse");
451	
452	
453	RecoverCard();
454}
455
456function TC_eUICC_ES10c_eUICCMemoryReset_06_Nominal_eUICCMemoryReset_when_this_Profile_is_in_Enabled_state_while_proactive_sessionisongoing_catBusynotsupported()
457{
458	
459	//测试入口条件
460	if(!check_Applicability_of_tests_RSP_SGP23_test("C033"))
461		return;
462	
463	initial_condition_PROFILE_OPERATIONAL1_is_Enabled();
464	var ISD_P_Test01 = curProfile_ISD_P_AID;
465	
466	initial_condition_PROFILE_OPERATIONAL3_is_Disabled();
467	var ISD_P_Test03 = curProfile_ISD_P_AID;
468
469	initial_condition_Remove_All_Notification();
470	
471	tracenamestr = "测试目的:eUICC不支持catBusy,有处于激活状态的Profile,主动式会话进行中(未给终端响应)时,执行eUICCMemoryReset";
472	curDis.TraceStart(sno++,tracenamestr);
473	
474	curLogicChannel = 0;
475	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
476	Ini_powerOn_eUICC_LPAe_not_activate();
477	
478	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
479	TS_MANAGE_CHANNEL_OPEN();
480	
481	curLogicChannel = 1;
482	
483	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
484	TS_SELECT("Select ISD",ISD_R_AID,"9000");
485
486	curLogicChannel = 0;
487	curDis.TestStepStart2(stno++,"SCP80,发送get status命令,使用MNO-SD的tar");
488
489	var sSendType = SendTypeByOTA.SMS;
490	KIC = MNO_SCP80_ENC_KEY;
491	KID = MNO_SCP80_AUTH_KEY;
492	KIK = MNO_SCP80_DATA_ENC_KEY;
493	sAPDU = "80F28002024F00";
494	SendMessageToCard_GP(sSendType,"91XX",0,"B20100","12210015",sAPDU);
495	HaveReEntry91XX = true;
496	var ss = obj.GetState();
497	ReEntry91XXLength = ss.substr(2,2);
498	
499	curDis.TestStepStart2(stno++,"SCP80,发送Fetch命令,检查por");
500	curLogicChannel = 0;
501	CardSendMessageToServer(sSendType,1,"0161XX","00");
502
503	curLogicChannel = 1;
504	
505	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EuiccMemoryResetRequest,删除OperationalProfile;");
506	var euiMemoryResetRequest = new EuiccMemoryResetRequest();
507	euiMemoryResetRequest.resetOptions = "0780";
508	euiMemoryResetRequest.GenHexData();
509	var respData = LPAd_Transport_data_to_eUICC(euiMemoryResetRequest.hexData, "91", "00", "91XX");	
510	curStrHandle.CheckData("BF3403800105", respData, "EuiccMemoryResetResponse");
511	
512	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EuiccMemoryResetRequest,删除OperationalProfile;");
513	var euiMemoryResetRequest = new EuiccMemoryResetRequest();
514	euiMemoryResetRequest.resetOptions = "0780";
515	euiMemoryResetRequest.GenHexData();
516	var respData = LPAd_Transport_data_to_eUICC(euiMemoryResetRequest.hexData);
517	curStrHandle.CheckData("BF3403800100", respData, "EuiccMemoryResetResponse");
518	
519	curLogicChannel = 0;
520	curDis.TestStepStart2(stno++,"Fetch主动式命令refresh;");
521	
522	FetchStr = Fetch("","9000","");
523		
524	var CmdDetails = GetValueByTag("01",1);
525	var CmdQualifier = CmdDetails.substr(4,2);
526	CheckData("04",CmdQualifier,"the command qualifier is equal to ’04’ (UICC Reset)");
527	
528	
529	curLogicChannel = 0;
530	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
531	Ini_powerOn_eUICC_LPAe_not_activate();
532	
533	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
534	TS_MANAGE_CHANNEL_OPEN();
535	
536	curLogicChannel = 1;
537	
538	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
539	TS_SELECT("Select ISD",ISD_R_AID,"9000");
540	
541	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,LIST_NOTIF_ALL;");
542	
543	var resdata = LPAd_Transport_data_to_eUICC(listNotificationAllRequest);
544	
545	var listNotificationResponse = new ListNotificationResponse();
546	
547	listNotificationResponse.checkCardResDataFormat(resdata);
548	
549	Max_seqNumber_Of_Notification ++;
550	var arr1 = listNotificationResponse.notificationMetadataList.arrOfElement;
551	curStrHandle.CheckData("0", arr1.length.toString(), "Number of Notification");
552	
553	if (arr1.length == 1)
554	{
555		curStrHandle.CheckData(Max_seqNumber_Of_Notification.toString(), parseInt(arr1[0].seqNumber,16).toString(), "seqNumber");
556		curStrHandle.CheckData("0410", arr1[0].profileManagementOperation, "profileManagementOperation");
557		curStrHandle.CheckData(TEST_DP_ADDRESS1, arr1[0].notificationAddress, "notificationAddress");
558		curStrHandle.CheckData(ICCID_OP_PROF1, arr1[0].iccid, "iccid");
559	}
560	else if (arr1.length == 2)
561	{
562		curStrHandle.CheckData(Max_seqNumber_Of_Notification.toString(), parseInt(arr1[0].seqNumber,16).toString(), "seqNumber");
563		curStrHandle.CheckData("0640", arr1[0].profileManagementOperation, "profileManagementOperation");
564		curStrHandle.CheckData(TEST_DP_ADDRESS1, arr1[0].notificationAddress, "notificationAddress");
565		curStrHandle.CheckData(ICCID_OP_PROF1, arr1[0].iccid, "iccid");
566		
567		Max_seqNumber_Of_Notification ++;
568		curStrHandle.CheckData(Max_seqNumber_Of_Notification.toString(), parseInt(arr1[0].seqNumber,16).toString(), "seqNumber");
569		curStrHandle.CheckData("0410", arr1[0].profileManagementOperation, "profileManagementOperation");
570		curStrHandle.CheckData(TEST_DP_ADDRESS1, arr1[0].notificationAddress, "notificationAddress");
571		curStrHandle.CheckData(ICCID_OP_PROF1, arr1[0].iccid, "iccid");
572	}
573	
574	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_RAT,期望返回值不变;");
575	
576	var respData = LPAd_Transport_data_to_eUICC(GetRatRequestHexStr);
577	curStrHandle.CheckData(R_DEFAULT_RAT, respData, "R_DEFAULT_RAT");
578	
579		
580	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_PROFILES_INFO_ALL,期望返回列表为空;");
581	
582	var respData = LPAd_Transport_data_to_eUICC(RetrieveProfileInfoAll);
583	curStrHandle.CheckData(ProfileInfoListResponse_empty, respData, "ProfileInfoListResponse");
584	
585	
586	RecoverCard();
587}
588
-cas 盲生成TC_eUICC_ES10c_eUICCMemoryReset/Import/TC_eUICC_ES10c_eUICCMemoryReset.js791 行 / 59167 字符 / gb18030入口函数 @L45
1// Author: 卡思Cas智能体
2// Date: 20261004-143902
3// Function: (purpose 原文未由 SGP.23 该 TC 提供,corpus vacuum 登记)TC_eUICC_ES10c.eUICCMemoryReset,Test Sequence #01-#06 (Nominal: Reset OP without/with Enabled Profile / Reset Default SM-DP+ Address only / Reset All / catBusy not supported ×2),适用性 M (序列#01-#04) / C039 (序列#05、#06)。
4// Test points: IC1-IC1-K1-C1 ATR_present;IC1-IC1-K2-C2 FCP_Template;IC1-IC1-K2-C4 SW
5//   IC1-IC1-K3-C4 SW;IC1-IC1-K4-C4 final SW;IC2-IC2-K1-C4 SW;IC2-IC2-K1-C3 CHANNEL_NUMBER extracted
6//   IC2-IC2-K2-C4 SW;S3-C1 free non-volatile memory tag 82 present;S4-C1 SW;S4-C2 resetResult ok
7//   S5-C1 SW;S5-C2 profileInfoListOk empty;S6-C1 SW
8//   S6-C2 notificationMetadataList contains NOTIF_METADATA_DELETE1
9//   S7-C1 free non-volatile memory lower than step 7;S7-C2 free non-volatile memory tag 82 present
10//   S8-C1 SW;S8-C2 defaultDpAddress testsmdpplus1.example.com;S8-C2 rootDsAddress present
11//   IC9-IC1-K1-C1 ATR_present;IC9-IC1-K2-C2 FCP_Template;IC9-IC1-K2-C4 SW;IC9-IC1-K3-C4 SW
12//   IC9-IC1-K4-C4 final SW;IC10-IC2-K1-C4 SW;IC10-IC2-K1-C3 CHANNEL_NUMBER extracted
13//   IC10-IC2-K2-C4 SW;S11-C1 SW1 91;S11-C2 resetResult ok;S12-C1 proactive command envelope
14//   IC13-IC1-K1-C1 ATR_present;IC13-IC1-K2-C2 FCP_Template;IC13-IC1-K2-C4 SW;IC13-IC1-K3-C4 SW
15//   IC13-IC1-K4-C4 final SW;IC13-IC2-K1-C4 SW;IC13-IC2-K1-C3 CHANNEL_NUMBER extracted
16//   IC13-IC2-K2-C4 SW;S14-C1 SW;S14-C2 notificationMetadataList contains NOTIF_METADATA_DELETE1
17//   S15-C1 SW;S15-C2 PPRS_ALLOWED field-value oracle;S16-C1 SW;S16-C2 profileInfoListOk empty
18//   IC17-IC1-K1-C1 ATR_present;IC17-IC1-K2-C2 FCP_Template;IC17-IC1-K2-C4 SW;IC17-IC1-K3-C4 SW
19//   IC17-IC1-K4-C4 final SW;IC18-IC2-K1-C4 SW;IC18-IC2-K1-C3 CHANNEL_NUMBER extracted
20//   IC18-IC2-K2-C4 SW;S19-C1 SW;S19-C2 resetResult in {nothingToDelete, ok};S20-C1 SW
21//   S20-C2 contains PROFILE_INFO1_DISABLED;S20-C2 contains PROFILE_INFO3;S21-C1 SW
22//   S21-C2 defaultDpAddress absent;S21-C2 rootDsAddress testrootsmds.example.com
23//   IC22-IC1-K1-C1 ATR_present;IC22-IC1-K2-C2 FCP_Template;IC22-IC1-K2-C4 SW;IC22-IC1-K3-C4 SW
24//   IC22-IC1-K4-C4 final SW;IC23-IC2-K1-C4 SW;IC23-IC2-K1-C3 CHANNEL_NUMBER extracted
25//   IC23-IC2-K2-C4 SW;S24-C1 SW;S24-C2 resetResult ok;S25-C1 SW;S25-C2 profileInfoListOk empty
26//   S26-C1 SW;S26-C2 defaultDpAddress absent;IC27-IC1-K1-C1 ATR_present;IC27-IC1-K2-C2 FCP_Template
27//   IC27-IC1-K2-C4 SW;IC27-IC1-K3-C4 SW;IC27-IC1-K4-C4 final SW;IC28-IC2-K1-C4 SW
28//   IC28-IC2-K1-C3 CHANNEL_NUMBER extracted;IC28-IC2-K2-C4 SW;S29-C1 SW1 91;S31-C1 SW1 91
29//   S31-C2 resetResult ok;S32-C1 proactive command envelope;IC33-IC1-K1-C1 ATR_present
30//   IC33-IC1-K2-C2 FCP_Template;IC33-IC1-K2-C4 SW;IC33-IC1-K3-C4 SW;IC33-IC1-K4-C4 final SW
31//   IC33-IC2-K1-C4 SW;IC33-IC2-K1-C3 CHANNEL_NUMBER extracted;IC33-IC2-K2-C4 SW;S34-C1 SW
32//   S34-C2 notificationMetadataList contains NOTIF_METADATA_DELETE1;S35-C1 SW
33//   S35-C2 PPRS_ALLOWED field-value oracle;S36-C1 SW;S36-C2 profileInfoListOk empty
34//   IC37-IC1-K1-C1 ATR_present;IC37-IC1-K2-C2 FCP_Template;IC37-IC1-K2-C4 SW;IC37-IC1-K3-C4 SW
35//   IC37-IC1-K4-C4 final SW;IC38-IC2-K1-C4 SW;IC38-IC2-K1-C3 CHANNEL_NUMBER extracted
36//   IC38-IC2-K2-C4 SW;S39-C1 SW1 91;S41-C1 SW;S41-C2 resetResult ok;S42-C1 SW1 91
37//   S43-C1 proactive command envelope;IC44-IC1-K1-C1 ATR_present;IC44-IC1-K2-C2 FCP_Template
38//   IC44-IC1-K2-C4 SW;IC44-IC1-K3-C4 SW;IC44-IC1-K4-C4 final SW;IC44-IC2-K1-C4 SW
39//   IC44-IC2-K1-C3 CHANNEL_NUMBER extracted;IC44-IC2-K2-C4 SW;S45-C1 SW
40//   S45-C2 notificationMetadataList contains NOTIF_METADATA_DELETE1;S46-C1 SW
41//   S46-C2 PPRS_ALLOWED field-value oracle;S47-C1 SW;S47-C2 profileInfoListOk empty
42// 本函数由 CaseIR 4.2.24.2.1 编译生成(fullwave-blindgen-live-70-W1-laneA5,SGP.23 v1.16 × SGP.22 v2.7):字节权威=CaseIR,非誊录黄金脚本。
43// Value-free template: every data byte is injected from CaseIR fields; no scaffold globals (see docs/speconly/compile-symbol-migration.md).
44// 适用性 M (序列#01-#04) / C039 (序列#05、#06):编译期门,运行时由 harness 环境前置承担。
45function TC_eUICC_ES10c_eUICCMemoryReset_01_06_merged() {
46    var bind = curBind;
47    // GIC-1 卡态编排:PROFILE_OPERATIONAL1 已安装: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
48    // GIC-2 Default SM-DP+ Address #TEST_DP_ADDRESS1 已设置到 ISD-R(testsmdpplus1.example.com,F_annexA_constants): declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
49    // S1/S3/S4-IC PROF1 Disabled;PROFILE_OPERATIONAL3 已安装且 Disabled(#01/#03 另要求 Nickname=#NICKNAME3);#01 另要求 Pending Notifications List 为空: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
50    // S2/S5-IC PROF1 Enabled;Pending Notifications List 为空: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
51    // S6-IC PROF1 Enabled;PROF3 已安装且 Disabled;Pending Notifications List 为空: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
52
53    // IC ref inline @E 步骤 1(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
54    var s48 = bind.resetAndAtr();
55    bind.checkData("IC1-IC1-K1-C1 ATR_present", "1", s48.atr_hex !== "" ? "1" : "0");
56
57    // IC ref inline @E 步骤 1(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
58    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
59    var s49 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
60    bind.checkData("IC1-IC1-K2-C2 FCP_Template", "1", s49.resp.length > 0 ? "1" : "0");
61    bind.checkData("IC1-IC1-K2-C4 SW", "9000", s49.sw);
62
63    // IC ref inline @E 步骤 1(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
64    var s50 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
65    bind.checkData("IC1-IC1-K3-C4 SW", "9000", s50.sw);
66
67    // IC ref inline @E 步骤 1(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
68    var steady51 = bind.runToSteadyState(function () {
69        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
70    });
71    bind.checkData("IC1-IC1-K4-C4 final SW", "9000", steady51.final.sw);
72
73    // IC ref inline @E 步骤 2(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
74    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
75    var s52 = bind.manageChannelOpen("9000");
76    bind.checkData("IC2-IC2-K1-C4 SW", "9000", s52.sw);
77    bind.checkData("IC2-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s52.chan !== null ? "1" : "0");
78
79    // IC ref inline @E 步骤 2(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
80    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
81    var s53 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
82    // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
83    bind.checkData("IC2-IC2-K2-C4 SW", "9000", s53.sw);
84
85    // 步骤 3:MTD_STORE_DATA(tc_step)
86    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
87    var sdCla3 = s52.chan !== null ? (s52.chan <= 3 ? 128 + s52.chan : 188 + s52.chan).toString(16).toUpperCase() : null;
88    var s3 = bind.sendApdu(sdCla3, "E2", "91", "00", "BF2200", "00", "9000");
89    // geca-proc ES10b Info 响应面(R_EUICC_INFO2,SGP.22 §5.7.7/§5.7.8 结构机械转录;响应外层 tag = 请求 tag):绑定层结构步行 + 在场性断言。
90    var gw3 = BindGecaProc.parseGecaResponse(s3.resp, {outer: "BF22", required: ["81", "82", "83", "84", "85", "88", "A9", "AA", "04", "0C"], optional: ["86", "87"]});
91    var ext3 = BindEs10xSingleRequest.parseBerTlv(gw3.fields["84"] || "");
92    var freeVal3 = null; for (var fti3 = 0; fti3 < ext3.length; fti3++) { if (ext3[fti3].tag === "82") { freeVal3 = ext3[fti3].value; } }
93    bind.checkData("S3-C1 free non-volatile memory tag 82 present", "1", freeVal3 !== null ? "1" : "0");
94
95    // 步骤 4:MTD_STORE_DATA(tc_step;REQ: RQ57_163, RQ57_166, RQ57_169, RQ57_170, RQ33_010)
96    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
97    var sdCla4 = s52.chan !== null ? (s52.chan <= 3 ? 128 + s52.chan : 188 + s52.chan).toString(16).toUpperCase() : null;
98    var s4 = bind.sendApdu(sdCla4, "E2", "91", "00", "BF340482020780", "00", "9000");
99    bind.checkData("S4-C1 SW", "9000", s4.sw);
100    // es10x-proc-profile 响应面(TC_eUICC_ES10c.eUICCMemoryReset,SGP.22 §5.7.15 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
101    var pw4 = BindEs10xProcProfile.walkChoiceList(s4.resp, {respTag: "BF34", okTag: "A0", errTag: "81"});
102    var r2w4 = BindGecaProc.parseGecaResponse(s4.resp, {outer: "BF34", required: ["02"]});
103    bind.checkData("S4-C2 resetResult ok", "00", (r2w4.ok && r2w4.fields["02"] === "00") ? "00" : (r2w4.fields["02"] || "absent"));
104
105    // 步骤 5:MTD_STORE_DATA(tc_step;REQ: RQ33_011, RQ33_008, RQ33_012)
106    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
107    var sdCla5 = s52.chan !== null ? (s52.chan <= 3 ? 128 + s52.chan : 188 + s52.chan).toString(16).toUpperCase() : null;
108    var s5 = bind.sendApdu(sdCla5, "E2", "91", "00", "BF2D00", "00", "9000");
109    bind.checkData("S5-C1 SW", "9000", s5.sw);
110    var r2p5 = BindEs10xProcProfile.walkChoiceList(s5.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
111    bind.checkData("S5-C2 profileInfoListOk empty", "1", (r2p5.branch_tag === "A0" && r2p5.elements.length === 0) ? "1" : "0");
112
113    // 步骤 6:MTD_STORE_DATA(tc_step;REQ: RQ57_071, RQ57_071_1, RQ57_071_2, RQ57_072, RQ57_072_1, RQ57_072_2, RQ57_074, RQ57_167_1)
114    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
115    var sdCla6 = s52.chan !== null ? (s52.chan <= 3 ? 128 + s52.chan : 188 + s52.chan).toString(16).toUpperCase() : null;
116    var s6 = bind.sendApdu(sdCla6, "E2", "91", "00", "BF2804810204F0", "00", "9000");
117    bind.checkData("S6-C1 SW", "9000", s6.sw);
118    // Inline ASCII->hex helper (UTF8String expected values; values enter as
119    // ASCII literals traced to CaseIR check text / F_annexA_constants rows).
120    function __asciiHex(text) {
121        var out = "";
122        for (var i = 0; i < text.length; i++) {
123            var c = text.charCodeAt(i).toString(16).toUpperCase();
124            out += (c.length === 1 ? "0" + c : c);
125        }
126        return out;
127    }
128    var r2n6T = BindEs10xSingleRequest.parseBerTlv(s6.resp);
129    var r2n6Ok0 = r2n6T.length === 1 && r2n6T[0].tag === "BF28";
130    var r2n6B = r2n6Ok0 ? BindEs10xSingleRequest.parseBerTlv(r2n6T[0].value) : [];
131    var r2n6_brtag = r2n6B.length === 1 ? r2n6B[0].tag : "";
132    var r2n6_els = r2n6_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(r2n6B[0].value) : [];
133    var r2n6Has = false;
134    for (var r2n6i = 0; r2n6i < r2n6_els.length; r2n6i++) {
135        if (r2n6_els[r2n6i].tag !== "BF2F") { continue; }
136        var r2n6F = {};
137        var r2n6M = BindEs10xSingleRequest.parseBerTlv(r2n6_els[r2n6i].value);
138        for (var r2n6j = 0; r2n6j < r2n6M.length; r2n6j++) { r2n6F[r2n6M[r2n6j].tag] = r2n6M[r2n6j].value; }
139        if (r2n6F["5A"] === "989209012143658709F5" && r2n6F["0C"] === __asciiHex("testsmdpplus1.example.com")) { r2n6Has = true; break; }
140    }
141    bind.checkData("S6-C2 notificationMetadataList contains NOTIF_METADATA_DELETE1", "1", r2n6Has ? "1" : "0");
142
143    // 步骤 7:MTD_STORE_DATA(tc_step;REQ: RQ31_027, RQ31_028, RQ57_051, RQ57_052, RQ57_054, RQ24_020)
144    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
145    var sdCla7 = s52.chan !== null ? (s52.chan <= 3 ? 128 + s52.chan : 188 + s52.chan).toString(16).toUpperCase() : null;
146    var s7 = bind.sendApdu(sdCla7, "E2", "91", "00", "BF2200", "00", "9000");
147    // geca-proc ES10b Info 响应面(R_EUICC_INFO2,SGP.22 §5.7.7/§5.7.8 结构机械转录;响应外层 tag = 请求 tag):绑定层结构步行 + 在场性断言。
148    var gw7 = BindGecaProc.parseGecaResponse(s7.resp, {outer: "BF22", required: ["81", "82", "83", "84", "85", "88", "A9", "AA", "04", "0C"], optional: ["86", "87"]});
149    bind.checkData("S7-C1 free non-volatile memory lower than step 7", "1", (freeVal3 !== null && freeVal3 !== undefined && freeVal7 !== null && freeVal7 !== undefined && parseInt(freeVal3, 16) < parseInt(freeVal7, 16)) ? "1" : "0");
150    var ext7 = BindEs10xSingleRequest.parseBerTlv(gw7.fields["84"] || "");
151    var freeVal7 = null; for (var fti7 = 0; fti7 < ext7.length; fti7++) { if (ext7[fti7].tag === "82") { freeVal7 = ext7[fti7].value; } }
152    bind.checkData("S7-C2 free non-volatile memory tag 82 present", "1", freeVal7 !== null ? "1" : "0");
153
154    // 步骤 8:MTD_STORE_DATA(tc_step;REQ: RQ33_009)
155    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
156    var sdCla8 = s52.chan !== null ? (s52.chan <= 3 ? 128 + s52.chan : 188 + s52.chan).toString(16).toUpperCase() : null;
157    var s8 = bind.sendApdu(sdCla8, "E2", "91", "00", "BF3C00", "00", "9000");
158    bind.checkData("S8-C1 SW", "9000", s8.sw);
159    // Inline ASCII->hex helper (UTF8String expected values; values enter as
160    // ASCII literals traced to CaseIR check text / F_annexA_constants rows).
161    function __asciiHex(text) {
162        var out = "";
163        for (var i = 0; i < text.length; i++) {
164            var c = text.charCodeAt(i).toString(16).toUpperCase();
165            out += (c.length === 1 ? "0" + c : c);
166        }
167        return out;
168    }
169    var r2w8 = BindGecaProc.parseGecaResponse(s8.resp, {outer: "BF3C", required: []});
170    var r2c8 = r2w8.children;
171    var r2c08 = 0;
172    for (var r2ci8 = 0; r2ci8 < r2c8.length; r2ci8++) {
173        if (r2c8[r2ci8].tag === "80" || r2c8[r2ci8].tag === "81") { r2c08++; }
174    }
175    var r2v8 = __asciiHex("testsmdpplus1.example.com");
176    bind.checkData("S8-C2 defaultDpAddress testsmdpplus1.example.com", r2v8, (r2c08 >= 2 ? r2c8[0].value : "absent"));
177    bind.checkData("S8-C2 rootDsAddress present", "1", (r2c08 >= 1 ? "1" : "0"));
178
179    // IC ref inline @E 步骤 9(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
180    var s54 = bind.resetAndAtr();
181    bind.checkData("IC9-IC1-K1-C1 ATR_present", "1", s54.atr_hex !== "" ? "1" : "0");
182
183    // IC ref inline @E 步骤 9(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
184    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
185    var s55 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
186    bind.checkData("IC9-IC1-K2-C2 FCP_Template", "1", s55.resp.length > 0 ? "1" : "0");
187    bind.checkData("IC9-IC1-K2-C4 SW", "9000", s55.sw);
188
189    // IC ref inline @E 步骤 9(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
190    var s56 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
191    bind.checkData("IC9-IC1-K3-C4 SW", "9000", s56.sw);
192
193    // IC ref inline @E 步骤 9(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
194    var steady57 = bind.runToSteadyState(function () {
195        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
196    });
197    bind.checkData("IC9-IC1-K4-C4 final SW", "9000", steady57.final.sw);
198
199    // IC ref inline @E 步骤 10(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
200    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
201    var s58 = bind.manageChannelOpen("9000");
202    bind.checkData("IC10-IC2-K1-C4 SW", "9000", s58.sw);
203    bind.checkData("IC10-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s58.chan !== null ? "1" : "0");
204
205    // IC ref inline @E 步骤 10(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
206    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
207    var s59 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
208    // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
209    bind.checkData("IC10-IC2-K2-C4 SW", "9000", s59.sw);
210
211    // 步骤 11:MTD_STORE_DATA(tc_step;REQ: RQ57_163, RQ57_166, RQ57_169, RQ57_170, RQ33_010)
212    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
213    var sdCla11 = s58.chan !== null ? (s58.chan <= 3 ? 128 + s58.chan : 188 + s58.chan).toString(16).toUpperCase() : null;
214    var s11 = bind.sendApdu(sdCla11, "E2", "91", "00", "BF340482020780", "00", "9000");
215    bind.checkData("S11-C1 SW1 91", "91", s11.sw.substring(0, 2));
216    // es10x-proc-profile 响应面(TC_eUICC_ES10c.eUICCMemoryReset,SGP.22 §5.7.15 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
217    var pw11 = BindEs10xProcProfile.walkChoiceList(s11.resp, {respTag: "BF34", okTag: "A0", errTag: "81"});
218    var r2w11 = BindGecaProc.parseGecaResponse(s11.resp, {outer: "BF34", required: ["02"]});
219    bind.checkData("S11-C2 resetResult ok", "00", (r2w11.ok && r2w11.fields["02"] === "00") ? "00" : (r2w11.fields["02"] || "absent"));
220
221    // 步骤 12:FETCH 'XX'(序列#02 步2)(tc_step;REQ: RQ57_168)
222    // FETCH header literals follow the golden wire evidence 8012 (same
223    // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
224    // gives mechanism only). Le = pending length from the last 91XX
225    // (chain rule, binding-internal state).
226    var s12 = bind.fetchPending("80", "12", "00", "00", null);
227    bind.checkData("S12-C1 proactive command envelope", "1", (s12.resp.length >= 4 && s12.resp.substring(0, 2) === "D0") ? "1" : "0");
228    // S12-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
229    // S12:主动会话协议闭合(TS 102 223 §6.3:主动命令必须 TR 应答;
230    // UICC Reset 变体 E 表无 TR 行属编辑省略,golden U3 线证同构)。
231    var s12tr = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
232
233    // IC ref inline @E 步骤 13(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
234    var s60 = bind.resetAndAtr();
235    bind.checkData("IC13-IC1-K1-C1 ATR_present", "1", s60.atr_hex !== "" ? "1" : "0");
236
237    // IC ref inline @E 步骤 13(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
238    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
239    var s61 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
240    bind.checkData("IC13-IC1-K2-C2 FCP_Template", "1", s61.resp.length > 0 ? "1" : "0");
241    bind.checkData("IC13-IC1-K2-C4 SW", "9000", s61.sw);
242
243    // IC ref inline @E 步骤 13(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
244    var s62 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
245    bind.checkData("IC13-IC1-K3-C4 SW", "9000", s62.sw);
246
247    // IC ref inline @E 步骤 13(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
248    var steady63 = bind.runToSteadyState(function () {
249        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
250    });
251    bind.checkData("IC13-IC1-K4-C4 final SW", "9000", steady63.final.sw);
252
253    // IC ref inline @E 步骤 13(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
254    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
255    var s64 = bind.manageChannelOpen("9000");
256    bind.checkData("IC13-IC2-K1-C4 SW", "9000", s64.sw);
257    bind.checkData("IC13-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s64.chan !== null ? "1" : "0");
258
259    // IC ref inline @E 步骤 13(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
260    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
261    var s65 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
262    // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
263    bind.checkData("IC13-IC2-K2-C4 SW", "9000", s65.sw);
264
265    // 步骤 14:MTD_STORE_DATA(tc_step;REQ: RQ57_071, RQ57_071_1, RQ57_071_2, RQ57_072, RQ57_072_1, RQ57_072_2, RQ57_074, RQ57_167_1, RQ35_006)
266    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
267    var sdCla14 = s64.chan !== null ? (s64.chan <= 3 ? 128 + s64.chan : 188 + s64.chan).toString(16).toUpperCase() : null;
268    var s14 = bind.sendApdu(sdCla14, "E2", "91", "00", "BF2804810204F0", "00", "9000");
269    bind.checkData("S14-C1 SW", "9000", s14.sw);
270    // Inline ASCII->hex helper (UTF8String expected values; values enter as
271    // ASCII literals traced to CaseIR check text / F_annexA_constants rows).
272    function __asciiHex(text) {
273        var out = "";
274        for (var i = 0; i < text.length; i++) {
275            var c = text.charCodeAt(i).toString(16).toUpperCase();
276            out += (c.length === 1 ? "0" + c : c);
277        }
278        return out;
279    }
280    var r2n14T = BindEs10xSingleRequest.parseBerTlv(s14.resp);
281    var r2n14Ok0 = r2n14T.length === 1 && r2n14T[0].tag === "BF28";
282    var r2n14B = r2n14Ok0 ? BindEs10xSingleRequest.parseBerTlv(r2n14T[0].value) : [];
283    var r2n14_brtag = r2n14B.length === 1 ? r2n14B[0].tag : "";
284    var r2n14_els = r2n14_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(r2n14B[0].value) : [];
285    var r2n14Has = false;
286    for (var r2n14i = 0; r2n14i < r2n14_els.length; r2n14i++) {
287        if (r2n14_els[r2n14i].tag !== "BF2F") { continue; }
288        var r2n14F = {};
289        var r2n14M = BindEs10xSingleRequest.parseBerTlv(r2n14_els[r2n14i].value);
290        for (var r2n14j = 0; r2n14j < r2n14M.length; r2n14j++) { r2n14F[r2n14M[r2n14j].tag] = r2n14M[r2n14j].value; }
291        if (r2n14F["5A"] === "989209012143658709F5" && r2n14F["0C"] === __asciiHex("testsmdpplus1.example.com")) { r2n14Has = true; break; }
292    }
293    bind.checkData("S14-C2 notificationMetadataList contains NOTIF_METADATA_DELETE1", "1", r2n14Has ? "1" : "0");
294
295    // 步骤 15:MTD_STORE_DATA(tc_step;REQ: RQ29_005, RQ57_179, RQ57_180, RQ57_181, RQ57_182, RQ57_184)
296    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
297    var sdCla15 = s64.chan !== null ? (s64.chan <= 3 ? 128 + s64.chan : 188 + s64.chan).toString(16).toUpperCase() : null;
298    var s15 = bind.sendApdu(sdCla15, "E2", "91", "00", "BF4300", "00", "9000");
299    bind.checkData("S15-C1 SW", "9000", s15.sw);
300    // grat ES10b GetRAT 响应面(外层 BF43,S22_tag_table Table 66 + I_annexD3_es10x:179/249 机械推导;PPAR 内部 DER 定位 = §5.7.22 模块语料真空):
301    var rgw15 = BindGecaProc.parseGecaResponse(s15.resp, {outer: "BF43", required: [], optional: []});
302    var rrat15 = (rgw15.children.length === 1) ? BindEs10xSingleRequest.parseBerTlv(rgw15.children[0].value) : [];
303    // S15-C2: PPRS_ALLOWED 字段值(pprIds/allowedOperators/pprFlags)DER 定位 oracle 缺席——SGP.22 §5.7.22 ASN.1
304    // 模块未入包、tag 表仅给 BF43 外层——发射 fail-closed 恒断言诚实面(如实计错,不伪造通过)。
305    bind.checkData("S15-C2 PPRS_ALLOWED field-value oracle", "ppar_member_tag_oracle_declared", "oracle_absent_sgp22_5_7_22_module_vacuum");
306
307    // 步骤 16:MTD_STORE_DATA(tc_step;REQ: RQ33_011, RQ33_008, RQ33_012)
308    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
309    var sdCla16 = s64.chan !== null ? (s64.chan <= 3 ? 128 + s64.chan : 188 + s64.chan).toString(16).toUpperCase() : null;
310    var s16 = bind.sendApdu(sdCla16, "E2", "91", "00", "BF2D00", "00", "9000");
311    bind.checkData("S16-C1 SW", "9000", s16.sw);
312    var r2p16 = BindEs10xProcProfile.walkChoiceList(s16.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
313    bind.checkData("S16-C2 profileInfoListOk empty", "1", (r2p16.branch_tag === "A0" && r2p16.elements.length === 0) ? "1" : "0");
314
315    // IC ref inline @E 步骤 17(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
316    var s66 = bind.resetAndAtr();
317    bind.checkData("IC17-IC1-K1-C1 ATR_present", "1", s66.atr_hex !== "" ? "1" : "0");
318
319    // IC ref inline @E 步骤 17(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
320    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
321    var s67 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
322    bind.checkData("IC17-IC1-K2-C2 FCP_Template", "1", s67.resp.length > 0 ? "1" : "0");
323    bind.checkData("IC17-IC1-K2-C4 SW", "9000", s67.sw);
324
325    // IC ref inline @E 步骤 17(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
326    var s68 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
327    bind.checkData("IC17-IC1-K3-C4 SW", "9000", s68.sw);
328
329    // IC ref inline @E 步骤 17(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
330    var steady69 = bind.runToSteadyState(function () {
331        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
332    });
333    bind.checkData("IC17-IC1-K4-C4 final SW", "9000", steady69.final.sw);
334
335    // IC ref inline @E 步骤 18(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
336    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
337    var s70 = bind.manageChannelOpen("9000");
338    bind.checkData("IC18-IC2-K1-C4 SW", "9000", s70.sw);
339    bind.checkData("IC18-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s70.chan !== null ? "1" : "0");
340
341    // IC ref inline @E 步骤 18(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
342    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
343    var s71 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
344    // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
345    bind.checkData("IC18-IC2-K2-C4 SW", "9000", s71.sw);
346
347    // 步骤 19:MTD_STORE_DATA(tc_step;REQ: RQ57_163, RQ57_167, RQ57_169, RQ57_170, RQ33_010)
348    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
349    var sdCla19 = s70.chan !== null ? (s70.chan <= 3 ? 128 + s70.chan : 188 + s70.chan).toString(16).toUpperCase() : null;
350    var s19 = bind.sendApdu(sdCla19, "E2", "91", "00", "BF340482020520", "00", "9000");
351    bind.checkData("S19-C1 SW", "9000", s19.sw);
352    // es10x-proc-profile 响应面(TC_eUICC_ES10c.eUICCMemoryReset,SGP.22 §5.7.15 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
353    var pw19 = BindEs10xProcProfile.walkChoiceList(s19.resp, {respTag: "BF34", okTag: "A0", errTag: "81"});
354    var r2w19 = BindGecaProc.parseGecaResponse(s19.resp, {outer: "BF34", required: ["02"]});
355    var r2w19Set = ["01", "00"];
356    var r2w19Hit = false;
357    for (var r2w19I = 0; r2w19.ok && r2w19I < r2w19Set.length; r2w19I++) { if (r2w19Set[r2w19I] === r2w19.fields["02"]) { r2w19Hit = true; } }
358    bind.checkData("S19-C2 resetResult in {nothingToDelete, ok}", "1", (r2w19.ok && r2w19Hit) ? "1" : "0");
359
360    // 步骤 20:MTD_STORE_DATA(tc_step)
361    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
362    var sdCla20 = s70.chan !== null ? (s70.chan <= 3 ? 128 + s70.chan : 188 + s70.chan).toString(16).toUpperCase() : null;
363    var s20 = bind.sendApdu(sdCla20, "E2", "91", "00", "BF2D00", "00", "9000");
364    bind.checkData("S20-C1 SW", "9000", s20.sw);
365    var r2p20 = BindEs10xProcProfile.walkChoiceList(s20.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
366    var r2has20_0 = false;
367    for (var r2i20_0 = 0; r2i20_0 < r2p20.elements.length; r2i20_0++) {
368        var f = r2p20.elements[r2i20_0].fields;
369        if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has20_0 = true; break; }
370    }
371    bind.checkData("S20-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p20.branch_tag === "A0" && r2has20_0) ? "1" : "0");
372    var r2has20_1 = false;
373    for (var r2i20_1 = 0; r2i20_1 < r2p20.elements.length; r2i20_1++) {
374        var f = r2p20.elements[r2i20_1].fields;
375        if (f["5A"] === "989209014365870921F5" && f["9F70"] === "00") { r2has20_1 = true; break; }
376    }
377    bind.checkData("S20-C2 contains PROFILE_INFO3", "1", (r2p20.branch_tag === "A0" && r2has20_1) ? "1" : "0");
378
379    // 步骤 21:MTD_STORE_DATA(tc_step;REQ: RQ33_008)
380    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
381    var sdCla21 = s70.chan !== null ? (s70.chan <= 3 ? 128 + s70.chan : 188 + s70.chan).toString(16).toUpperCase() : null;
382    var s21 = bind.sendApdu(sdCla21, "E2", "91", "00", "BF3C00", "00", "9000");
383    bind.checkData("S21-C1 SW", "9000", s21.sw);
384    // Inline ASCII->hex helper (UTF8String expected values; values enter as
385    // ASCII literals traced to CaseIR check text / F_annexA_constants rows).
386    function __asciiHex(text) {
387        var out = "";
388        for (var i = 0; i < text.length; i++) {
389            var c = text.charCodeAt(i).toString(16).toUpperCase();
390            out += (c.length === 1 ? "0" + c : c);
391        }
392        return out;
393    }
394    var r2w21 = BindGecaProc.parseGecaResponse(s21.resp, {outer: "BF3C", required: []});
395    var r2c21 = r2w21.children;
396    var r2c021 = 0;
397    for (var r2ci21 = 0; r2ci21 < r2c21.length; r2ci21++) {
398        if (r2c21[r2ci21].tag === "80" || r2c21[r2ci21].tag === "81") { r2c021++; }
399    }
400    bind.checkData("S21-C2 defaultDpAddress absent", "absent", (r2c021 <= 1 ? "absent" : "present:" + r2c21[0].value));
401    var r2v21 = __asciiHex("testrootsmds.example.com");
402    bind.checkData("S21-C2 rootDsAddress testrootsmds.example.com", r2v21, (r2c021 >= 1 ? r2c21[r2c21.length - 1].value : "absent"));
403
404    // IC ref inline @E 步骤 22(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
405    var s72 = bind.resetAndAtr();
406    bind.checkData("IC22-IC1-K1-C1 ATR_present", "1", s72.atr_hex !== "" ? "1" : "0");
407
408    // IC ref inline @E 步骤 22(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
409    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
410    var s73 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
411    bind.checkData("IC22-IC1-K2-C2 FCP_Template", "1", s73.resp.length > 0 ? "1" : "0");
412    bind.checkData("IC22-IC1-K2-C4 SW", "9000", s73.sw);
413
414    // IC ref inline @E 步骤 22(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
415    var s74 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
416    bind.checkData("IC22-IC1-K3-C4 SW", "9000", s74.sw);
417
418    // IC ref inline @E 步骤 22(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
419    var steady75 = bind.runToSteadyState(function () {
420        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
421    });
422    bind.checkData("IC22-IC1-K4-C4 final SW", "9000", steady75.final.sw);
423
424    // IC ref inline @E 步骤 23(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
425    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
426    var s76 = bind.manageChannelOpen("9000");
427    bind.checkData("IC23-IC2-K1-C4 SW", "9000", s76.sw);
428    bind.checkData("IC23-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s76.chan !== null ? "1" : "0");
429
430    // IC ref inline @E 步骤 23(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
431    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
432    var s77 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
433    // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
434    bind.checkData("IC23-IC2-K2-C4 SW", "9000", s77.sw);
435
436    // 步骤 24:MTD_STORE_DATA(tc_step;REQ: RQ57_163, RQ57_166, RQ57_167, RQ57_169, RQ57_170, RQ33_010)
437    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
438    var sdCla24 = s76.chan !== null ? (s76.chan <= 3 ? 128 + s76.chan : 188 + s76.chan).toString(16).toUpperCase() : null;
439    var s24 = bind.sendApdu(sdCla24, "E2", "91", "00", "BF3404820205A0", "00", "9000");
440    bind.checkData("S24-C1 SW", "9000", s24.sw);
441    // es10x-proc-profile 响应面(TC_eUICC_ES10c.eUICCMemoryReset,SGP.22 §5.7.15 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
442    var pw24 = BindEs10xProcProfile.walkChoiceList(s24.resp, {respTag: "BF34", okTag: "A0", errTag: "81"});
443    var r2w24 = BindGecaProc.parseGecaResponse(s24.resp, {outer: "BF34", required: ["02"]});
444    bind.checkData("S24-C2 resetResult ok", "00", (r2w24.ok && r2w24.fields["02"] === "00") ? "00" : (r2w24.fields["02"] || "absent"));
445
446    // 步骤 25:MTD_STORE_DATA(tc_step;REQ: RQ33_011, RQ33_008, RQ33_012)
447    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
448    var sdCla25 = s76.chan !== null ? (s76.chan <= 3 ? 128 + s76.chan : 188 + s76.chan).toString(16).toUpperCase() : null;
449    var s25 = bind.sendApdu(sdCla25, "E2", "91", "00", "BF2D00", "00", "9000");
450    bind.checkData("S25-C1 SW", "9000", s25.sw);
451    var r2p25 = BindEs10xProcProfile.walkChoiceList(s25.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
452    bind.checkData("S25-C2 profileInfoListOk empty", "1", (r2p25.branch_tag === "A0" && r2p25.elements.length === 0) ? "1" : "0");
453
454    // 步骤 26:MTD_STORE_DATA(tc_step;REQ: RQ33_008)
455    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
456    var sdCla26 = s76.chan !== null ? (s76.chan <= 3 ? 128 + s76.chan : 188 + s76.chan).toString(16).toUpperCase() : null;
457    var s26 = bind.sendApdu(sdCla26, "E2", "91", "00", "BF3C00", "00", "9000");
458    bind.checkData("S26-C1 SW", "9000", s26.sw);
459    // Inline ASCII->hex helper (UTF8String expected values; values enter as
460    // ASCII literals traced to CaseIR check text / F_annexA_constants rows).
461    function __asciiHex(text) {
462        var out = "";
463        for (var i = 0; i < text.length; i++) {
464            var c = text.charCodeAt(i).toString(16).toUpperCase();
465            out += (c.length === 1 ? "0" + c : c);
466        }
467        return out;
468    }
469    var r2w26 = BindGecaProc.parseGecaResponse(s26.resp, {outer: "BF3C", required: []});
470    var r2c26 = r2w26.children;
471    var r2c026 = 0;
472    for (var r2ci26 = 0; r2ci26 < r2c26.length; r2ci26++) {
473        if (r2c26[r2ci26].tag === "80" || r2c26[r2ci26].tag === "81") { r2c026++; }
474    }
475    bind.checkData("S26-C2 defaultDpAddress absent", "absent", (r2c026 <= 1 ? "absent" : "present:" + r2c26[0].value));
476
477    // IC ref inline @E 步骤 27(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
478    var s78 = bind.resetAndAtr();
479    bind.checkData("IC27-IC1-K1-C1 ATR_present", "1", s78.atr_hex !== "" ? "1" : "0");
480
481    // IC ref inline @E 步骤 27(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
482    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
483    var s79 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
484    bind.checkData("IC27-IC1-K2-C2 FCP_Template", "1", s79.resp.length > 0 ? "1" : "0");
485    bind.checkData("IC27-IC1-K2-C4 SW", "9000", s79.sw);
486
487    // IC ref inline @E 步骤 27(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
488    var s80 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
489    bind.checkData("IC27-IC1-K3-C4 SW", "9000", s80.sw);
490
491    // IC ref inline @E 步骤 27(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
492    var steady81 = bind.runToSteadyState(function () {
493        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
494    });
495    bind.checkData("IC27-IC1-K4-C4 final SW", "9000", steady81.final.sw);
496
497    // IC ref inline @E 步骤 28(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
498    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
499    var s82 = bind.manageChannelOpen("9000");
500    bind.checkData("IC28-IC2-K1-C4 SW", "9000", s82.sw);
501    bind.checkData("IC28-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s82.chan !== null ? "1" : "0");
502
503    // IC ref inline @E 步骤 28(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
504    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
505    var s83 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
506    // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
507    bind.checkData("IC28-IC2-K2-C4 SW", "9000", s83.sw);
508
509    // 步骤 29:IC3: MTD_SEND_SMS_PP(tc_step)
510    // MTD_SEND_SMS_PP ENVELOPE (H Annex C.1 表1238 Details: 80 C2 00 00 <L>): SCP80-packed SMS-PP body is runtime-domain
511    // (<MNO_SCP80_COUNTER>/<CC>/<C_APDUS_SCRIPT>) — no bytes fabricated; the embedded STORE DATA
512    // script executes via the proactive FETCH / TERMINAL RESPONSE chain, not in this response.
513    var s29 = bind.sendApdu("80", "C2", "00", "00", null, null, null);
514    bind.checkData("S29-C1 SW1 91", "91", s29.sw.substring(0, 2));
515
516    // 步骤 30:IC4: Do not send FETCH command(序列#05:保持 proactive session 挂起)(tc_step)
517    // FETCH header literals follow the golden wire evidence 8012 (same
518    // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
519    // gives mechanism only). Le = pending length from the last 91XX
520    // (chain rule, binding-internal state).
521    var s30 = bind.fetchPending("80", "12", "00", "00", null);
522    // S30:主动会话协议闭合(TS 102 223 §6.3:主动命令必须 TR 应答;
523    // UICC Reset 变体 E 表无 TR 行属编辑省略,golden U3 线证同构)。
524    var s30tr = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
525
526    // 步骤 31:MTD_STORE_DATA(tc_step;REQ: RQ33_012)
527    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
528    var sdCla31 = s82.chan !== null ? (s82.chan <= 3 ? 128 + s82.chan : 188 + s82.chan).toString(16).toUpperCase() : null;
529    var s31 = bind.sendApdu(sdCla31, "E2", "91", "00", "BF340482020780", "00", "9000");
530    bind.checkData("S31-C1 SW1 91", "91", s31.sw.substring(0, 2));
531    // es10x-proc-profile 响应面(TC_eUICC_ES10c.eUICCMemoryReset,SGP.22 §5.7.15 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
532    var pw31 = BindEs10xProcProfile.walkChoiceList(s31.resp, {respTag: "BF34", okTag: "A0", errTag: "81"});
533    var r2w31 = BindGecaProc.parseGecaResponse(s31.resp, {outer: "BF34", required: ["02"]});
534    bind.checkData("S31-C2 resetResult ok", "00", (r2w31.ok && r2w31.fields["02"] === "00") ? "00" : (r2w31.fields["02"] || "absent"));
535
536    // 步骤 32:FETCH 'YY'(序列#05 步2)(tc_step)
537    // FETCH header literals follow the golden wire evidence 8012 (same
538    // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
539    // gives mechanism only). Le = pending length from the last 91XX
540    // (chain rule, binding-internal state).
541    var s32 = bind.fetchPending("80", "12", "00", "00", null);
542    bind.checkData("S32-C1 proactive command envelope", "1", (s32.resp.length >= 4 && s32.resp.substring(0, 2) === "D0") ? "1" : "0");
543    // S32-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
544    // S32:主动会话协议闭合(TS 102 223 §6.3:主动命令必须 TR 应答;
545    // UICC Reset 变体 E 表无 TR 行属编辑省略,golden U3 线证同构)。
546    var s32tr = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
547
548    // IC ref inline @E 步骤 33(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
549    var s84 = bind.resetAndAtr();
550    bind.checkData("IC33-IC1-K1-C1 ATR_present", "1", s84.atr_hex !== "" ? "1" : "0");
551
552    // IC ref inline @E 步骤 33(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
553    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
554    var s85 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
555    bind.checkData("IC33-IC1-K2-C2 FCP_Template", "1", s85.resp.length > 0 ? "1" : "0");
556    bind.checkData("IC33-IC1-K2-C4 SW", "9000", s85.sw);
557
558    // IC ref inline @E 步骤 33(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
559    var s86 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
560    bind.checkData("IC33-IC1-K3-C4 SW", "9000", s86.sw);
561
562    // IC ref inline @E 步骤 33(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
563    var steady87 = bind.runToSteadyState(function () {
564        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
565    });
566    bind.checkData("IC33-IC1-K4-C4 final SW", "9000", steady87.final.sw);
567
568    // IC ref inline @E 步骤 33(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
569    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
570    var s88 = bind.manageChannelOpen("9000");
571    bind.checkData("IC33-IC2-K1-C4 SW", "9000", s88.sw);
572    bind.checkData("IC33-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s88.chan !== null ? "1" : "0");
573
574    // IC ref inline @E 步骤 33(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
575    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
576    var s89 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
577    // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
578    bind.checkData("IC33-IC2-K2-C4 SW", "9000", s89.sw);
579
580    // 步骤 34:MTD_STORE_DATA(tc_step)
581    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
582    var sdCla34 = s88.chan !== null ? (s88.chan <= 3 ? 128 + s88.chan : 188 + s88.chan).toString(16).toUpperCase() : null;
583    var s34 = bind.sendApdu(sdCla34, "E2", "91", "00", "BF2804810204F0", "00", "9000");
584    bind.checkData("S34-C1 SW", "9000", s34.sw);
585    // Inline ASCII->hex helper (UTF8String expected values; values enter as
586    // ASCII literals traced to CaseIR check text / F_annexA_constants rows).
587    function __asciiHex(text) {
588        var out = "";
589        for (var i = 0; i < text.length; i++) {
590            var c = text.charCodeAt(i).toString(16).toUpperCase();
591            out += (c.length === 1 ? "0" + c : c);
592        }
593        return out;
594    }
595    var r2n34T = BindEs10xSingleRequest.parseBerTlv(s34.resp);
596    var r2n34Ok0 = r2n34T.length === 1 && r2n34T[0].tag === "BF28";
597    var r2n34B = r2n34Ok0 ? BindEs10xSingleRequest.parseBerTlv(r2n34T[0].value) : [];
598    var r2n34_brtag = r2n34B.length === 1 ? r2n34B[0].tag : "";
599    var r2n34_els = r2n34_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(r2n34B[0].value) : [];
600    var r2n34Has = false;
601    for (var r2n34i = 0; r2n34i < r2n34_els.length; r2n34i++) {
602        if (r2n34_els[r2n34i].tag !== "BF2F") { continue; }
603        var r2n34F = {};
604        var r2n34M = BindEs10xSingleRequest.parseBerTlv(r2n34_els[r2n34i].value);
605        for (var r2n34j = 0; r2n34j < r2n34M.length; r2n34j++) { r2n34F[r2n34M[r2n34j].tag] = r2n34M[r2n34j].value; }
606        if (r2n34F["5A"] === "989209012143658709F5" && r2n34F["0C"] === __asciiHex("testsmdpplus1.example.com")) { r2n34Has = true; break; }
607    }
608    bind.checkData("S34-C2 notificationMetadataList contains NOTIF_METADATA_DELETE1", "1", r2n34Has ? "1" : "0");
609
610    // 步骤 35:MTD_STORE_DATA(tc_step)
611    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
612    var sdCla35 = s88.chan !== null ? (s88.chan <= 3 ? 128 + s88.chan : 188 + s88.chan).toString(16).toUpperCase() : null;
613    var s35 = bind.sendApdu(sdCla35, "E2", "91", "00", "BF4300", "00", "9000");
614    bind.checkData("S35-C1 SW", "9000", s35.sw);
615    // grat ES10b GetRAT 响应面(外层 BF43,S22_tag_table Table 66 + I_annexD3_es10x:179/249 机械推导;PPAR 内部 DER 定位 = §5.7.22 模块语料真空):
616    var rgw35 = BindGecaProc.parseGecaResponse(s35.resp, {outer: "BF43", required: [], optional: []});
617    var rrat35 = (rgw35.children.length === 1) ? BindEs10xSingleRequest.parseBerTlv(rgw35.children[0].value) : [];
618    // S35-C2: PPRS_ALLOWED 字段值(pprIds/allowedOperators/pprFlags)DER 定位 oracle 缺席——SGP.22 §5.7.22 ASN.1
619    // 模块未入包、tag 表仅给 BF43 外层——发射 fail-closed 恒断言诚实面(如实计错,不伪造通过)。
620    bind.checkData("S35-C2 PPRS_ALLOWED field-value oracle", "ppar_member_tag_oracle_declared", "oracle_absent_sgp22_5_7_22_module_vacuum");
621
622    // 步骤 36:MTD_STORE_DATA(tc_step;REQ: RQ33_012)
623    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
624    var sdCla36 = s88.chan !== null ? (s88.chan <= 3 ? 128 + s88.chan : 188 + s88.chan).toString(16).toUpperCase() : null;
625    var s36 = bind.sendApdu(sdCla36, "E2", "91", "00", "BF2D00", "00", "9000");
626    bind.checkData("S36-C1 SW", "9000", s36.sw);
627    var r2p36 = BindEs10xProcProfile.walkChoiceList(s36.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
628    bind.checkData("S36-C2 profileInfoListOk empty", "1", (r2p36.branch_tag === "A0" && r2p36.elements.length === 0) ? "1" : "0");
629
630    // IC ref inline @E 步骤 37(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
631    var s90 = bind.resetAndAtr();
632    bind.checkData("IC37-IC1-K1-C1 ATR_present", "1", s90.atr_hex !== "" ? "1" : "0");
633
634    // IC ref inline @E 步骤 37(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
635    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
636    var s91 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
637    bind.checkData("IC37-IC1-K2-C2 FCP_Template", "1", s91.resp.length > 0 ? "1" : "0");
638    bind.checkData("IC37-IC1-K2-C4 SW", "9000", s91.sw);
639
640    // IC ref inline @E 步骤 37(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
641    var s92 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
642    bind.checkData("IC37-IC1-K3-C4 SW", "9000", s92.sw);
643
644    // IC ref inline @E 步骤 37(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
645    var steady93 = bind.runToSteadyState(function () {
646        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
647    });
648    bind.checkData("IC37-IC1-K4-C4 final SW", "9000", steady93.final.sw);
649
650    // IC ref inline @E 步骤 38(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
651    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
652    var s94 = bind.manageChannelOpen("9000");
653    bind.checkData("IC38-IC2-K1-C4 SW", "9000", s94.sw);
654    bind.checkData("IC38-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s94.chan !== null ? "1" : "0");
655
656    // IC ref inline @E 步骤 38(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
657    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
658    var s95 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
659    // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
660    bind.checkData("IC38-IC2-K2-C4 SW", "9000", s95.sw);
661
662    // 步骤 39:IC3: MTD_SEND_SMS_PP(tc_step)
663    // MTD_SEND_SMS_PP ENVELOPE (H Annex C.1 表1238 Details: 80 C2 00 00 <L>): SCP80-packed SMS-PP body is runtime-domain
664    // (<MNO_SCP80_COUNTER>/<CC>/<C_APDUS_SCRIPT>) — no bytes fabricated; the embedded STORE DATA
665    // script executes via the proactive FETCH / TERMINAL RESPONSE chain, not in this response.
666    var s39 = bind.sendApdu("80", "C2", "00", "00", null, null, null);
667    bind.checkData("S39-C1 SW1 91", "91", s39.sw.substring(0, 2));
668
669    // 步骤 40:FETCH 'XX'(序列#06 步1:取回 proactive 命令,POR 待回)(tc_step)
670    // FETCH header literals follow the golden wire evidence 8012 (same
671    // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
672    // gives mechanism only). Le = pending length from the last 91XX
673    // (chain rule, binding-internal state).
674    var s40 = bind.fetchPending("80", "12", "00", "00", null);
675    // S40:主动会话协议闭合(TS 102 223 §6.3:主动命令必须 TR 应答;
676    // UICC Reset 变体 E 表无 TR 行属编辑省略,golden U3 线证同构)。
677    var s40tr = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
678    // S40-C1: binding:fetch_sms_por_runtime_parse(MTD_CHECK_SMS_POR;H-annexC1) (check_attestation)
679
680    // 步骤 41:MTD_STORE_DATA(tc_step;REQ: RQ33_012)
681    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
682    var sdCla41 = s94.chan !== null ? (s94.chan <= 3 ? 128 + s94.chan : 188 + s94.chan).toString(16).toUpperCase() : null;
683    var s41 = bind.sendApdu(sdCla41, "E2", "91", "00", "BF340482020780", "00", "9000");
684    bind.checkData("S41-C1 SW", "9000", s41.sw);
685    // es10x-proc-profile 响应面(TC_eUICC_ES10c.eUICCMemoryReset,SGP.22 §5.7.15 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
686    var pw41 = BindEs10xProcProfile.walkChoiceList(s41.resp, {respTag: "BF34", okTag: "A0", errTag: "81"});
687    var r2w41 = BindGecaProc.parseGecaResponse(s41.resp, {outer: "BF34", required: ["02"]});
688    bind.checkData("S41-C2 resetResult ok", "00", (r2w41.ok && r2w41.fields["02"] === "00") ? "00" : (r2w41.fields["02"] || "absent"));
689
690    // 步骤 42:TERMINAL RESPONSE(序列#06 步3)(tc_step)
691    // TERMINAL RESPONSE data is dynamically built by the binding from the
692    // last FETCHed proactive command (D 2.2.2; buildTrData) - never static.
693    // Header literals follow the golden wire evidence 8014.
694    var s42 = bind.terminalResponseForPending("80", "14", "00", "00", null);
695    bind.checkData("S42-C1 SW1 91", "91", s42.sw.substring(0, 2));
696
697    // 步骤 43:FETCH 'YY'(序列#06 步4)(tc_step)
698    // FETCH header literals follow the golden wire evidence 8012 (same
699    // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
700    // gives mechanism only). Le = pending length from the last 91XX
701    // (chain rule, binding-internal state).
702    var s43 = bind.fetchPending("80", "12", "00", "00", null);
703    bind.checkData("S43-C1 proactive command envelope", "1", (s43.resp.length >= 4 && s43.resp.substring(0, 2) === "D0") ? "1" : "0");
704    // S43-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
705    // S43:主动会话协议闭合(TS 102 223 §6.3:主动命令必须 TR 应答;
706    // UICC Reset 变体 E 表无 TR 行属编辑省略,golden U3 线证同构)。
707    var s43tr = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
708
709    // IC ref inline @E 步骤 44(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
710    var s96 = bind.resetAndAtr();
711    bind.checkData("IC44-IC1-K1-C1 ATR_present", "1", s96.atr_hex !== "" ? "1" : "0");
712
713    // IC ref inline @E 步骤 44(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
714    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
715    var s97 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
716    bind.checkData("IC44-IC1-K2-C2 FCP_Template", "1", s97.resp.length > 0 ? "1" : "0");
717    bind.checkData("IC44-IC1-K2-C4 SW", "9000", s97.sw);
718
719    // IC ref inline @E 步骤 44(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
720    var s98 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
721    bind.checkData("IC44-IC1-K3-C4 SW", "9000", s98.sw);
722
723    // IC ref inline @E 步骤 44(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
724    var steady99 = bind.runToSteadyState(function () {
725        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
726    });
727    bind.checkData("IC44-IC1-K4-C4 final SW", "9000", steady99.final.sw);
728
729    // IC ref inline @E 步骤 44(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
730    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
731    var s100 = bind.manageChannelOpen("9000");
732    bind.checkData("IC44-IC2-K1-C4 SW", "9000", s100.sw);
733    bind.checkData("IC44-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s100.chan !== null ? "1" : "0");
734
735    // IC ref inline @E 步骤 44(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
736    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
737    var s101 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
738    // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
739    bind.checkData("IC44-IC2-K2-C4 SW", "9000", s101.sw);
740
741    // 步骤 45:MTD_STORE_DATA(tc_step)
742    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
743    var sdCla45 = s100.chan !== null ? (s100.chan <= 3 ? 128 + s100.chan : 188 + s100.chan).toString(16).toUpperCase() : null;
744    var s45 = bind.sendApdu(sdCla45, "E2", "91", "00", "BF2804810204F0", "00", "9000");
745    bind.checkData("S45-C1 SW", "9000", s45.sw);
746    // Inline ASCII->hex helper (UTF8String expected values; values enter as
747    // ASCII literals traced to CaseIR check text / F_annexA_constants rows).
748    function __asciiHex(text) {
749        var out = "";
750        for (var i = 0; i < text.length; i++) {
751            var c = text.charCodeAt(i).toString(16).toUpperCase();
752            out += (c.length === 1 ? "0" + c : c);
753        }
754        return out;
755    }
756    var r2n45T = BindEs10xSingleRequest.parseBerTlv(s45.resp);
757    var r2n45Ok0 = r2n45T.length === 1 && r2n45T[0].tag === "BF28";
758    var r2n45B = r2n45Ok0 ? BindEs10xSingleRequest.parseBerTlv(r2n45T[0].value) : [];
759    var r2n45_brtag = r2n45B.length === 1 ? r2n45B[0].tag : "";
760    var r2n45_els = r2n45_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(r2n45B[0].value) : [];
761    var r2n45Has = false;
762    for (var r2n45i = 0; r2n45i < r2n45_els.length; r2n45i++) {
763        if (r2n45_els[r2n45i].tag !== "BF2F") { continue; }
764        var r2n45F = {};
765        var r2n45M = BindEs10xSingleRequest.parseBerTlv(r2n45_els[r2n45i].value);
766        for (var r2n45j = 0; r2n45j < r2n45M.length; r2n45j++) { r2n45F[r2n45M[r2n45j].tag] = r2n45M[r2n45j].value; }
767        if (r2n45F["5A"] === "989209012143658709F5" && r2n45F["0C"] === __asciiHex("testsmdpplus1.example.com")) { r2n45Has = true; break; }
768    }
769    bind.checkData("S45-C2 notificationMetadataList contains NOTIF_METADATA_DELETE1", "1", r2n45Has ? "1" : "0");
770
771    // 步骤 46:MTD_STORE_DATA(tc_step)
772    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
773    var sdCla46 = s100.chan !== null ? (s100.chan <= 3 ? 128 + s100.chan : 188 + s100.chan).toString(16).toUpperCase() : null;
774    var s46 = bind.sendApdu(sdCla46, "E2", "91", "00", "BF4300", "00", "9000");
775    bind.checkData("S46-C1 SW", "9000", s46.sw);
776    // grat ES10b GetRAT 响应面(外层 BF43,S22_tag_table Table 66 + I_annexD3_es10x:179/249 机械推导;PPAR 内部 DER 定位 = §5.7.22 模块语料真空):
777    var rgw46 = BindGecaProc.parseGecaResponse(s46.resp, {outer: "BF43", required: [], optional: []});
778    var rrat46 = (rgw46.children.length === 1) ? BindEs10xSingleRequest.parseBerTlv(rgw46.children[0].value) : [];
779    // S46-C2: PPRS_ALLOWED 字段值(pprIds/allowedOperators/pprFlags)DER 定位 oracle 缺席——SGP.22 §5.7.22 ASN.1
780    // 模块未入包、tag 表仅给 BF43 外层——发射 fail-closed 恒断言诚实面(如实计错,不伪造通过)。
781    bind.checkData("S46-C2 PPRS_ALLOWED field-value oracle", "ppar_member_tag_oracle_declared", "oracle_absent_sgp22_5_7_22_module_vacuum");
782
783    // 步骤 47:MTD_STORE_DATA(tc_step;REQ: RQ33_012)
784    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
785    var sdCla47 = s100.chan !== null ? (s100.chan <= 3 ? 128 + s100.chan : 188 + s100.chan).toString(16).toUpperCase() : null;
786    var s47 = bind.sendApdu(sdCla47, "E2", "91", "00", "BF2D00", "00", "9000");
787    bind.checkData("S47-C1 SW", "9000", s47.sw);
788    var r2p47 = BindEs10xProcProfile.walkChoiceList(s47.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
789    bind.checkData("S47-C2 profileInfoListOk empty", "1", (r2p47.branch_tag === "A0" && r2p47.elements.length === 0) ? "1" : "0");
790}
791

完整 unified diff

行级差异:新增 789 行 / 删除 586 行(以 -man 为基准,unified 上下文 3 行)。

展开 diff(1380 行)
--- -man
+++ -cas
@@ -1,588 +1,791 @@
-// slice of Import\TestCase_SGP_23.js - cases: TC_eUICC_ES10c_eUICCMemoryReset_01_Nominal_Reset_All_Operational_Profiles_without_Enabled_Profile + TC_eUICC_ES10c_eUICCMemoryReset_02_Nominal_Reset_All_Operational_Profiles_with_Enabled_Profile + TC_eUICC_ES10c_eUICCMemoryReset_03_Nominal_Reset_the_Default_SMDP_Address_only + TC_eUICC_ES10c_eUICCMemoryReset_04_Nominal_Reset_All_Operational_Profiles_and_the_Default_SMDP_Address + TC_eUICC_ES10c_eUICCMemoryReset_05_Nominal_eUICCMemoryReset_when_this_Operational_Profile_is_in_Enabled_state_while_proactive_sessionisongoing_catBusynotsupported + TC_eUICC_ES10c_eUICCMemoryReset_06_Nominal_eUICCMemoryReset_when_this_Profile_is_in_Enabled_state_while_proactive_sessionisongoing_catBusynotsupported (extracted verbatim)
-
-function TC_eUICC_ES10c_eUICCMemoryReset_01_Nominal_Reset_All_Operational_Profiles_without_Enabled_Profile()
-{
-	initial_condition_Start();
-	
-	initial_condition_Install_PROFILE_OPERATIONAL1();
-	
-	initial_condition_Set_SMDP_Address(TEST_DP_ADDRESS1);
-	
-	initial_condition_Install_PROFILE_OPERATIONAL3();
-	
-	initial_condition_set_Profile_Nickname("读卡器向卡片发送 StoreData命令,执行SetNickname,profileNickname为NICKNAME3;", ICCID_OP_PROF3, NICKNAME3);
-	
-	initial_condition_Remove_All_Notification();
-	
-	tracenamestr = "测试目的:没有处于激活状态的profile,重置所有的Operational Profile";
-	curDis.TraceStart(sno++,tracenamestr);
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
-	Ini_powerOn_eUICC_LPAe_not_activate();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GET_EUICC_INFO2,获取卡片的剩余不可变空间大小;");
-	var hexData = LPAd_Transport_data_to_eUICC(GetEuiccInfo2RequestHexStr);
-	
-	var euiccInfo2 = new EUICCInfo2();
-	euiccInfo2.checkCardResDataFormat(hexData);
-	var FREE_MEM_OP_PROF_INSTALLED = 0;
-	try
-	{
-		var extCardResourceObj = new ExtendedCardResource();
-		extCardResourceObj.SetHexData(euiccInfo2.extCardResource);
-		FREE_MEM_OP_PROF_INSTALLED = parseInt(extCardResourceObj.FreeNonVolatileMemory, 16);
-	}catch(e){
-		obj.SubLevel(display_rsp_card_data_format_check_fail, level_of_SubLevel.error);
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EuiccMemoryResetRequest,删除OperationalProfile;");
-	var euiMemoryResetRequest = new EuiccMemoryResetRequest();
-	euiMemoryResetRequest.resetOptions = "0780";
-	euiMemoryResetRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(euiMemoryResetRequest.hexData);
-	curStrHandle.CheckData("BF3403800100", respData, "EuiccMemoryResetResponse");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_PROFILES_INFO_ALL,期望返回列表为空;");
-	var respData = LPAd_Transport_data_to_eUICC(RetrieveProfileInfoAll);
-	curStrHandle.CheckData(ProfileInfoListResponse_empty, respData, "ProfileInfoListResponse");
-	
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,LIST_NOTIF_ALL;");
-	var resdata = LPAd_Transport_data_to_eUICC(listNotificationAllRequest);
-	var listNotificationResponse = new ListNotificationResponse();
-	listNotificationResponse.checkCardResDataFormat(resdata);
-	
-	Max_seqNumber_Of_Notification ++;
-	var arr1 = listNotificationResponse.notificationMetadataList.arrOfElement;
-	curStrHandle.CheckData("1", arr1.length.toString(), "Number of Notification");
-	
-	if (arr1.length >= 1)
-	{
-		curStrHandle.CheckData(Max_seqNumber_Of_Notification.toString(), parseInt(arr1[0].seqNumber,16).toString(), "seqNumber");
-		curStrHandle.CheckData("0410", arr1[0].profileManagementOperation, "profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS1, arr1[0].notificationAddress, "notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, arr1[0].iccid, "iccid");
-	}
-	
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GET_EUICC_INFO2,获取卡片的剩余不可变空间大小,剩余不可变空间应变大;");
-	var hexData = LPAd_Transport_data_to_eUICC(GetEuiccInfo2RequestHexStr);
-	var euiccInfo2 = new EUICCInfo2();
-	euiccInfo2.checkCardResDataFormat(hexData);
-	
-	var FREE_MEMORY_NO_PROFILE = 0;
-	try
-	{
-		
-		var extCardResourceObj = new ExtendedCardResource();
-		extCardResourceObj.SetHexData(euiccInfo2.extCardResource);
-		FREE_MEMORY_NO_PROFILE = parseInt(extCardResourceObj.FreeNonVolatileMemory, 16);
-	}catch(e){
-		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
-	}
-	
-	if (FREE_MEMORY_NO_PROFILE > FREE_MEM_OP_PROF_INSTALLED)
-		obj.SubLevel("删除后的卡片剩余不可变空间变大了", 1);
-	else
-		obj.SubLevel("删除后的卡片剩余不可变空间没有变大", 0);
-		
-		obj.SubLevel("euiccInfo2.extCardResource.FreeNonVolatileMemory"+euiccInfo2.extCardResource.FreeNonVolatileMemory,1);
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_EUICC_CONFIGURED_ADDRESSES,检查defaultDpAddress应没有改变;");
-	var hexData = LPAd_Transport_data_to_eUICC(EuiccConfiguredAddressesRequestHexStr);
-	var resObj = new EuiccConfiguredAddressesResponse();
-	resObj.checkCardResDataFormat(hexData);
-	
-	curStrHandle.CheckData(TEST_DP_ADDRESS1, resObj.defaultDpAddress, "defaultDpAddress");
-	curStrHandle.CheckData(TEST_ROOT_DS_ADDRESS, resObj.rootDsAddress, "rootDsAddress");
-	
-	RecoverCard();
-}
-
-function TC_eUICC_ES10c_eUICCMemoryReset_02_Nominal_Reset_All_Operational_Profiles_with_Enabled_Profile()
-{
-	initial_condition_Start();
-	
-	initial_condition_Install_PROFILE_OPERATIONAL1();
-	
-	initial_condition_Set_SMDP_Address(TEST_DP_ADDRESS1);
-	
-	initial_condition_Enable_Profile("Enable Profile1", ICCID_OP_PROF1);
-	
-	initial_condition_Remove_All_Notification();
-	
-	
-	tracenamestr = "测试目的:有处于激活状态的profile,重置所有的Operational Profile";
-	curDis.TraceStart(sno++,tracenamestr);
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
-	Ini_powerOn_eUICC_LPAe_not_activate();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EuiccMemoryResetRequest,删除OperationalProfile;");
-	var euiMemoryResetRequest = new EuiccMemoryResetRequest();
-	euiMemoryResetRequest.resetOptions = "0780";
-	euiMemoryResetRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(euiMemoryResetRequest.hexData, "91", "00", "91XX");
-	
-	curStrHandle.CheckData("BF3403800100", respData, "EuiccMemoryResetResponse");
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"Fetch主动式命令refresh;");
-	
-	FetchStr = Fetch("","9000","");
-		
-	var CmdDetails = GetValueByTag("01",1);
-	var CmdQualifier = CmdDetails.substr(4,2);
-	CheckData("04",CmdQualifier,"the command qualifier is equal to ’04’ (UICC Reset)");
-	
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
-	Ini_powerOn_eUICC_LPAe_not_activate();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,LIST_NOTIF_ALL;");
-	
-	var resdata = LPAd_Transport_data_to_eUICC(listNotificationAllRequest);
-	
-	var listNotificationResponse = new ListNotificationResponse();
-	
-	listNotificationResponse.checkCardResDataFormat(resdata);
-	
-	Max_seqNumber_Of_Notification ++;
-	var arr1 = listNotificationResponse.notificationMetadataList.arrOfElement;
-	curStrHandle.CheckData("1/2", arr1.length.toString(), "Number of Notification");
-	
-	if (arr1.length == 1)
-	{
-		curStrHandle.CheckData(Max_seqNumber_Of_Notification.toString(), parseInt(arr1[0].seqNumber,16).toString(), "seqNumber");
-		curStrHandle.CheckData("0410", arr1[0].profileManagementOperation, "profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS1, arr1[0].notificationAddress, "notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, arr1[0].iccid, "iccid");
-	}
-	else if (arr1.length == 2)
-	{
-		curStrHandle.CheckData(Max_seqNumber_Of_Notification.toString(), parseInt(arr1[0].seqNumber,16).toString(), "seqNumber");
-		curStrHandle.CheckData("0640", arr1[0].profileManagementOperation, "profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS1, arr1[0].notificationAddress, "notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, arr1[0].iccid, "iccid");
-		
-		Max_seqNumber_Of_Notification ++;
-		curStrHandle.CheckData(Max_seqNumber_Of_Notification.toString(), parseInt(arr1[0].seqNumber,16).toString(), "seqNumber");
-		curStrHandle.CheckData("0410", arr1[0].profileManagementOperation, "profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS1, arr1[0].notificationAddress, "notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, arr1[0].iccid, "iccid");
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_RAT,期望返回值不变;");
-	
-	var respData = LPAd_Transport_data_to_eUICC(GetRatRequestHexStr);
-	curStrHandle.CheckData(R_DEFAULT_RAT, respData, "R_DEFAULT_RAT");
-	
-		
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_PROFILES_INFO_ALL,期望返回列表为空;");
-	
-	var respData = LPAd_Transport_data_to_eUICC(RetrieveProfileInfoAll);
-	curStrHandle.CheckData(ProfileInfoListResponse_empty, respData, "ProfileInfoListResponse");
-	
-	
-	RecoverCard();
-}
-
-function TC_eUICC_ES10c_eUICCMemoryReset_03_Nominal_Reset_the_Default_SMDP_Address_only()
-{
-	initial_condition_Start();
-	
-	initial_condition_Install_PROFILE_OPERATIONAL1();
-	
-	initial_condition_Set_SMDP_Address(TEST_DP_ADDRESS1);
-	
-	initial_condition_Install_PROFILE_OPERATIONAL3();
-	
-	initial_condition_set_Profile_Nickname("读卡器向卡片发送 StoreData命令,执行SetNickname,profileNickname为NICKNAME3;", ICCID_OP_PROF3, NICKNAME3);
-	
-	tracenamestr = "测试目的:重置缺省SM-DP+地址";
-	curDis.TraceStart(sno++,tracenamestr);
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
-	Ini_powerOn_eUICC_LPAe_not_activate();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,Reset the Default SM-DP+ Address only;");
-	var euiMemoryResetRequest = new EuiccMemoryResetRequest();
-	euiMemoryResetRequest.resetOptions = "0520";
-	euiMemoryResetRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(euiMemoryResetRequest.hexData);
-	
-	curStrHandle.CheckData("BF3403800100", respData, "EuiccMemoryResetResponse");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_PROFILES_INFO_ALL;");
-	
-	var respData = LPAd_Transport_data_to_eUICC(RetrieveProfileInfoAll);
-	var resObj = new ProfileInfoListResponse();
-	resObj.checkCardResDataFormat(respData);
-	
-	var num = resObj.profileInfoListOk.arrOfElement.length;
-	
-	curStrHandle.CheckData("2", num.toString(), "ProfileInfo Num");
-	
-	if (num == 2)
-	{
-		check_PROFILE_INFO1_DISABLED(resObj.profileInfoListOk.arrOfElement[0]);
-		check_PROFILE_INFO3(resObj.profileInfoListOk.arrOfElement[1]);
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_EUICC_CONFIGURED_ADDRESSES,检查defaultDpAddress应不存在;");
-	
-	var hexData = LPAd_Transport_data_to_eUICC(EuiccConfiguredAddressesRequestHexStr);
-	var resObj = new EuiccConfiguredAddressesResponse();
-	resObj.checkCardResDataFormat(hexData);
-	
-	curStrHandle.CheckData("不存在", resObj.defaultDpAddress, "defaultDpAddress");
-	curStrHandle.CheckData(TEST_ROOT_DS_ADDRESS, resObj.rootDsAddress, "rootDsAddress");
-	
-	RecoverCard();
-}
-
-function TC_eUICC_ES10c_eUICCMemoryReset_04_Nominal_Reset_All_Operational_Profiles_and_the_Default_SMDP_Address()
-{
-	initial_condition_Start();
-	
-	initial_condition_Install_PROFILE_OPERATIONAL1();
-	
-	initial_condition_Set_SMDP_Address(TEST_DP_ADDRESS1);
-	
-	initial_condition_Install_PROFILE_OPERATIONAL3();
-	
-	tracenamestr = "测试目的:重置所有的Operational Profile和缺省SM-DP+地址";
-	curDis.TraceStart(sno++,tracenamestr);
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
-	Ini_powerOn_eUICC_LPAe_not_activate();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,Reset All Operational Profiles and the Default SM-DP+ Address;");
-	var euiMemoryResetRequest = new EuiccMemoryResetRequest();
-	euiMemoryResetRequest.resetOptions = "05A0";
-	euiMemoryResetRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(euiMemoryResetRequest.hexData);
-	
-	curStrHandle.CheckData("BF3403800100", respData, "EuiccMemoryResetResponse");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_PROFILES_INFO_ALL;");
-	
-	var respData = LPAd_Transport_data_to_eUICC(RetrieveProfileInfoAll);
-	curStrHandle.CheckData(ProfileInfoListResponse_empty, respData, "ProfileInfoListResponse");
-	
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_EUICC_CONFIGURED_ADDRESSES,检查defaultDpAddress应不存在;");
-	
-	var hexData = LPAd_Transport_data_to_eUICC(EuiccConfiguredAddressesRequestHexStr);
-	var resObj = new EuiccConfiguredAddressesResponse();
-	resObj.checkCardResDataFormat(hexData);
-	
-	curStrHandle.CheckData("不存在", resObj.defaultDpAddress, "defaultDpAddress");
-	curStrHandle.CheckData(TEST_ROOT_DS_ADDRESS, resObj.rootDsAddress, "rootDsAddress");
-	
-	RecoverCard();
-}
-
-function TC_eUICC_ES10c_eUICCMemoryReset_05_Nominal_eUICCMemoryReset_when_this_Operational_Profile_is_in_Enabled_state_while_proactive_sessionisongoing_catBusynotsupported()
-{
-	
-	//测试入口条件
-	if(!check_Applicability_of_tests_RSP_SGP23_test("C033"))
-		return;
-	
-	initial_condition_Start();
-	
-	initial_condition_Install_PROFILE_OPERATIONAL1();
-	
-	initial_condition_Set_SMDP_Address(TEST_DP_ADDRESS1);
-	
-	initial_condition_Enable_Profile("Enable Profile1", ICCID_OP_PROF1);
-	
-	initial_condition_Remove_All_Notification();
-	
-	
-	tracenamestr = "测试目的:eUICC不支持catBusy,有一个处于激活状态的Operational Profile,主动式会话进行中时,执行eUICCMemoryReset";
-	curDis.TraceStart(sno++,tracenamestr);
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
-	Ini_powerOn_eUICC_LPAe_not_activate();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-		
-	curLogicChannel = 0;
-	var sSendType = SendTypeByOTA.SMS;
-	KIC = MNO_SCP80_ENC_KEY;
-	KID = MNO_SCP80_AUTH_KEY;
-	KIK = MNO_SCP80_DATA_ENC_KEY;
-	curDis.TestStepStart2(stno++,"SCP80,发送get status命令,使用MNO-SD的tar");
-	sAPDU = "80F28002024F0000";
-	SendMessageToCard_GP(sSendType,"91XX",0,"B20100","12210015",sAPDU);
-	HaveReEntry91XX = true;
-	var ss = obj.GetState();
-	ReEntry91XXLength = ss.substr(2,2);
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EuiccMemoryResetRequest,删除OperationalProfile;");
-	var euiMemoryResetRequest = new EuiccMemoryResetRequest();
-	euiMemoryResetRequest.resetOptions = "0780";
-	euiMemoryResetRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(euiMemoryResetRequest.hexData, "91", "00", "91XX");
-	
-	curStrHandle.CheckData("BF3403800105", respData, "EuiccMemoryResetResponse");
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"Fetch主动式命令refresh;");
-	
-	FetchStr = Fetch("","9000","");
-		
-	var CmdDetails = GetValueByTag("01",1);
-	var CmdQualifier = CmdDetails.substr(4,2);
-	CheckData("04",CmdQualifier,"the command qualifier is equal to ’04’ (UICC Reset)");
-	
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
-	Ini_powerOn_eUICC_LPAe_not_activate();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,LIST_NOTIF_ALL;");
-	
-	var resdata = LPAd_Transport_data_to_eUICC(listNotificationAllRequest);
-	
-	var listNotificationResponse = new ListNotificationResponse();
-	
-	listNotificationResponse.checkCardResDataFormat(resdata);
-	
-	Max_seqNumber_Of_Notification ++;
-	var arr1 = listNotificationResponse.notificationMetadataList.arrOfElement;
-	curStrHandle.CheckData("0", arr1.length.toString(), "Number of Notification");
-	
-	if (arr1.length == 1)
-	{
-		curStrHandle.CheckData(Max_seqNumber_Of_Notification.toString(), parseInt(arr1[0].seqNumber,16).toString(), "seqNumber");
-		curStrHandle.CheckData("0410", arr1[0].profileManagementOperation, "profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS1, arr1[0].notificationAddress, "notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, arr1[0].iccid, "iccid");
-	}
-	else if (arr1.length == 2)
-	{
-		curStrHandle.CheckData(Max_seqNumber_Of_Notification.toString(), parseInt(arr1[0].seqNumber,16).toString(), "seqNumber");
-		curStrHandle.CheckData("0640", arr1[0].profileManagementOperation, "profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS1, arr1[0].notificationAddress, "notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, arr1[0].iccid, "iccid");
-		
-		Max_seqNumber_Of_Notification ++;
-		curStrHandle.CheckData(Max_seqNumber_Of_Notification.toString(), parseInt(arr1[0].seqNumber,16).toString(), "seqNumber");
-		curStrHandle.CheckData("0410", arr1[0].profileManagementOperation, "profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS1, arr1[0].notificationAddress, "notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, arr1[0].iccid, "iccid");
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_RAT,期望返回值不变;");
-	
-	var respData = LPAd_Transport_data_to_eUICC(GetRatRequestHexStr);
-	curStrHandle.CheckData(R_DEFAULT_RAT, respData, "R_DEFAULT_RAT");
-	
-		
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_PROFILES_INFO_ALL,期望返回列表为空;");
-	
-	var respData = LPAd_Transport_data_to_eUICC(RetrieveProfileInfoAll);
-	curStrHandle.CheckData(ProfileInfoListResponse_empty, respData, "ProfileInfoListResponse");
-	
-	
-	RecoverCard();
-}
-
-function TC_eUICC_ES10c_eUICCMemoryReset_06_Nominal_eUICCMemoryReset_when_this_Profile_is_in_Enabled_state_while_proactive_sessionisongoing_catBusynotsupported()
-{
-	
-	//测试入口条件
-	if(!check_Applicability_of_tests_RSP_SGP23_test("C033"))
-		return;
-	
-	initial_condition_PROFILE_OPERATIONAL1_is_Enabled();
-	var ISD_P_Test01 = curProfile_ISD_P_AID;
-	
-	initial_condition_PROFILE_OPERATIONAL3_is_Disabled();
-	var ISD_P_Test03 = curProfile_ISD_P_AID;
-
-	initial_condition_Remove_All_Notification();
-	
-	tracenamestr = "测试目的:eUICC不支持catBusy,有处于激活状态的Profile,主动式会话进行中(未给终端响应)时,执行eUICCMemoryReset";
-	curDis.TraceStart(sno++,tracenamestr);
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
-	Ini_powerOn_eUICC_LPAe_not_activate();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"SCP80,发送get status命令,使用MNO-SD的tar");
-
-	var sSendType = SendTypeByOTA.SMS;
-	KIC = MNO_SCP80_ENC_KEY;
-	KID = MNO_SCP80_AUTH_KEY;
-	KIK = MNO_SCP80_DATA_ENC_KEY;
-	sAPDU = "80F28002024F00";
-	SendMessageToCard_GP(sSendType,"91XX",0,"B20100","12210015",sAPDU);
-	HaveReEntry91XX = true;
-	var ss = obj.GetState();
-	ReEntry91XXLength = ss.substr(2,2);
-	
-	curDis.TestStepStart2(stno++,"SCP80,发送Fetch命令,检查por");
-	curLogicChannel = 0;
-	CardSendMessageToServer(sSendType,1,"0161XX","00");
-
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EuiccMemoryResetRequest,删除OperationalProfile;");
-	var euiMemoryResetRequest = new EuiccMemoryResetRequest();
-	euiMemoryResetRequest.resetOptions = "0780";
-	euiMemoryResetRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(euiMemoryResetRequest.hexData, "91", "00", "91XX");	
-	curStrHandle.CheckData("BF3403800105", respData, "EuiccMemoryResetResponse");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EuiccMemoryResetRequest,删除OperationalProfile;");
-	var euiMemoryResetRequest = new EuiccMemoryResetRequest();
-	euiMemoryResetRequest.resetOptions = "0780";
-	euiMemoryResetRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(euiMemoryResetRequest.hexData);
-	curStrHandle.CheckData("BF3403800100", respData, "EuiccMemoryResetResponse");
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"Fetch主动式命令refresh;");
-	
-	FetchStr = Fetch("","9000","");
-		
-	var CmdDetails = GetValueByTag("01",1);
-	var CmdQualifier = CmdDetails.substr(4,2);
-	CheckData("04",CmdQualifier,"the command qualifier is equal to ’04’ (UICC Reset)");
-	
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
-	Ini_powerOn_eUICC_LPAe_not_activate();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,LIST_NOTIF_ALL;");
-	
-	var resdata = LPAd_Transport_data_to_eUICC(listNotificationAllRequest);
-	
-	var listNotificationResponse = new ListNotificationResponse();
-	
-	listNotificationResponse.checkCardResDataFormat(resdata);
-	
-	Max_seqNumber_Of_Notification ++;
-	var arr1 = listNotificationResponse.notificationMetadataList.arrOfElement;
-	curStrHandle.CheckData("0", arr1.length.toString(), "Number of Notification");
-	
-	if (arr1.length == 1)
-	{
-		curStrHandle.CheckData(Max_seqNumber_Of_Notification.toString(), parseInt(arr1[0].seqNumber,16).toString(), "seqNumber");
-		curStrHandle.CheckData("0410", arr1[0].profileManagementOperation, "profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS1, arr1[0].notificationAddress, "notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, arr1[0].iccid, "iccid");
-	}
-	else if (arr1.length == 2)
-	{
-		curStrHandle.CheckData(Max_seqNumber_Of_Notification.toString(), parseInt(arr1[0].seqNumber,16).toString(), "seqNumber");
-		curStrHandle.CheckData("0640", arr1[0].profileManagementOperation, "profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS1, arr1[0].notificationAddress, "notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, arr1[0].iccid, "iccid");
-		
-		Max_seqNumber_Of_Notification ++;
-		curStrHandle.CheckData(Max_seqNumber_Of_Notification.toString(), parseInt(arr1[0].seqNumber,16).toString(), "seqNumber");
-		curStrHandle.CheckData("0410", arr1[0].profileManagementOperation, "profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS1, arr1[0].notificationAddress, "notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, arr1[0].iccid, "iccid");
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_RAT,期望返回值不变;");
-	
-	var respData = LPAd_Transport_data_to_eUICC(GetRatRequestHexStr);
-	curStrHandle.CheckData(R_DEFAULT_RAT, respData, "R_DEFAULT_RAT");
-	
-		
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_PROFILES_INFO_ALL,期望返回列表为空;");
-	
-	var respData = LPAd_Transport_data_to_eUICC(RetrieveProfileInfoAll);
-	curStrHandle.CheckData(ProfileInfoListResponse_empty, respData, "ProfileInfoListResponse");
-	
-	
-	RecoverCard();
+// Author: 卡思Cas智能体
+// Date: 20261004-143902
+// Function: (purpose 原文未由 SGP.23 该 TC 提供,corpus vacuum 登记)TC_eUICC_ES10c.eUICCMemoryReset,Test Sequence #01-#06 (Nominal: Reset OP without/with Enabled Profile / Reset Default SM-DP+ Address only / Reset All / catBusy not supported ×2),适用性 M (序列#01-#04) / C039 (序列#05、#06)。
+// Test points: IC1-IC1-K1-C1 ATR_present;IC1-IC1-K2-C2 FCP_Template;IC1-IC1-K2-C4 SW
+//   IC1-IC1-K3-C4 SW;IC1-IC1-K4-C4 final SW;IC2-IC2-K1-C4 SW;IC2-IC2-K1-C3 CHANNEL_NUMBER extracted
+//   IC2-IC2-K2-C4 SW;S3-C1 free non-volatile memory tag 82 present;S4-C1 SW;S4-C2 resetResult ok
+//   S5-C1 SW;S5-C2 profileInfoListOk empty;S6-C1 SW
+//   S6-C2 notificationMetadataList contains NOTIF_METADATA_DELETE1
+//   S7-C1 free non-volatile memory lower than step 7;S7-C2 free non-volatile memory tag 82 present
+//   S8-C1 SW;S8-C2 defaultDpAddress testsmdpplus1.example.com;S8-C2 rootDsAddress present
+//   IC9-IC1-K1-C1 ATR_present;IC9-IC1-K2-C2 FCP_Template;IC9-IC1-K2-C4 SW;IC9-IC1-K3-C4 SW
+//   IC9-IC1-K4-C4 final SW;IC10-IC2-K1-C4 SW;IC10-IC2-K1-C3 CHANNEL_NUMBER extracted
+//   IC10-IC2-K2-C4 SW;S11-C1 SW1 91;S11-C2 resetResult ok;S12-C1 proactive command envelope
+//   IC13-IC1-K1-C1 ATR_present;IC13-IC1-K2-C2 FCP_Template;IC13-IC1-K2-C4 SW;IC13-IC1-K3-C4 SW
+//   IC13-IC1-K4-C4 final SW;IC13-IC2-K1-C4 SW;IC13-IC2-K1-C3 CHANNEL_NUMBER extracted
+//   IC13-IC2-K2-C4 SW;S14-C1 SW;S14-C2 notificationMetadataList contains NOTIF_METADATA_DELETE1
+//   S15-C1 SW;S15-C2 PPRS_ALLOWED field-value oracle;S16-C1 SW;S16-C2 profileInfoListOk empty
+//   IC17-IC1-K1-C1 ATR_present;IC17-IC1-K2-C2 FCP_Template;IC17-IC1-K2-C4 SW;IC17-IC1-K3-C4 SW
+//   IC17-IC1-K4-C4 final SW;IC18-IC2-K1-C4 SW;IC18-IC2-K1-C3 CHANNEL_NUMBER extracted
+//   IC18-IC2-K2-C4 SW;S19-C1 SW;S19-C2 resetResult in {nothingToDelete, ok};S20-C1 SW
+//   S20-C2 contains PROFILE_INFO1_DISABLED;S20-C2 contains PROFILE_INFO3;S21-C1 SW
+//   S21-C2 defaultDpAddress absent;S21-C2 rootDsAddress testrootsmds.example.com
+//   IC22-IC1-K1-C1 ATR_present;IC22-IC1-K2-C2 FCP_Template;IC22-IC1-K2-C4 SW;IC22-IC1-K3-C4 SW
+//   IC22-IC1-K4-C4 final SW;IC23-IC2-K1-C4 SW;IC23-IC2-K1-C3 CHANNEL_NUMBER extracted
+//   IC23-IC2-K2-C4 SW;S24-C1 SW;S24-C2 resetResult ok;S25-C1 SW;S25-C2 profileInfoListOk empty
+//   S26-C1 SW;S26-C2 defaultDpAddress absent;IC27-IC1-K1-C1 ATR_present;IC27-IC1-K2-C2 FCP_Template
+//   IC27-IC1-K2-C4 SW;IC27-IC1-K3-C4 SW;IC27-IC1-K4-C4 final SW;IC28-IC2-K1-C4 SW
+//   IC28-IC2-K1-C3 CHANNEL_NUMBER extracted;IC28-IC2-K2-C4 SW;S29-C1 SW1 91;S31-C1 SW1 91
+//   S31-C2 resetResult ok;S32-C1 proactive command envelope;IC33-IC1-K1-C1 ATR_present
+//   IC33-IC1-K2-C2 FCP_Template;IC33-IC1-K2-C4 SW;IC33-IC1-K3-C4 SW;IC33-IC1-K4-C4 final SW
+//   IC33-IC2-K1-C4 SW;IC33-IC2-K1-C3 CHANNEL_NUMBER extracted;IC33-IC2-K2-C4 SW;S34-C1 SW
+//   S34-C2 notificationMetadataList contains NOTIF_METADATA_DELETE1;S35-C1 SW
+//   S35-C2 PPRS_ALLOWED field-value oracle;S36-C1 SW;S36-C2 profileInfoListOk empty
+//   IC37-IC1-K1-C1 ATR_present;IC37-IC1-K2-C2 FCP_Template;IC37-IC1-K2-C4 SW;IC37-IC1-K3-C4 SW
+//   IC37-IC1-K4-C4 final SW;IC38-IC2-K1-C4 SW;IC38-IC2-K1-C3 CHANNEL_NUMBER extracted
+//   IC38-IC2-K2-C4 SW;S39-C1 SW1 91;S41-C1 SW;S41-C2 resetResult ok;S42-C1 SW1 91
+//   S43-C1 proactive command envelope;IC44-IC1-K1-C1 ATR_present;IC44-IC1-K2-C2 FCP_Template
+//   IC44-IC1-K2-C4 SW;IC44-IC1-K3-C4 SW;IC44-IC1-K4-C4 final SW;IC44-IC2-K1-C4 SW
+//   IC44-IC2-K1-C3 CHANNEL_NUMBER extracted;IC44-IC2-K2-C4 SW;S45-C1 SW
+//   S45-C2 notificationMetadataList contains NOTIF_METADATA_DELETE1;S46-C1 SW
+//   S46-C2 PPRS_ALLOWED field-value oracle;S47-C1 SW;S47-C2 profileInfoListOk empty
+// 本函数由 CaseIR 4.2.24.2.1 编译生成(fullwave-blindgen-live-70-W1-laneA5,SGP.23 v1.16 × SGP.22 v2.7):字节权威=CaseIR,非誊录黄金脚本。
+// Value-free template: every data byte is injected from CaseIR fields; no scaffold globals (see docs/speconly/compile-symbol-migration.md).
+// 适用性 M (序列#01-#04) / C039 (序列#05、#06):编译期门,运行时由 harness 环境前置承担。
+function TC_eUICC_ES10c_eUICCMemoryReset_01_06_merged() {
+    var bind = curBind;
+    // GIC-1 卡态编排:PROFILE_OPERATIONAL1 已安装: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // GIC-2 Default SM-DP+ Address #TEST_DP_ADDRESS1 已设置到 ISD-R(testsmdpplus1.example.com,F_annexA_constants): declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // S1/S3/S4-IC PROF1 Disabled;PROFILE_OPERATIONAL3 已安装且 Disabled(#01/#03 另要求 Nickname=#NICKNAME3);#01 另要求 Pending Notifications List 为空: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // S2/S5-IC PROF1 Enabled;Pending Notifications List 为空: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // S6-IC PROF1 Enabled;PROF3 已安装且 Disabled;Pending Notifications List 为空: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+
+    // IC ref inline @E 步骤 1(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
+    var s48 = bind.resetAndAtr();
+    bind.checkData("IC1-IC1-K1-C1 ATR_present", "1", s48.atr_hex !== "" ? "1" : "0");
+
+    // IC ref inline @E 步骤 1(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
+    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
+    var s49 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+    bind.checkData("IC1-IC1-K2-C2 FCP_Template", "1", s49.resp.length > 0 ? "1" : "0");
+    bind.checkData("IC1-IC1-K2-C4 SW", "9000", s49.sw);
+
+    // IC ref inline @E 步骤 1(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+    var s50 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+    bind.checkData("IC1-IC1-K3-C4 SW", "9000", s50.sw);
+
+    // IC ref inline @E 步骤 1(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+    var steady51 = bind.runToSteadyState(function () {
+        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+    });
+    bind.checkData("IC1-IC1-K4-C4 final SW", "9000", steady51.final.sw);
+
+    // IC ref inline @E 步骤 2(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
+    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
+    var s52 = bind.manageChannelOpen("9000");
+    bind.checkData("IC2-IC2-K1-C4 SW", "9000", s52.sw);
+    bind.checkData("IC2-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s52.chan !== null ? "1" : "0");
+
+    // IC ref inline @E 步骤 2(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
+    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
+    var s53 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
+    // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
+    bind.checkData("IC2-IC2-K2-C4 SW", "9000", s53.sw);
+
+    // 步骤 3:MTD_STORE_DATA(tc_step)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla3 = s52.chan !== null ? (s52.chan <= 3 ? 128 + s52.chan : 188 + s52.chan).toString(16).toUpperCase() : null;
+    var s3 = bind.sendApdu(sdCla3, "E2", "91", "00", "BF2200", "00", "9000");
+    // geca-proc ES10b Info 响应面(R_EUICC_INFO2,SGP.22 §5.7.7/§5.7.8 结构机械转录;响应外层 tag = 请求 tag):绑定层结构步行 + 在场性断言。
+    var gw3 = BindGecaProc.parseGecaResponse(s3.resp, {outer: "BF22", required: ["81", "82", "83", "84", "85", "88", "A9", "AA", "04", "0C"], optional: ["86", "87"]});
+    var ext3 = BindEs10xSingleRequest.parseBerTlv(gw3.fields["84"] || "");
+    var freeVal3 = null; for (var fti3 = 0; fti3 < ext3.length; fti3++) { if (ext3[fti3].tag === "82") { freeVal3 = ext3[fti3].value; } }
+    bind.checkData("S3-C1 free non-volatile memory tag 82 present", "1", freeVal3 !== null ? "1" : "0");
+
+    // 步骤 4:MTD_STORE_DATA(tc_step;REQ: RQ57_163, RQ57_166, RQ57_169, RQ57_170, RQ33_010)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla4 = s52.chan !== null ? (s52.chan <= 3 ? 128 + s52.chan : 188 + s52.chan).toString(16).toUpperCase() : null;
+    var s4 = bind.sendApdu(sdCla4, "E2", "91", "00", "BF340482020780", "00", "9000");
+    bind.checkData("S4-C1 SW", "9000", s4.sw);
+    // es10x-proc-profile 响应面(TC_eUICC_ES10c.eUICCMemoryReset,SGP.22 §5.7.15 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var pw4 = BindEs10xProcProfile.walkChoiceList(s4.resp, {respTag: "BF34", okTag: "A0", errTag: "81"});
+    var r2w4 = BindGecaProc.parseGecaResponse(s4.resp, {outer: "BF34", required: ["02"]});
+    bind.checkData("S4-C2 resetResult ok", "00", (r2w4.ok && r2w4.fields["02"] === "00") ? "00" : (r2w4.fields["02"] || "absent"));
+
+    // 步骤 5:MTD_STORE_DATA(tc_step;REQ: RQ33_011, RQ33_008, RQ33_012)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla5 = s52.chan !== null ? (s52.chan <= 3 ? 128 + s52.chan : 188 + s52.chan).toString(16).toUpperCase() : null;
+    var s5 = bind.sendApdu(sdCla5, "E2", "91", "00", "BF2D00", "00", "9000");
+    bind.checkData("S5-C1 SW", "9000", s5.sw);
+    var r2p5 = BindEs10xProcProfile.walkChoiceList(s5.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+    bind.checkData("S5-C2 profileInfoListOk empty", "1", (r2p5.branch_tag === "A0" && r2p5.elements.length === 0) ? "1" : "0");
+
+    // 步骤 6:MTD_STORE_DATA(tc_step;REQ: RQ57_071, RQ57_071_1, RQ57_071_2, RQ57_072, RQ57_072_1, RQ57_072_2, RQ57_074, RQ57_167_1)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla6 = s52.chan !== null ? (s52.chan <= 3 ? 128 + s52.chan : 188 + s52.chan).toString(16).toUpperCase() : null;
+    var s6 = bind.sendApdu(sdCla6, "E2", "91", "00", "BF2804810204F0", "00", "9000");
+    bind.checkData("S6-C1 SW", "9000", s6.sw);
+    // Inline ASCII->hex helper (UTF8String expected values; values enter as
+    // ASCII literals traced to CaseIR check text / F_annexA_constants rows).
+    function __asciiHex(text) {
+        var out = "";
+        for (var i = 0; i < text.length; i++) {
+            var c = text.charCodeAt(i).toString(16).toUpperCase();
+            out += (c.length === 1 ? "0" + c : c);
+        }
+        return out;
+    }
+    var r2n6T = BindEs10xSingleRequest.parseBerTlv(s6.resp);
+    var r2n6Ok0 = r2n6T.length === 1 && r2n6T[0].tag === "BF28";
+    var r2n6B = r2n6Ok0 ? BindEs10xSingleRequest.parseBerTlv(r2n6T[0].value) : [];
+    var r2n6_brtag = r2n6B.length === 1 ? r2n6B[0].tag : "";
+    var r2n6_els = r2n6_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(r2n6B[0].value) : [];
+    var r2n6Has = false;
+    for (var r2n6i = 0; r2n6i < r2n6_els.length; r2n6i++) {
+        if (r2n6_els[r2n6i].tag !== "BF2F") { continue; }
+        var r2n6F = {};
+        var r2n6M = BindEs10xSingleRequest.parseBerTlv(r2n6_els[r2n6i].value);
+        for (var r2n6j = 0; r2n6j < r2n6M.length; r2n6j++) { r2n6F[r2n6M[r2n6j].tag] = r2n6M[r2n6j].value; }
+        if (r2n6F["5A"] === "989209012143658709F5" && r2n6F["0C"] === __asciiHex("testsmdpplus1.example.com")) { r2n6Has = true; break; }
+    }
+    bind.checkData("S6-C2 notificationMetadataList contains NOTIF_METADATA_DELETE1", "1", r2n6Has ? "1" : "0");
+
+    // 步骤 7:MTD_STORE_DATA(tc_step;REQ: RQ31_027, RQ31_028, RQ57_051, RQ57_052, RQ57_054, RQ24_020)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla7 = s52.chan !== null ? (s52.chan <= 3 ? 128 + s52.chan : 188 + s52.chan).toString(16).toUpperCase() : null;
+    var s7 = bind.sendApdu(sdCla7, "E2", "91", "00", "BF2200", "00", "9000");
+    // geca-proc ES10b Info 响应面(R_EUICC_INFO2,SGP.22 §5.7.7/§5.7.8 结构机械转录;响应外层 tag = 请求 tag):绑定层结构步行 + 在场性断言。
+    var gw7 = BindGecaProc.parseGecaResponse(s7.resp, {outer: "BF22", required: ["81", "82", "83", "84", "85", "88", "A9", "AA", "04", "0C"], optional: ["86", "87"]});
+    bind.checkData("S7-C1 free non-volatile memory lower than step 7", "1", (freeVal3 !== null && freeVal3 !== undefined && freeVal7 !== null && freeVal7 !== undefined && parseInt(freeVal3, 16) < parseInt(freeVal7, 16)) ? "1" : "0");
+    var ext7 = BindEs10xSingleRequest.parseBerTlv(gw7.fields["84"] || "");
+    var freeVal7 = null; for (var fti7 = 0; fti7 < ext7.length; fti7++) { if (ext7[fti7].tag === "82") { freeVal7 = ext7[fti7].value; } }
+    bind.checkData("S7-C2 free non-volatile memory tag 82 present", "1", freeVal7 !== null ? "1" : "0");
+
+    // 步骤 8:MTD_STORE_DATA(tc_step;REQ: RQ33_009)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla8 = s52.chan !== null ? (s52.chan <= 3 ? 128 + s52.chan : 188 + s52.chan).toString(16).toUpperCase() : null;
+    var s8 = bind.sendApdu(sdCla8, "E2", "91", "00", "BF3C00", "00", "9000");
+    bind.checkData("S8-C1 SW", "9000", s8.sw);
+    // Inline ASCII->hex helper (UTF8String expected values; values enter as
+    // ASCII literals traced to CaseIR check text / F_annexA_constants rows).
+    function __asciiHex(text) {
+        var out = "";
+        for (var i = 0; i < text.length; i++) {
+            var c = text.charCodeAt(i).toString(16).toUpperCase();
+            out += (c.length === 1 ? "0" + c : c);
+        }
+        return out;
+    }
+    var r2w8 = BindGecaProc.parseGecaResponse(s8.resp, {outer: "BF3C", required: []});
+    var r2c8 = r2w8.children;
+    var r2c08 = 0;
+    for (var r2ci8 = 0; r2ci8 < r2c8.length; r2ci8++) {
+        if (r2c8[r2ci8].tag === "80" || r2c8[r2ci8].tag === "81") { r2c08++; }
+    }
+    var r2v8 = __asciiHex("testsmdpplus1.example.com");
+    bind.checkData("S8-C2 defaultDpAddress testsmdpplus1.example.com", r2v8, (r2c08 >= 2 ? r2c8[0].value : "absent"));
+    bind.checkData("S8-C2 rootDsAddress present", "1", (r2c08 >= 1 ? "1" : "0"));
+
+    // IC ref inline @E 步骤 9(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
+    var s54 = bind.resetAndAtr();
+    bind.checkData("IC9-IC1-K1-C1 ATR_present", "1", s54.atr_hex !== "" ? "1" : "0");
+
+    // IC ref inline @E 步骤 9(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
+    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
+    var s55 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+    bind.checkData("IC9-IC1-K2-C2 FCP_Template", "1", s55.resp.length > 0 ? "1" : "0");
+    bind.checkData("IC9-IC1-K2-C4 SW", "9000", s55.sw);
+
+    // IC ref inline @E 步骤 9(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+    var s56 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+    bind.checkData("IC9-IC1-K3-C4 SW", "9000", s56.sw);
+
+    // IC ref inline @E 步骤 9(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+    var steady57 = bind.runToSteadyState(function () {
+        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+    });
+    bind.checkData("IC9-IC1-K4-C4 final SW", "9000", steady57.final.sw);
+
+    // IC ref inline @E 步骤 10(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
+    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
+    var s58 = bind.manageChannelOpen("9000");
+    bind.checkData("IC10-IC2-K1-C4 SW", "9000", s58.sw);
+    bind.checkData("IC10-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s58.chan !== null ? "1" : "0");
+
+    // IC ref inline @E 步骤 10(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
+    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
+    var s59 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
+    // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
+    bind.checkData("IC10-IC2-K2-C4 SW", "9000", s59.sw);
+
+    // 步骤 11:MTD_STORE_DATA(tc_step;REQ: RQ57_163, RQ57_166, RQ57_169, RQ57_170, RQ33_010)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla11 = s58.chan !== null ? (s58.chan <= 3 ? 128 + s58.chan : 188 + s58.chan).toString(16).toUpperCase() : null;
+    var s11 = bind.sendApdu(sdCla11, "E2", "91", "00", "BF340482020780", "00", "9000");
+    bind.checkData("S11-C1 SW1 91", "91", s11.sw.substring(0, 2));
+    // es10x-proc-profile 响应面(TC_eUICC_ES10c.eUICCMemoryReset,SGP.22 §5.7.15 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var pw11 = BindEs10xProcProfile.walkChoiceList(s11.resp, {respTag: "BF34", okTag: "A0", errTag: "81"});
+    var r2w11 = BindGecaProc.parseGecaResponse(s11.resp, {outer: "BF34", required: ["02"]});
+    bind.checkData("S11-C2 resetResult ok", "00", (r2w11.ok && r2w11.fields["02"] === "00") ? "00" : (r2w11.fields["02"] || "absent"));
+
+    // 步骤 12:FETCH 'XX'(序列#02 步2)(tc_step;REQ: RQ57_168)
+    // FETCH header literals follow the golden wire evidence 8012 (same
+    // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
+    // gives mechanism only). Le = pending length from the last 91XX
+    // (chain rule, binding-internal state).
+    var s12 = bind.fetchPending("80", "12", "00", "00", null);
+    bind.checkData("S12-C1 proactive command envelope", "1", (s12.resp.length >= 4 && s12.resp.substring(0, 2) === "D0") ? "1" : "0");
+    // S12-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
+    // S12:主动会话协议闭合(TS 102 223 §6.3:主动命令必须 TR 应答;
+    // UICC Reset 变体 E 表无 TR 行属编辑省略,golden U3 线证同构)。
+    var s12tr = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
+
+    // IC ref inline @E 步骤 13(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
+    var s60 = bind.resetAndAtr();
+    bind.checkData("IC13-IC1-K1-C1 ATR_present", "1", s60.atr_hex !== "" ? "1" : "0");
+
+    // IC ref inline @E 步骤 13(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
+    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
+    var s61 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+    bind.checkData("IC13-IC1-K2-C2 FCP_Template", "1", s61.resp.length > 0 ? "1" : "0");
+    bind.checkData("IC13-IC1-K2-C4 SW", "9000", s61.sw);
+
+    // IC ref inline @E 步骤 13(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+    var s62 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+    bind.checkData("IC13-IC1-K3-C4 SW", "9000", s62.sw);
+
+    // IC ref inline @E 步骤 13(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+    var steady63 = bind.runToSteadyState(function () {
+        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+    });
+    bind.checkData("IC13-IC1-K4-C4 final SW", "9000", steady63.final.sw);
+
+    // IC ref inline @E 步骤 13(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
+    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
+    var s64 = bind.manageChannelOpen("9000");
+    bind.checkData("IC13-IC2-K1-C4 SW", "9000", s64.sw);
+    bind.checkData("IC13-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s64.chan !== null ? "1" : "0");
+
+    // IC ref inline @E 步骤 13(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
+    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
+    var s65 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
+    // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
+    bind.checkData("IC13-IC2-K2-C4 SW", "9000", s65.sw);
+
+    // 步骤 14:MTD_STORE_DATA(tc_step;REQ: RQ57_071, RQ57_071_1, RQ57_071_2, RQ57_072, RQ57_072_1, RQ57_072_2, RQ57_074, RQ57_167_1, RQ35_006)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla14 = s64.chan !== null ? (s64.chan <= 3 ? 128 + s64.chan : 188 + s64.chan).toString(16).toUpperCase() : null;
+    var s14 = bind.sendApdu(sdCla14, "E2", "91", "00", "BF2804810204F0", "00", "9000");
+    bind.checkData("S14-C1 SW", "9000", s14.sw);
+    // Inline ASCII->hex helper (UTF8String expected values; values enter as
+    // ASCII literals traced to CaseIR check text / F_annexA_constants rows).
+    function __asciiHex(text) {
+        var out = "";
+        for (var i = 0; i < text.length; i++) {
+            var c = text.charCodeAt(i).toString(16).toUpperCase();
+            out += (c.length === 1 ? "0" + c : c);
+        }
+        return out;
+    }
+    var r2n14T = BindEs10xSingleRequest.parseBerTlv(s14.resp);
+    var r2n14Ok0 = r2n14T.length === 1 && r2n14T[0].tag === "BF28";
+    var r2n14B = r2n14Ok0 ? BindEs10xSingleRequest.parseBerTlv(r2n14T[0].value) : [];
+    var r2n14_brtag = r2n14B.length === 1 ? r2n14B[0].tag : "";
+    var r2n14_els = r2n14_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(r2n14B[0].value) : [];
+    var r2n14Has = false;
+    for (var r2n14i = 0; r2n14i < r2n14_els.length; r2n14i++) {
+        if (r2n14_els[r2n14i].tag !== "BF2F") { continue; }
+        var r2n14F = {};
+        var r2n14M = BindEs10xSingleRequest.parseBerTlv(r2n14_els[r2n14i].value);
+        for (var r2n14j = 0; r2n14j < r2n14M.length; r2n14j++) { r2n14F[r2n14M[r2n14j].tag] = r2n14M[r2n14j].value; }
+        if (r2n14F["5A"] === "989209012143658709F5" && r2n14F["0C"] === __asciiHex("testsmdpplus1.example.com")) { r2n14Has = true; break; }
+    }
+    bind.checkData("S14-C2 notificationMetadataList contains NOTIF_METADATA_DELETE1", "1", r2n14Has ? "1" : "0");
+
+    // 步骤 15:MTD_STORE_DATA(tc_step;REQ: RQ29_005, RQ57_179, RQ57_180, RQ57_181, RQ57_182, RQ57_184)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla15 = s64.chan !== null ? (s64.chan <= 3 ? 128 + s64.chan : 188 + s64.chan).toString(16).toUpperCase() : null;
+    var s15 = bind.sendApdu(sdCla15, "E2", "91", "00", "BF4300", "00", "9000");
+    bind.checkData("S15-C1 SW", "9000", s15.sw);
+    // grat ES10b GetRAT 响应面(外层 BF43,S22_tag_table Table 66 + I_annexD3_es10x:179/249 机械推导;PPAR 内部 DER 定位 = §5.7.22 模块语料真空):
+    var rgw15 = BindGecaProc.parseGecaResponse(s15.resp, {outer: "BF43", required: [], optional: []});
+    var rrat15 = (rgw15.children.length === 1) ? BindEs10xSingleRequest.parseBerTlv(rgw15.children[0].value) : [];
+    // S15-C2: PPRS_ALLOWED 字段值(pprIds/allowedOperators/pprFlags)DER 定位 oracle 缺席——SGP.22 §5.7.22 ASN.1
+    // 模块未入包、tag 表仅给 BF43 外层——发射 fail-closed 恒断言诚实面(如实计错,不伪造通过)。
+    bind.checkData("S15-C2 PPRS_ALLOWED field-value oracle", "ppar_member_tag_oracle_declared", "oracle_absent_sgp22_5_7_22_module_vacuum");
+
+    // 步骤 16:MTD_STORE_DATA(tc_step;REQ: RQ33_011, RQ33_008, RQ33_012)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla16 = s64.chan !== null ? (s64.chan <= 3 ? 128 + s64.chan : 188 + s64.chan).toString(16).toUpperCase() : null;
+    var s16 = bind.sendApdu(sdCla16, "E2", "91", "00", "BF2D00", "00", "9000");
+    bind.checkData("S16-C1 SW", "9000", s16.sw);
+    var r2p16 = BindEs10xProcProfile.walkChoiceList(s16.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+    bind.checkData("S16-C2 profileInfoListOk empty", "1", (r2p16.branch_tag === "A0" && r2p16.elements.length === 0) ? "1" : "0");
+
+    // IC ref inline @E 步骤 17(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
+    var s66 = bind.resetAndAtr();
+    bind.checkData("IC17-IC1-K1-C1 ATR_present", "1", s66.atr_hex !== "" ? "1" : "0");
+
+    // IC ref inline @E 步骤 17(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
+    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
+    var s67 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+    bind.checkData("IC17-IC1-K2-C2 FCP_Template", "1", s67.resp.length > 0 ? "1" : "0");
+    bind.checkData("IC17-IC1-K2-C4 SW", "9000", s67.sw);
+
+    // IC ref inline @E 步骤 17(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+    var s68 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+    bind.checkData("IC17-IC1-K3-C4 SW", "9000", s68.sw);
+
+    // IC ref inline @E 步骤 17(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+    var steady69 = bind.runToSteadyState(function () {
+        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+    });
+    bind.checkData("IC17-IC1-K4-C4 final SW", "9000", steady69.final.sw);
+
+    // IC ref inline @E 步骤 18(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
+    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
+    var s70 = bind.manageChannelOpen("9000");
+    bind.checkData("IC18-IC2-K1-C4 SW", "9000", s70.sw);
+    bind.checkData("IC18-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s70.chan !== null ? "1" : "0");
+
+    // IC ref inline @E 步骤 18(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
+    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
+    var s71 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
+    // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
+    bind.checkData("IC18-IC2-K2-C4 SW", "9000", s71.sw);
+
+    // 步骤 19:MTD_STORE_DATA(tc_step;REQ: RQ57_163, RQ57_167, RQ57_169, RQ57_170, RQ33_010)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla19 = s70.chan !== null ? (s70.chan <= 3 ? 128 + s70.chan : 188 + s70.chan).toString(16).toUpperCase() : null;
+    var s19 = bind.sendApdu(sdCla19, "E2", "91", "00", "BF340482020520", "00", "9000");
+    bind.checkData("S19-C1 SW", "9000", s19.sw);
+    // es10x-proc-profile 响应面(TC_eUICC_ES10c.eUICCMemoryReset,SGP.22 §5.7.15 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var pw19 = BindEs10xProcProfile.walkChoiceList(s19.resp, {respTag: "BF34", okTag: "A0", errTag: "81"});
+    var r2w19 = BindGecaProc.parseGecaResponse(s19.resp, {outer: "BF34", required: ["02"]});
+    var r2w19Set = ["01", "00"];
+    var r2w19Hit = false;
+    for (var r2w19I = 0; r2w19.ok && r2w19I < r2w19Set.length; r2w19I++) { if (r2w19Set[r2w19I] === r2w19.fields["02"]) { r2w19Hit = true; } }
+    bind.checkData("S19-C2 resetResult in {nothingToDelete, ok}", "1", (r2w19.ok && r2w19Hit) ? "1" : "0");
+
+    // 步骤 20:MTD_STORE_DATA(tc_step)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla20 = s70.chan !== null ? (s70.chan <= 3 ? 128 + s70.chan : 188 + s70.chan).toString(16).toUpperCase() : null;
+    var s20 = bind.sendApdu(sdCla20, "E2", "91", "00", "BF2D00", "00", "9000");
+    bind.checkData("S20-C1 SW", "9000", s20.sw);
+    var r2p20 = BindEs10xProcProfile.walkChoiceList(s20.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+    var r2has20_0 = false;
+    for (var r2i20_0 = 0; r2i20_0 < r2p20.elements.length; r2i20_0++) {
+        var f = r2p20.elements[r2i20_0].fields;
+        if (f["5A"] === "989209012143658709F5" && f["9F70"] === "00") { r2has20_0 = true; break; }
+    }
+    bind.checkData("S20-C2 contains PROFILE_INFO1_DISABLED", "1", (r2p20.branch_tag === "A0" && r2has20_0) ? "1" : "0");
+    var r2has20_1 = false;
+    for (var r2i20_1 = 0; r2i20_1 < r2p20.elements.length; r2i20_1++) {
+        var f = r2p20.elements[r2i20_1].fields;
+        if (f["5A"] === "989209014365870921F5" && f["9F70"] === "00") { r2has20_1 = true; break; }
+    }
+    bind.checkData("S20-C2 contains PROFILE_INFO3", "1", (r2p20.branch_tag === "A0" && r2has20_1) ? "1" : "0");
+
+    // 步骤 21:MTD_STORE_DATA(tc_step;REQ: RQ33_008)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla21 = s70.chan !== null ? (s70.chan <= 3 ? 128 + s70.chan : 188 + s70.chan).toString(16).toUpperCase() : null;
+    var s21 = bind.sendApdu(sdCla21, "E2", "91", "00", "BF3C00", "00", "9000");
+    bind.checkData("S21-C1 SW", "9000", s21.sw);
+    // Inline ASCII->hex helper (UTF8String expected values; values enter as
+    // ASCII literals traced to CaseIR check text / F_annexA_constants rows).
+    function __asciiHex(text) {
+        var out = "";
+        for (var i = 0; i < text.length; i++) {
+            var c = text.charCodeAt(i).toString(16).toUpperCase();
+            out += (c.length === 1 ? "0" + c : c);
+        }
+        return out;
+    }
+    var r2w21 = BindGecaProc.parseGecaResponse(s21.resp, {outer: "BF3C", required: []});
+    var r2c21 = r2w21.children;
+    var r2c021 = 0;
+    for (var r2ci21 = 0; r2ci21 < r2c21.length; r2ci21++) {
+        if (r2c21[r2ci21].tag === "80" || r2c21[r2ci21].tag === "81") { r2c021++; }
+    }
+    bind.checkData("S21-C2 defaultDpAddress absent", "absent", (r2c021 <= 1 ? "absent" : "present:" + r2c21[0].value));
+    var r2v21 = __asciiHex("testrootsmds.example.com");
+    bind.checkData("S21-C2 rootDsAddress testrootsmds.example.com", r2v21, (r2c021 >= 1 ? r2c21[r2c21.length - 1].value : "absent"));
+
+    // IC ref inline @E 步骤 22(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
+    var s72 = bind.resetAndAtr();
+    bind.checkData("IC22-IC1-K1-C1 ATR_present", "1", s72.atr_hex !== "" ? "1" : "0");
+
+    // IC ref inline @E 步骤 22(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
+    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
+    var s73 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+    bind.checkData("IC22-IC1-K2-C2 FCP_Template", "1", s73.resp.length > 0 ? "1" : "0");
+    bind.checkData("IC22-IC1-K2-C4 SW", "9000", s73.sw);
+
+    // IC ref inline @E 步骤 22(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+    var s74 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+    bind.checkData("IC22-IC1-K3-C4 SW", "9000", s74.sw);
+
+    // IC ref inline @E 步骤 22(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+    var steady75 = bind.runToSteadyState(function () {
+        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+    });
+    bind.checkData("IC22-IC1-K4-C4 final SW", "9000", steady75.final.sw);
+
+    // IC ref inline @E 步骤 23(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
+    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
+    var s76 = bind.manageChannelOpen("9000");
+    bind.checkData("IC23-IC2-K1-C4 SW", "9000", s76.sw);
+    bind.checkData("IC23-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s76.chan !== null ? "1" : "0");
+
+    // IC ref inline @E 步骤 23(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
+    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
+    var s77 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
+    // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
+    bind.checkData("IC23-IC2-K2-C4 SW", "9000", s77.sw);
+
+    // 步骤 24:MTD_STORE_DATA(tc_step;REQ: RQ57_163, RQ57_166, RQ57_167, RQ57_169, RQ57_170, RQ33_010)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla24 = s76.chan !== null ? (s76.chan <= 3 ? 128 + s76.chan : 188 + s76.chan).toString(16).toUpperCase() : null;
+    var s24 = bind.sendApdu(sdCla24, "E2", "91", "00", "BF3404820205A0", "00", "9000");
+    bind.checkData("S24-C1 SW", "9000", s24.sw);
+    // es10x-proc-profile 响应面(TC_eUICC_ES10c.eUICCMemoryReset,SGP.22 §5.7.15 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var pw24 = BindEs10xProcProfile.walkChoiceList(s24.resp, {respTag: "BF34", okTag: "A0", errTag: "81"});
+    var r2w24 = BindGecaProc.parseGecaResponse(s24.resp, {outer: "BF34", required: ["02"]});
+    bind.checkData("S24-C2 resetResult ok", "00", (r2w24.ok && r2w24.fields["02"] === "00") ? "00" : (r2w24.fields["02"] || "absent"));
+
+    // 步骤 25:MTD_STORE_DATA(tc_step;REQ: RQ33_011, RQ33_008, RQ33_012)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla25 = s76.chan !== null ? (s76.chan <= 3 ? 128 + s76.chan : 188 + s76.chan).toString(16).toUpperCase() : null;
+    var s25 = bind.sendApdu(sdCla25, "E2", "91", "00", "BF2D00", "00", "9000");
+    bind.checkData("S25-C1 SW", "9000", s25.sw);
+    var r2p25 = BindEs10xProcProfile.walkChoiceList(s25.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+    bind.checkData("S25-C2 profileInfoListOk empty", "1", (r2p25.branch_tag === "A0" && r2p25.elements.length === 0) ? "1" : "0");
+
+    // 步骤 26:MTD_STORE_DATA(tc_step;REQ: RQ33_008)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla26 = s76.chan !== null ? (s76.chan <= 3 ? 128 + s76.chan : 188 + s76.chan).toString(16).toUpperCase() : null;
+    var s26 = bind.sendApdu(sdCla26, "E2", "91", "00", "BF3C00", "00", "9000");
+    bind.checkData("S26-C1 SW", "9000", s26.sw);
+    // Inline ASCII->hex helper (UTF8String expected values; values enter as
+    // ASCII literals traced to CaseIR check text / F_annexA_constants rows).
+    function __asciiHex(text) {
+        var out = "";
+        for (var i = 0; i < text.length; i++) {
+            var c = text.charCodeAt(i).toString(16).toUpperCase();
+            out += (c.length === 1 ? "0" + c : c);
+        }
+        return out;
+    }
+    var r2w26 = BindGecaProc.parseGecaResponse(s26.resp, {outer: "BF3C", required: []});
+    var r2c26 = r2w26.children;
+    var r2c026 = 0;
+    for (var r2ci26 = 0; r2ci26 < r2c26.length; r2ci26++) {
+        if (r2c26[r2ci26].tag === "80" || r2c26[r2ci26].tag === "81") { r2c026++; }
+    }
+    bind.checkData("S26-C2 defaultDpAddress absent", "absent", (r2c026 <= 1 ? "absent" : "present:" + r2c26[0].value));
+
+    // IC ref inline @E 步骤 27(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
+    var s78 = bind.resetAndAtr();
+    bind.checkData("IC27-IC1-K1-C1 ATR_present", "1", s78.atr_hex !== "" ? "1" : "0");
+
+    // IC ref inline @E 步骤 27(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
+    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
+    var s79 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+    bind.checkData("IC27-IC1-K2-C2 FCP_Template", "1", s79.resp.length > 0 ? "1" : "0");
+    bind.checkData("IC27-IC1-K2-C4 SW", "9000", s79.sw);
+
+    // IC ref inline @E 步骤 27(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+    var s80 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+    bind.checkData("IC27-IC1-K3-C4 SW", "9000", s80.sw);
+
+    // IC ref inline @E 步骤 27(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+    var steady81 = bind.runToSteadyState(function () {
+        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+    });
+    bind.checkData("IC27-IC1-K4-C4 final SW", "9000", steady81.final.sw);
+
+    // IC ref inline @E 步骤 28(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
+    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
+    var s82 = bind.manageChannelOpen("9000");
+    bind.checkData("IC28-IC2-K1-C4 SW", "9000", s82.sw);
+    bind.checkData("IC28-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s82.chan !== null ? "1" : "0");
+
+    // IC ref inline @E 步骤 28(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
+    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
+    var s83 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
+    // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
+    bind.checkData("IC28-IC2-K2-C4 SW", "9000", s83.sw);
+
+    // 步骤 29:IC3: MTD_SEND_SMS_PP(tc_step)
+    // MTD_SEND_SMS_PP ENVELOPE (H Annex C.1 表1238 Details: 80 C2 00 00 <L>): SCP80-packed SMS-PP body is runtime-domain
+    // (<MNO_SCP80_COUNTER>/<CC>/<C_APDUS_SCRIPT>) — no bytes fabricated; the embedded STORE DATA
+    // script executes via the proactive FETCH / TERMINAL RESPONSE chain, not in this response.
+    var s29 = bind.sendApdu("80", "C2", "00", "00", null, null, null);
+    bind.checkData("S29-C1 SW1 91", "91", s29.sw.substring(0, 2));
+
+    // 步骤 30:IC4: Do not send FETCH command(序列#05:保持 proactive session 挂起)(tc_step)
+    // FETCH header literals follow the golden wire evidence 8012 (same
+    // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
+    // gives mechanism only). Le = pending length from the last 91XX
+    // (chain rule, binding-internal state).
+    var s30 = bind.fetchPending("80", "12", "00", "00", null);
+    // S30:主动会话协议闭合(TS 102 223 §6.3:主动命令必须 TR 应答;
+    // UICC Reset 变体 E 表无 TR 行属编辑省略,golden U3 线证同构)。
+    var s30tr = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
+
+    // 步骤 31:MTD_STORE_DATA(tc_step;REQ: RQ33_012)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla31 = s82.chan !== null ? (s82.chan <= 3 ? 128 + s82.chan : 188 + s82.chan).toString(16).toUpperCase() : null;
+    var s31 = bind.sendApdu(sdCla31, "E2", "91", "00", "BF340482020780", "00", "9000");
+    bind.checkData("S31-C1 SW1 91", "91", s31.sw.substring(0, 2));
+    // es10x-proc-profile 响应面(TC_eUICC_ES10c.eUICCMemoryReset,SGP.22 §5.7.15 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var pw31 = BindEs10xProcProfile.walkChoiceList(s31.resp, {respTag: "BF34", okTag: "A0", errTag: "81"});
+    var r2w31 = BindGecaProc.parseGecaResponse(s31.resp, {outer: "BF34", required: ["02"]});
+    bind.checkData("S31-C2 resetResult ok", "00", (r2w31.ok && r2w31.fields["02"] === "00") ? "00" : (r2w31.fields["02"] || "absent"));
+
+    // 步骤 32:FETCH 'YY'(序列#05 步2)(tc_step)
+    // FETCH header literals follow the golden wire evidence 8012 (same
+    // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
+    // gives mechanism only). Le = pending length from the last 91XX
+    // (chain rule, binding-internal state).
+    var s32 = bind.fetchPending("80", "12", "00", "00", null);
+    bind.checkData("S32-C1 proactive command envelope", "1", (s32.resp.length >= 4 && s32.resp.substring(0, 2) === "D0") ? "1" : "0");
+    // S32-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
+    // S32:主动会话协议闭合(TS 102 223 §6.3:主动命令必须 TR 应答;
+    // UICC Reset 变体 E 表无 TR 行属编辑省略,golden U3 线证同构)。
+    var s32tr = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
+
+    // IC ref inline @E 步骤 33(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
+    var s84 = bind.resetAndAtr();
+    bind.checkData("IC33-IC1-K1-C1 ATR_present", "1", s84.atr_hex !== "" ? "1" : "0");
+
+    // IC ref inline @E 步骤 33(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
+    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
+    var s85 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+    bind.checkData("IC33-IC1-K2-C2 FCP_Template", "1", s85.resp.length > 0 ? "1" : "0");
+    bind.checkData("IC33-IC1-K2-C4 SW", "9000", s85.sw);
+
+    // IC ref inline @E 步骤 33(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+    var s86 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+    bind.checkData("IC33-IC1-K3-C4 SW", "9000", s86.sw);
+
+    // IC ref inline @E 步骤 33(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+    var steady87 = bind.runToSteadyState(function () {
+        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+    });
+    bind.checkData("IC33-IC1-K4-C4 final SW", "9000", steady87.final.sw);
+
+    // IC ref inline @E 步骤 33(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
+    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
+    var s88 = bind.manageChannelOpen("9000");
+    bind.checkData("IC33-IC2-K1-C4 SW", "9000", s88.sw);
+    bind.checkData("IC33-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s88.chan !== null ? "1" : "0");
+
+    // IC ref inline @E 步骤 33(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
+    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
+    var s89 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
+    // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
+    bind.checkData("IC33-IC2-K2-C4 SW", "9000", s89.sw);
+
+    // 步骤 34:MTD_STORE_DATA(tc_step)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla34 = s88.chan !== null ? (s88.chan <= 3 ? 128 + s88.chan : 188 + s88.chan).toString(16).toUpperCase() : null;
+    var s34 = bind.sendApdu(sdCla34, "E2", "91", "00", "BF2804810204F0", "00", "9000");
+    bind.checkData("S34-C1 SW", "9000", s34.sw);
+    // Inline ASCII->hex helper (UTF8String expected values; values enter as
+    // ASCII literals traced to CaseIR check text / F_annexA_constants rows).
+    function __asciiHex(text) {
+        var out = "";
+        for (var i = 0; i < text.length; i++) {
+            var c = text.charCodeAt(i).toString(16).toUpperCase();
+            out += (c.length === 1 ? "0" + c : c);
+        }
+        return out;
+    }
+    var r2n34T = BindEs10xSingleRequest.parseBerTlv(s34.resp);
+    var r2n34Ok0 = r2n34T.length === 1 && r2n34T[0].tag === "BF28";
+    var r2n34B = r2n34Ok0 ? BindEs10xSingleRequest.parseBerTlv(r2n34T[0].value) : [];
+    var r2n34_brtag = r2n34B.length === 1 ? r2n34B[0].tag : "";
+    var r2n34_els = r2n34_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(r2n34B[0].value) : [];
+    var r2n34Has = false;
+    for (var r2n34i = 0; r2n34i < r2n34_els.length; r2n34i++) {
+        if (r2n34_els[r2n34i].tag !== "BF2F") { continue; }
+        var r2n34F = {};
+        var r2n34M = BindEs10xSingleRequest.parseBerTlv(r2n34_els[r2n34i].value);
+        for (var r2n34j = 0; r2n34j < r2n34M.length; r2n34j++) { r2n34F[r2n34M[r2n34j].tag] = r2n34M[r2n34j].value; }
+        if (r2n34F["5A"] === "989209012143658709F5" && r2n34F["0C"] === __asciiHex("testsmdpplus1.example.com")) { r2n34Has = true; break; }
+    }
+    bind.checkData("S34-C2 notificationMetadataList contains NOTIF_METADATA_DELETE1", "1", r2n34Has ? "1" : "0");
+
+    // 步骤 35:MTD_STORE_DATA(tc_step)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla35 = s88.chan !== null ? (s88.chan <= 3 ? 128 + s88.chan : 188 + s88.chan).toString(16).toUpperCase() : null;
+    var s35 = bind.sendApdu(sdCla35, "E2", "91", "00", "BF4300", "00", "9000");
+    bind.checkData("S35-C1 SW", "9000", s35.sw);
+    // grat ES10b GetRAT 响应面(外层 BF43,S22_tag_table Table 66 + I_annexD3_es10x:179/249 机械推导;PPAR 内部 DER 定位 = §5.7.22 模块语料真空):
+    var rgw35 = BindGecaProc.parseGecaResponse(s35.resp, {outer: "BF43", required: [], optional: []});
+    var rrat35 = (rgw35.children.length === 1) ? BindEs10xSingleRequest.parseBerTlv(rgw35.children[0].value) : [];
+    // S35-C2: PPRS_ALLOWED 字段值(pprIds/allowedOperators/pprFlags)DER 定位 oracle 缺席——SGP.22 §5.7.22 ASN.1
+    // 模块未入包、tag 表仅给 BF43 外层——发射 fail-closed 恒断言诚实面(如实计错,不伪造通过)。
+    bind.checkData("S35-C2 PPRS_ALLOWED field-value oracle", "ppar_member_tag_oracle_declared", "oracle_absent_sgp22_5_7_22_module_vacuum");
+
+    // 步骤 36:MTD_STORE_DATA(tc_step;REQ: RQ33_012)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla36 = s88.chan !== null ? (s88.chan <= 3 ? 128 + s88.chan : 188 + s88.chan).toString(16).toUpperCase() : null;
+    var s36 = bind.sendApdu(sdCla36, "E2", "91", "00", "BF2D00", "00", "9000");
+    bind.checkData("S36-C1 SW", "9000", s36.sw);
+    var r2p36 = BindEs10xProcProfile.walkChoiceList(s36.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+    bind.checkData("S36-C2 profileInfoListOk empty", "1", (r2p36.branch_tag === "A0" && r2p36.elements.length === 0) ? "1" : "0");
+
+    // IC ref inline @E 步骤 37(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
+    var s90 = bind.resetAndAtr();
+    bind.checkData("IC37-IC1-K1-C1 ATR_present", "1", s90.atr_hex !== "" ? "1" : "0");
+
+    // IC ref inline @E 步骤 37(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
+    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
+    var s91 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+    bind.checkData("IC37-IC1-K2-C2 FCP_Template", "1", s91.resp.length > 0 ? "1" : "0");
+    bind.checkData("IC37-IC1-K2-C4 SW", "9000", s91.sw);
+
+    // IC ref inline @E 步骤 37(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+    var s92 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+    bind.checkData("IC37-IC1-K3-C4 SW", "9000", s92.sw);
+
+    // IC ref inline @E 步骤 37(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+    var steady93 = bind.runToSteadyState(function () {
+        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+    });
+    bind.checkData("IC37-IC1-K4-C4 final SW", "9000", steady93.final.sw);
+
+    // IC ref inline @E 步骤 38(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
+    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
+    var s94 = bind.manageChannelOpen("9000");
+    bind.checkData("IC38-IC2-K1-C4 SW", "9000", s94.sw);
+    bind.checkData("IC38-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s94.chan !== null ? "1" : "0");
+
+    // IC ref inline @E 步骤 38(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
+    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
+    var s95 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
+    // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
+    bind.checkData("IC38-IC2-K2-C4 SW", "9000", s95.sw);
+
+    // 步骤 39:IC3: MTD_SEND_SMS_PP(tc_step)
+    // MTD_SEND_SMS_PP ENVELOPE (H Annex C.1 表1238 Details: 80 C2 00 00 <L>): SCP80-packed SMS-PP body is runtime-domain
+    // (<MNO_SCP80_COUNTER>/<CC>/<C_APDUS_SCRIPT>) — no bytes fabricated; the embedded STORE DATA
+    // script executes via the proactive FETCH / TERMINAL RESPONSE chain, not in this response.
+    var s39 = bind.sendApdu("80", "C2", "00", "00", null, null, null);
+    bind.checkData("S39-C1 SW1 91", "91", s39.sw.substring(0, 2));
+
+    // 步骤 40:FETCH 'XX'(序列#06 步1:取回 proactive 命令,POR 待回)(tc_step)
+    // FETCH header literals follow the golden wire evidence 8012 (same
+    // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
+    // gives mechanism only). Le = pending length from the last 91XX
+    // (chain rule, binding-internal state).
+    var s40 = bind.fetchPending("80", "12", "00", "00", null);
+    // S40:主动会话协议闭合(TS 102 223 §6.3:主动命令必须 TR 应答;
+    // UICC Reset 变体 E 表无 TR 行属编辑省略,golden U3 线证同构)。
+    var s40tr = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
+    // S40-C1: binding:fetch_sms_por_runtime_parse(MTD_CHECK_SMS_POR;H-annexC1) (check_attestation)
+
+    // 步骤 41:MTD_STORE_DATA(tc_step;REQ: RQ33_012)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla41 = s94.chan !== null ? (s94.chan <= 3 ? 128 + s94.chan : 188 + s94.chan).toString(16).toUpperCase() : null;
+    var s41 = bind.sendApdu(sdCla41, "E2", "91", "00", "BF340482020780", "00", "9000");
+    bind.checkData("S41-C1 SW", "9000", s41.sw);
+    // es10x-proc-profile 响应面(TC_eUICC_ES10c.eUICCMemoryReset,SGP.22 §5.7.15 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var pw41 = BindEs10xProcProfile.walkChoiceList(s41.resp, {respTag: "BF34", okTag: "A0", errTag: "81"});
+    var r2w41 = BindGecaProc.parseGecaResponse(s41.resp, {outer: "BF34", required: ["02"]});
+    bind.checkData("S41-C2 resetResult ok", "00", (r2w41.ok && r2w41.fields["02"] === "00") ? "00" : (r2w41.fields["02"] || "absent"));
+
+    // 步骤 42:TERMINAL RESPONSE(序列#06 步3)(tc_step)
+    // TERMINAL RESPONSE data is dynamically built by the binding from the
+    // last FETCHed proactive command (D 2.2.2; buildTrData) - never static.
+    // Header literals follow the golden wire evidence 8014.
+    var s42 = bind.terminalResponseForPending("80", "14", "00", "00", null);
+    bind.checkData("S42-C1 SW1 91", "91", s42.sw.substring(0, 2));
+
+    // 步骤 43:FETCH 'YY'(序列#06 步4)(tc_step)
+    // FETCH header literals follow the golden wire evidence 8012 (same
+    // anchor as runToSteadyState; J Annex D.4 has no FETCH row, D 2.2.2
+    // gives mechanism only). Le = pending length from the last 91XX
+    // (chain rule, binding-internal state).
+    var s43 = bind.fetchPending("80", "12", "00", "00", null);
+    bind.checkData("S43-C1 proactive command envelope", "1", (s43.resp.length >= 4 && s43.resp.substring(0, 2) === "D0") ? "1" : "0");
+    // S43-C1: REFRESH type/mode bytes are not corpus-fixed (envelope face only; per-mode bytes absent from input).
+    // S43:主动会话协议闭合(TS 102 223 §6.3:主动命令必须 TR 应答;
+    // UICC Reset 变体 E 表无 TR 行属编辑省略,golden U3 线证同构)。
+    var s43tr = bind.terminalResponseForPending("80", "14", "00", "00", "9000");
+
+    // IC ref inline @E 步骤 44(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
+    var s96 = bind.resetAndAtr();
+    bind.checkData("IC44-IC1-K1-C1 ATR_present", "1", s96.atr_hex !== "" ? "1" : "0");
+
+    // IC ref inline @E 步骤 44(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
+    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
+    var s97 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+    bind.checkData("IC44-IC1-K2-C2 FCP_Template", "1", s97.resp.length > 0 ? "1" : "0");
+    bind.checkData("IC44-IC1-K2-C4 SW", "9000", s97.sw);
+
+    // IC ref inline @E 步骤 44(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+    var s98 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+    bind.checkData("IC44-IC1-K3-C4 SW", "9000", s98.sw);
+
+    // IC ref inline @E 步骤 44(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+    var steady99 = bind.runToSteadyState(function () {
+        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+    });
+    bind.checkData("IC44-IC1-K4-C4 final SW", "9000", steady99.final.sw);
+
+    // IC ref inline @E 步骤 44(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
+    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
+    var s100 = bind.manageChannelOpen("9000");
+    bind.checkData("IC44-IC2-K1-C4 SW", "9000", s100.sw);
+    bind.checkData("IC44-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s100.chan !== null ? "1" : "0");
+
+    // IC ref inline @E 步骤 44(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
+    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
+    var s101 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
+    // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
+    bind.checkData("IC44-IC2-K2-C4 SW", "9000", s101.sw);
+
+    // 步骤 45:MTD_STORE_DATA(tc_step)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla45 = s100.chan !== null ? (s100.chan <= 3 ? 128 + s100.chan : 188 + s100.chan).toString(16).toUpperCase() : null;
+    var s45 = bind.sendApdu(sdCla45, "E2", "91", "00", "BF2804810204F0", "00", "9000");
+    bind.checkData("S45-C1 SW", "9000", s45.sw);
+    // Inline ASCII->hex helper (UTF8String expected values; values enter as
+    // ASCII literals traced to CaseIR check text / F_annexA_constants rows).
+    function __asciiHex(text) {
+        var out = "";
+        for (var i = 0; i < text.length; i++) {
+            var c = text.charCodeAt(i).toString(16).toUpperCase();
+            out += (c.length === 1 ? "0" + c : c);
+        }
+        return out;
+    }
+    var r2n45T = BindEs10xSingleRequest.parseBerTlv(s45.resp);
+    var r2n45Ok0 = r2n45T.length === 1 && r2n45T[0].tag === "BF28";
+    var r2n45B = r2n45Ok0 ? BindEs10xSingleRequest.parseBerTlv(r2n45T[0].value) : [];
+    var r2n45_brtag = r2n45B.length === 1 ? r2n45B[0].tag : "";
+    var r2n45_els = r2n45_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(r2n45B[0].value) : [];
+    var r2n45Has = false;
+    for (var r2n45i = 0; r2n45i < r2n45_els.length; r2n45i++) {
+        if (r2n45_els[r2n45i].tag !== "BF2F") { continue; }
+        var r2n45F = {};
+        var r2n45M = BindEs10xSingleRequest.parseBerTlv(r2n45_els[r2n45i].value);
+        for (var r2n45j = 0; r2n45j < r2n45M.length; r2n45j++) { r2n45F[r2n45M[r2n45j].tag] = r2n45M[r2n45j].value; }
+        if (r2n45F["5A"] === "989209012143658709F5" && r2n45F["0C"] === __asciiHex("testsmdpplus1.example.com")) { r2n45Has = true; break; }
+    }
+    bind.checkData("S45-C2 notificationMetadataList contains NOTIF_METADATA_DELETE1", "1", r2n45Has ? "1" : "0");
+
+    // 步骤 46:MTD_STORE_DATA(tc_step)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla46 = s100.chan !== null ? (s100.chan <= 3 ? 128 + s100.chan : 188 + s100.chan).toString(16).toUpperCase() : null;
+    var s46 = bind.sendApdu(sdCla46, "E2", "91", "00", "BF4300", "00", "9000");
+    bind.checkData("S46-C1 SW", "9000", s46.sw);
+    // grat ES10b GetRAT 响应面(外层 BF43,S22_tag_table Table 66 + I_annexD3_es10x:179/249 机械推导;PPAR 内部 DER 定位 = §5.7.22 模块语料真空):
+    var rgw46 = BindGecaProc.parseGecaResponse(s46.resp, {outer: "BF43", required: [], optional: []});
+    var rrat46 = (rgw46.children.length === 1) ? BindEs10xSingleRequest.parseBerTlv(rgw46.children[0].value) : [];
+    // S46-C2: PPRS_ALLOWED 字段值(pprIds/allowedOperators/pprFlags)DER 定位 oracle 缺席——SGP.22 §5.7.22 ASN.1
+    // 模块未入包、tag 表仅给 BF43 外层——发射 fail-closed 恒断言诚实面(如实计错,不伪造通过)。
+    bind.checkData("S46-C2 PPRS_ALLOWED field-value oracle", "ppar_member_tag_oracle_declared", "oracle_absent_sgp22_5_7_22_module_vacuum");
+
+    // 步骤 47:MTD_STORE_DATA(tc_step;REQ: RQ33_012)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla47 = s100.chan !== null ? (s100.chan <= 3 ? 128 + s100.chan : 188 + s100.chan).toString(16).toUpperCase() : null;
+    var s47 = bind.sendApdu(sdCla47, "E2", "91", "00", "BF2D00", "00", "9000");
+    bind.checkData("S47-C1 SW", "9000", s47.sw);
+    var r2p47 = BindEs10xProcProfile.walkChoiceList(s47.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+    bind.checkData("S47-C2 profileInfoListOk empty", "1", (r2p47.branch_tag === "A0" && r2p47.elements.length === 0) ? "1" : "0");
 }