AI_MMI_Analyser/c_Sharp_Code/trackinfo.cs

459 lines
19 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using Microsoft.CSharp.RuntimeBinder;
using Microsoft.Office.Interop.Excel;
namespace SL200_RTLogViewer
{
// Token: 0x02000008 RID: 8
public class TrackInfo
{
// Token: 0x06000028 RID: 40 RVA: 0x000045EF File Offset: 0x000027EF
private TrackInfo()
{
}
// Token: 0x06000029 RID: 41 RVA: 0x000045FC File Offset: 0x000027FC
~TrackInfo()
{
}
// Token: 0x0600002A RID: 42 RVA: 0x00004628 File Offset: 0x00002828
public static void SetInfo()
{
}
// Token: 0x0600002B RID: 43 RVA: 0x0000462C File Offset: 0x0000282C
private static void SetTrackInfo()
{
string filename = System.Windows.Forms.Application.StartupPath + "\\TrackInfo.xlsx";
Microsoft.Office.Interop.Excel.Application application = (Microsoft.Office.Interop.Excel.Application)Activator.CreateInstance(Marshal.GetTypeFromCLSID(new Guid("00024500-0000-0000-C000-000000000046")));
try
{
Workbook workbook = application.Workbooks.Open(filename, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
if (TrackInfo.<>o__5.<>p__0 == null)
{
TrackInfo.<>o__5.<>p__0 = CallSite<Func<CallSite, object, Worksheet>>.Create(Binder.Convert(CSharpBinderFlags.None, typeof(Worksheet), typeof(TrackInfo)));
}
Worksheet worksheet = TrackInfo.<>o__5.<>p__0.Target(TrackInfo.<>o__5.<>p__0, workbook.Sheets["상선TC2"]);
if (TrackInfo.<>o__5.<>p__1 == null)
{
TrackInfo.<>o__5.<>p__1 = CallSite<Func<CallSite, object, Worksheet>>.Create(Binder.Convert(CSharpBinderFlags.None, typeof(Worksheet), typeof(TrackInfo)));
}
Worksheet worksheet2 = TrackInfo.<>o__5.<>p__1.Target(TrackInfo.<>o__5.<>p__1, workbook.Sheets["하선TC1"]);
Range usedRange = worksheet.UsedRange;
for (int i = 2; i <= usedRange.Rows.Count; i++)
{
List<StationInfo> tc2_LIst = TrackInfo.TC2_LIst;
if (TrackInfo.<>o__5.<>p__11 == null)
{
TrackInfo.<>o__5.<>p__11 = CallSite<Func<CallSite, Type, object, object, object, DoorDirection, object, StationInfo>>.Create(Binder.InvokeConstructor(CSharpBinderFlags.None, typeof(TrackInfo), new CSharpArgumentInfo[]
{
CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.UseCompileTimeType | CSharpArgumentInfoFlags.IsStaticType, null),
CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None, null),
CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None, null),
CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None, null),
CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.UseCompileTimeType, null),
CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None, null)
}));
}
Func<CallSite, Type, object, object, object, DoorDirection, object, StationInfo> target = TrackInfo.<>o__5.<>p__11.Target;
CallSite <>p__ = TrackInfo.<>o__5.<>p__11;
Type typeFromHandle = typeof(StationInfo);
if (TrackInfo.<>o__5.<>p__3 == null)
{
TrackInfo.<>o__5.<>p__3 = CallSite<Func<CallSite, Type, object, object>>.Create(Binder.InvokeMember(CSharpBinderFlags.None, "ToDouble", null, typeof(TrackInfo), new CSharpArgumentInfo[]
{
CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.UseCompileTimeType | CSharpArgumentInfoFlags.IsStaticType, null),
CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None, null)
}));
}
Func<CallSite, Type, object, object> target2 = TrackInfo.<>o__5.<>p__3.Target;
CallSite <>p__2 = TrackInfo.<>o__5.<>p__3;
Type typeFromHandle2 = typeof(Convert);
if (TrackInfo.<>o__5.<>p__2 == null)
{
TrackInfo.<>o__5.<>p__2 = CallSite<Func<CallSite, object, object>>.Create(Binder.GetMember(CSharpBinderFlags.None, "Value2", typeof(TrackInfo), new CSharpArgumentInfo[]
{
CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None, null)
}));
}
object arg = target2(<>p__2, typeFromHandle2, TrackInfo.<>o__5.<>p__2.Target(TrackInfo.<>o__5.<>p__2, usedRange.Cells[i, 1]) ?? 0.0);
if (TrackInfo.<>o__5.<>p__5 == null)
{
TrackInfo.<>o__5.<>p__5 = CallSite<Func<CallSite, Type, object, object>>.Create(Binder.InvokeMember(CSharpBinderFlags.None, "ToInt16", null, typeof(TrackInfo), new CSharpArgumentInfo[]
{
CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.UseCompileTimeType | CSharpArgumentInfoFlags.IsStaticType, null),
CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None, null)
}));
}
Func<CallSite, Type, object, object> target3 = TrackInfo.<>o__5.<>p__5.Target;
CallSite <>p__3 = TrackInfo.<>o__5.<>p__5;
Type typeFromHandle3 = typeof(Convert);
if (TrackInfo.<>o__5.<>p__4 == null)
{
TrackInfo.<>o__5.<>p__4 = CallSite<Func<CallSite, object, object>>.Create(Binder.GetMember(CSharpBinderFlags.None, "Value2", typeof(TrackInfo), new CSharpArgumentInfo[]
{
CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None, null)
}));
}
object arg2 = target3(<>p__3, typeFromHandle3, TrackInfo.<>o__5.<>p__4.Target(TrackInfo.<>o__5.<>p__4, usedRange.Cells[i, 2]) ?? 0);
if (TrackInfo.<>o__5.<>p__6 == null)
{
TrackInfo.<>o__5.<>p__6 = CallSite<Func<CallSite, object, object>>.Create(Binder.GetMember(CSharpBinderFlags.None, "Value2", typeof(TrackInfo), new CSharpArgumentInfo[]
{
CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None, null)
}));
}
object arg3 = TrackInfo.<>o__5.<>p__6.Target(TrackInfo.<>o__5.<>p__6, usedRange.Cells[i, 3]) ?? string.Empty;
if (TrackInfo.<>o__5.<>p__8 == null)
{
TrackInfo.<>o__5.<>p__8 = CallSite<Func<CallSite, object, bool>>.Create(Binder.UnaryOperation(CSharpBinderFlags.None, ExpressionType.IsTrue, typeof(TrackInfo), new CSharpArgumentInfo[]
{
CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None, null)
}));
}
Func<CallSite, object, bool> target4 = TrackInfo.<>o__5.<>p__8.Target;
CallSite <>p__4 = TrackInfo.<>o__5.<>p__8;
if (TrackInfo.<>o__5.<>p__7 == null)
{
TrackInfo.<>o__5.<>p__7 = CallSite<Func<CallSite, object, object>>.Create(Binder.GetMember(CSharpBinderFlags.None, "Value2", typeof(TrackInfo), new CSharpArgumentInfo[]
{
CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None, null)
}));
}
DoorDirection arg4 = target4(<>p__4, TrackInfo.<>o__5.<>p__7.Target(TrackInfo.<>o__5.<>p__7, usedRange.Cells[i, 4]) ?? (string.Empty == "DW")) ? DoorDirection.DW : DoorDirection.DE;
if (TrackInfo.<>o__5.<>p__10 == null)
{
TrackInfo.<>o__5.<>p__10 = CallSite<Func<CallSite, Type, object, object>>.Create(Binder.InvokeMember(CSharpBinderFlags.None, "ToInt16", null, typeof(TrackInfo), new CSharpArgumentInfo[]
{
CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.UseCompileTimeType | CSharpArgumentInfoFlags.IsStaticType, null),
CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None, null)
}));
}
Func<CallSite, Type, object, object> target5 = TrackInfo.<>o__5.<>p__10.Target;
CallSite <>p__5 = TrackInfo.<>o__5.<>p__10;
Type typeFromHandle4 = typeof(Convert);
if (TrackInfo.<>o__5.<>p__9 == null)
{
TrackInfo.<>o__5.<>p__9 = CallSite<Func<CallSite, object, object>>.Create(Binder.GetMember(CSharpBinderFlags.None, "Value2", typeof(TrackInfo), new CSharpArgumentInfo[]
{
CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None, null)
}));
}
tc2_LIst.Add(target(<>p__, typeFromHandle, arg, arg2, arg3, arg4, target5(<>p__5, typeFromHandle4, TrackInfo.<>o__5.<>p__9.Target(TrackInfo.<>o__5.<>p__9, usedRange.Cells[i, 5]) ?? 0)));
}
usedRange = worksheet2.UsedRange;
for (int j = 2; j <= usedRange.Rows.Count; j++)
{
List<StationInfo> tc1_LIst = TrackInfo.TC1_LIst;
if (TrackInfo.<>o__5.<>p__21 == null)
{
TrackInfo.<>o__5.<>p__21 = CallSite<Func<CallSite, Type, object, object, object, DoorDirection, object, StationInfo>>.Create(Binder.InvokeConstructor(CSharpBinderFlags.None, typeof(TrackInfo), new CSharpArgumentInfo[]
{
CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.UseCompileTimeType | CSharpArgumentInfoFlags.IsStaticType, null),
CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None, null),
CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None, null),
CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None, null),
CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.UseCompileTimeType, null),
CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None, null)
}));
}
Func<CallSite, Type, object, object, object, DoorDirection, object, StationInfo> target6 = TrackInfo.<>o__5.<>p__21.Target;
CallSite <>p__6 = TrackInfo.<>o__5.<>p__21;
Type typeFromHandle5 = typeof(StationInfo);
if (TrackInfo.<>o__5.<>p__13 == null)
{
TrackInfo.<>o__5.<>p__13 = CallSite<Func<CallSite, Type, object, object>>.Create(Binder.InvokeMember(CSharpBinderFlags.None, "ToDouble", null, typeof(TrackInfo), new CSharpArgumentInfo[]
{
CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.UseCompileTimeType | CSharpArgumentInfoFlags.IsStaticType, null),
CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None, null)
}));
}
Func<CallSite, Type, object, object> target7 = TrackInfo.<>o__5.<>p__13.Target;
CallSite <>p__7 = TrackInfo.<>o__5.<>p__13;
Type typeFromHandle6 = typeof(Convert);
if (TrackInfo.<>o__5.<>p__12 == null)
{
TrackInfo.<>o__5.<>p__12 = CallSite<Func<CallSite, object, object>>.Create(Binder.GetMember(CSharpBinderFlags.None, "Value2", typeof(TrackInfo), new CSharpArgumentInfo[]
{
CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None, null)
}));
}
object arg5 = target7(<>p__7, typeFromHandle6, TrackInfo.<>o__5.<>p__12.Target(TrackInfo.<>o__5.<>p__12, usedRange.Cells[j, 1]) ?? 0);
if (TrackInfo.<>o__5.<>p__15 == null)
{
TrackInfo.<>o__5.<>p__15 = CallSite<Func<CallSite, Type, object, object>>.Create(Binder.InvokeMember(CSharpBinderFlags.None, "ToInt16", null, typeof(TrackInfo), new CSharpArgumentInfo[]
{
CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.UseCompileTimeType | CSharpArgumentInfoFlags.IsStaticType, null),
CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None, null)
}));
}
Func<CallSite, Type, object, object> target8 = TrackInfo.<>o__5.<>p__15.Target;
CallSite <>p__8 = TrackInfo.<>o__5.<>p__15;
Type typeFromHandle7 = typeof(Convert);
if (TrackInfo.<>o__5.<>p__14 == null)
{
TrackInfo.<>o__5.<>p__14 = CallSite<Func<CallSite, object, object>>.Create(Binder.GetMember(CSharpBinderFlags.None, "Value2", typeof(TrackInfo), new CSharpArgumentInfo[]
{
CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None, null)
}));
}
object arg6 = target8(<>p__8, typeFromHandle7, TrackInfo.<>o__5.<>p__14.Target(TrackInfo.<>o__5.<>p__14, usedRange.Cells[j, 2]) ?? 0);
if (TrackInfo.<>o__5.<>p__16 == null)
{
TrackInfo.<>o__5.<>p__16 = CallSite<Func<CallSite, object, object>>.Create(Binder.GetMember(CSharpBinderFlags.None, "Value2", typeof(TrackInfo), new CSharpArgumentInfo[]
{
CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None, null)
}));
}
object arg7 = TrackInfo.<>o__5.<>p__16.Target(TrackInfo.<>o__5.<>p__16, usedRange.Cells[j, 3]) ?? string.Empty;
if (TrackInfo.<>o__5.<>p__18 == null)
{
TrackInfo.<>o__5.<>p__18 = CallSite<Func<CallSite, object, bool>>.Create(Binder.UnaryOperation(CSharpBinderFlags.None, ExpressionType.IsTrue, typeof(TrackInfo), new CSharpArgumentInfo[]
{
CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None, null)
}));
}
Func<CallSite, object, bool> target9 = TrackInfo.<>o__5.<>p__18.Target;
CallSite <>p__9 = TrackInfo.<>o__5.<>p__18;
if (TrackInfo.<>o__5.<>p__17 == null)
{
TrackInfo.<>o__5.<>p__17 = CallSite<Func<CallSite, object, object>>.Create(Binder.GetMember(CSharpBinderFlags.None, "Value2", typeof(TrackInfo), new CSharpArgumentInfo[]
{
CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None, null)
}));
}
DoorDirection arg8 = target9(<>p__9, TrackInfo.<>o__5.<>p__17.Target(TrackInfo.<>o__5.<>p__17, usedRange.Cells[j, 4]) ?? (string.Empty == "DW")) ? DoorDirection.DW : DoorDirection.DE;
if (TrackInfo.<>o__5.<>p__20 == null)
{
TrackInfo.<>o__5.<>p__20 = CallSite<Func<CallSite, Type, object, object>>.Create(Binder.InvokeMember(CSharpBinderFlags.None, "ToInt16", null, typeof(TrackInfo), new CSharpArgumentInfo[]
{
CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.UseCompileTimeType | CSharpArgumentInfoFlags.IsStaticType, null),
CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None, null)
}));
}
Func<CallSite, Type, object, object> target10 = TrackInfo.<>o__5.<>p__20.Target;
CallSite <>p__10 = TrackInfo.<>o__5.<>p__20;
Type typeFromHandle8 = typeof(Convert);
if (TrackInfo.<>o__5.<>p__19 == null)
{
TrackInfo.<>o__5.<>p__19 = CallSite<Func<CallSite, object, object>>.Create(Binder.GetMember(CSharpBinderFlags.None, "Value2", typeof(TrackInfo), new CSharpArgumentInfo[]
{
CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None, null)
}));
}
tc1_LIst.Add(target6(<>p__6, typeFromHandle5, arg5, arg6, arg7, arg8, target10(<>p__10, typeFromHandle8, TrackInfo.<>o__5.<>p__19.Target(TrackInfo.<>o__5.<>p__19, usedRange.Cells[j, 5]) ?? 0)));
}
Console.WriteLine("역정보 로딩 완료");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
}
}
// Token: 0x0600002C RID: 44 RVA: 0x000050AC File Offset: 0x000032AC
public static void setINFO2()
{
Microsoft.Office.Interop.Excel.Application application = (Microsoft.Office.Interop.Excel.Application)Activator.CreateInstance(Marshal.GetTypeFromCLSID(new Guid("00024500-0000-0000-C000-000000000046")));
string filename = System.Windows.Forms.Application.StartupPath + "\\TrackInfo.xlsx";
try
{
Workbook workbook = application.Workbooks.Open(filename, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
if (TrackInfo.<>o__6.<>p__0 == null)
{
TrackInfo.<>o__6.<>p__0 = CallSite<Func<CallSite, object, Worksheet>>.Create(Binder.Convert(CSharpBinderFlags.ConvertExplicit, typeof(Worksheet), typeof(TrackInfo)));
}
Worksheet worksheet = TrackInfo.<>o__6.<>p__0.Target(TrackInfo.<>o__6.<>p__0, workbook.Sheets["상선TC2"]);
if (TrackInfo.<>o__6.<>p__1 == null)
{
TrackInfo.<>o__6.<>p__1 = CallSite<Func<CallSite, object, Worksheet>>.Create(Binder.Convert(CSharpBinderFlags.ConvertExplicit, typeof(Worksheet), typeof(TrackInfo)));
}
Worksheet worksheet2 = TrackInfo.<>o__6.<>p__1.Target(TrackInfo.<>o__6.<>p__1, workbook.Sheets["하선TC1"]);
TrackInfo.AddDataToList(worksheet, TrackInfo.TC2_LIst);
TrackInfo.AddDataToList(worksheet2, TrackInfo.TC1_LIst);
}
catch (Exception ex)
{
Console.WriteLine("An error occurred: " + ex.Message);
}
finally
{
bool flag = application != null;
if (flag)
{
application.Quit();
TrackInfo.ReleaseObject(application);
}
}
}
// Token: 0x0600002D RID: 45 RVA: 0x00005274 File Offset: 0x00003474
private static void AddDataToList(Worksheet worksheet, List<StationInfo> stationList)
{
Range usedRange = worksheet.UsedRange;
if (TrackInfo.<>o__7.<>p__0 == null)
{
TrackInfo.<>o__7.<>p__0 = CallSite<Func<CallSite, object, object[,]>>.Create(Binder.Convert(CSharpBinderFlags.ConvertExplicit, typeof(object[,]), typeof(TrackInfo)));
}
object[,] array = TrackInfo.<>o__7.<>p__0.Target(TrackInfo.<>o__7.<>p__0, usedRange.get_Value(Type.Missing));
for (int i = 2; i <= usedRange.Rows.Count; i++)
{
stationList.Add(new StationInfo(Convert.ToDouble(array[i, 1]), (int)Convert.ToInt16(array[i, 2]), array[i, 3].ToString(), (array[i, 5].ToString() == "DW") ? DoorDirection.DW : DoorDirection.DE, (int)Convert.ToInt16(array[i, 4])));
}
}
// Token: 0x0600002E RID: 46 RVA: 0x00005354 File Offset: 0x00003554
private static void ReleaseObject(object obj)
{
try
{
Marshal.ReleaseComObject(obj);
obj = null;
}
catch (Exception ex)
{
obj = null;
Console.WriteLine("An error occurred while releasing the object: " + ex.Message);
}
finally
{
GC.Collect();
}
}
// Token: 0x0600002F RID: 47 RVA: 0x000053B8 File Offset: 0x000035B8
public static double GetStationDistance(string StationName, bool IsTC1)
{
double result = 0.0;
if (IsTC1)
{
for (int i = 0; i < TrackInfo.TC1_LIst.Count; i++)
{
bool flag = StationName == TrackInfo.TC1_LIst[i].StationName;
if (flag)
{
result = TrackInfo.TC1_LIst[i].Pos;
}
}
}
else
{
for (int j = 0; j < TrackInfo.TC2_LIst.Count; j++)
{
bool flag2 = StationName == TrackInfo.TC2_LIst[j].StationName;
if (flag2)
{
result = TrackInfo.TC2_LIst[j].Pos;
}
}
}
return result;
}
// Token: 0x06000030 RID: 48 RVA: 0x00005480 File Offset: 0x00003680
public static int GetStationNo(string StationName)
{
int result = 0;
for (int i = 0; i < TrackInfo.TC1_LIst.Count; i++)
{
bool flag = StationName == TrackInfo.TC1_LIst[i].StationName;
if (flag)
{
result = TrackInfo.TC1_LIst[i].StationCode;
break;
}
}
return result;
}
// Token: 0x06000031 RID: 49 RVA: 0x000054E0 File Offset: 0x000036E0
public static string GetStationName(int stationNo)
{
string result = "";
for (int i = 0; i < TrackInfo.TC1_LIst.Count; i++)
{
bool flag = stationNo == TrackInfo.TC1_LIst[i].StationCode;
if (flag)
{
result = TrackInfo.TC1_LIst[i].StationName;
break;
}
}
return result;
}
// Token: 0x06000032 RID: 50 RVA: 0x00005544 File Offset: 0x00003744
public static DoorDirection GetDoorDir(string StationName, bool IsTC1)
{
DoorDirection result = DoorDirection.DW;
if (IsTC1)
{
for (int i = 0; i < TrackInfo.TC1_LIst.Count; i++)
{
bool flag = StationName == TrackInfo.TC1_LIst[i].StationName;
if (flag)
{
result = TrackInfo.TC1_LIst[i].NextDoorDir;
}
}
}
else
{
for (int j = 0; j < TrackInfo.TC2_LIst.Count; j++)
{
bool flag2 = StationName == TrackInfo.TC2_LIst[j].StationName;
if (flag2)
{
result = TrackInfo.TC2_LIst[j].NextDoorDir;
}
}
}
return result;
}
// Token: 0x06000033 RID: 51 RVA: 0x00005604 File Offset: 0x00003804
public static DoorDirection GetDoorDir(int StationNo, bool IsTC1)
{
DoorDirection result = DoorDirection.DW;
if (IsTC1)
{
for (int i = 0; i < TrackInfo.TC1_LIst.Count; i++)
{
bool flag = StationNo == TrackInfo.TC1_LIst[i].StationCode;
if (flag)
{
result = TrackInfo.TC1_LIst[i].NextDoorDir;
}
}
}
else
{
for (int j = 0; j < TrackInfo.TC2_LIst.Count; j++)
{
bool flag2 = StationNo == TrackInfo.TC2_LIst[j].StationCode;
if (flag2)
{
result = TrackInfo.TC2_LIst[j].NextDoorDir;
}
}
}
return result;
}
// Token: 0x04000025 RID: 37
public static List<StationInfo> TC1_LIst = new List<StationInfo>();
// Token: 0x04000026 RID: 38
public static List<StationInfo> TC2_LIst = new List<StationInfo>();
}
}