UTILITY
Utility
1
using
System;
2
using
System.Collections.Generic;
3
using
System.Text;
4
using
Microsoft.Practices.EnterpriseLibrary.Logging;
5
using
System.Security.Cryptography;
6
using
System.Web;
7
using
System.Collections;
8
using
System.Text.RegularExpressions;
9
using
Dart.PowerTCP.SecureMail;
10
using
System.Net.Sockets;
11
using
System.IO;
12
using
System.Data.SqlClient;
13
using
System.Data;
14
using
System.Collections.Specialized;
15![None.gif](/Images/OutliningIndicators/None.gif)
16
namespace
ChinaValue.CommonV2008
17![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
18![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
19
/// 常用功能类
20
/// </summary>
21
public class Utility
22![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
23![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
24
/// 检测非法Post字符
25
/// </summary>
26
/// <param name="content"></param>
27
/// <returns></returns>
28
public static Boolean ValidatePostContent(String content)
29![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
30
Regex regexBadString = new Regex(@"<\s*?(/form)|(form)|(iframe)|(frame)|(meta)|(script).+?>", RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.Singleline);
31
return !regexBadString.Match(content).Success;
32
}
33![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
34![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
35
/// 写错误日志
36
/// </summary>
37
/// <param name="strInformation"></param>
38
/// <param name="strTitle"></param>
39
public static void LogInfo(String strTitle, String strInformation)
40![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
41
LogEntry logEntry = new LogEntry();
42
logEntry.Title = strTitle;
43
logEntry.Message = strInformation;
44
logEntry.Categories.Add("General");
45
logEntry.TimeStamp = DateTime.Now;
46
Logger.Write(logEntry);
47
}
48![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
49![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
50
/// 写指定路径的日志
51
/// </summary>
52
/// <param name="logUrl">日志路径,物理地址</param>
53
/// <param name="title"></param>
54
/// <param name="information"></param>
55
public static void LogInfo(String logUrl, String title, String information)
56![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
57
using (FileStream fs = new FileStream(logUrl, FileMode.Append, FileAccess.Write))
58![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
59
StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.Default);
60
sw.WriteLine(information);
61
sw.Flush();
62
sw.Close();
63
fs.Close();
64
}
65
}
66![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
67![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
68
/// MD5加密
69
/// </summary>
70
/// <param name="toCryString"></param>
71
/// <returns></returns>
72
public static String MD5(String toCryString)
73![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
74
MD5CryptoServiceProvider hashmd5;
75
hashmd5 = new MD5CryptoServiceProvider();
76
return BitConverter.ToString(hashmd5.ComputeHash(Encoding.Default.GetBytes(toCryString))).Replace("-", "").ToLower();
77
}
78![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
79![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
80
/// 获取客户端的IP地址
81
/// </summary>
82
/// <returns></returns>
83
public static String ClientIP()
84![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
85
//判断是否通过代理服务器上网
86
if (HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null)
87![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
88
return HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString(); //真实的IP
89
}
90
else
91![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
92
return HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString();
93
}
94
}
95![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
96![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
97
/// 在客户端弹出一个消息框(Page)
98
/// </summary>
99
/// <param name="strMsg">待显示的信息</param>
100
public static void ShowClientMessegeBox(System.Web.UI.Page pageFor, String strMessage)
101![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
102
System.Text.StringBuilder strBuilder = new System.Text.StringBuilder("<script>alert(\"");
103
strBuilder.Append(strMessage.Replace("\r\n", "\\r\\n"));
104
strBuilder.Append("\")</script>");
105
pageFor.ClientScript.RegisterStartupScript(pageFor.GetType(), "alertBox", strBuilder.ToString());
106
}
107![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
108![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
109
/// 在客户端弹出一个消息框(UserControl)
110
/// </summary>
111
/// <param name="strMsg">待显示的信息</param>
112
public static void ShowClientMessegeBox(System.Web.UI.UserControl ucFor, String strMessage)
113![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
114
System.Text.StringBuilder strBuilder = new System.Text.StringBuilder("<script>alert(\"");
115
strBuilder.Append(strMessage.Replace("\r\n", "\\r\\n"));
116
strBuilder.Append("\")</script>");
117
ucFor.Page.ClientScript.RegisterStartupScript(ucFor.GetType(), "alertBox", strBuilder.ToString());
118
}
119![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
120![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
121
/// 在客户端跳转页面
122
/// </summary>
123
/// <param name="Url"></param>
124
public static void RedirectAtClient(String redirectUrl)
125![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
126
HttpContext.Current.Response.Write("<script language=\"javascript\" type=\"text/javascript\">");
127
HttpContext.Current.Response.Write("location.href='" + redirectUrl + "';");
128
HttpContext.Current.Response.Write("</script>");
129
HttpContext.Current.Response.End();
130
}
131![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
132![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
133
/// 在客户端弹出消息框并跳转
134
/// </summary>
135
/// <param name="pageFor"></param>
136
/// <param name="message">待显示的信息</param>
137
/// <param name="redirectUrl">待跳转的地址</param>
138
public static void ShowClientMessegeBoxAndRedirect(String message, String redirectUrl)
139![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
140
HttpContext.Current.Response.Write("<script language=\"javascript\" type=\"text/javascript\">");
141
HttpContext.Current.Response.Write("alert('" + message + "');");
142
HttpContext.Current.Response.Write("location.href='" + redirectUrl + "';");
143
HttpContext.Current.Response.Write("</script>");
144
HttpContext.Current.Response.End();
145
}
146![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
147![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
148
/// 在客户端弹出消息框并关闭窗口
149
/// </summary>
150
/// <param name="message">待显示的信息</param>
151
public static void ShowClientMessegeBoxAndClose(String message)
152![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
153
HttpContext.Current.Response.Write("<script language=\"javascript\" type=\"text/javascript\">");
154
HttpContext.Current.Response.Write("alert('" + message + "');");
155
HttpContext.Current.Response.Write("window.close();");
156
HttpContext.Current.Response.Write("</script>");
157
HttpContext.Current.Response.End();
158
}
159![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
160![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
161![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
162
/// 在客户端弹出消息框并父窗口跳转
163
/// </summary>
164
/// <param name="message">待显示的信息</param>
165
public static void ShowClientMessegeBoxAndRedirectAtParent(String message, String redirectUrl)
166![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
167
HttpContext.Current.Response.Write("<script language=\"javascript\" type=\"text/javascript\">");
168
HttpContext.Current.Response.Write("alert('" + message + "');");
169
HttpContext.Current.Response.Write("window.parent.location.href='" + redirectUrl + "';");
170
HttpContext.Current.Response.Write("</script>");
171
HttpContext.Current.Response.End();
172
}
173![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
174![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
175
/// 在客户端关闭新开窗口并刷新Opener
176
/// </summary>
177
/// <param name="pageFor"></param>
178
/// <param name="message">待显示的信息</param>
179
/// <param name="redirectUrl">待跳转的地址</param>
180
public static void CloseAndRefreshOpener()
181![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
182
HttpContext.Current.Response.Write("<script language=\"javascript\" type=\"text/javascript\">");
183
HttpContext.Current.Response.Write("window.opener.location.href=window.opener.location.href;");
184
HttpContext.Current.Response.Write("window.focus();");
185
HttpContext.Current.Response.Write("window.opener=null;");
186
HttpContext.Current.Response.Write("window.close();");
187
HttpContext.Current.Response.Write("</script>");
188
HttpContext.Current.Response.End();
189
}
190![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
191![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
192
/// 在客户端刷新Opener
193
/// </summary>
194
/// <param name="pageFor"></param>
195
/// <param name="message">待显示的信息</param>
196
/// <param name="redirectUrl">待跳转的地址</param>
197
public static void RefreshOpener()
198![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
199
HttpContext.Current.Response.Write("<script language=\"javascript\" type=\"text/javascript\">");
200
HttpContext.Current.Response.Write("window.opener.location.href=window.opener.location.href;");
201
HttpContext.Current.Response.Write("window.focus();");
202
HttpContext.Current.Response.Write("</script>");
203
}
204![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
205![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
206
/// 替换瘦文本框中的空格、大于号、小于号以及软回车,自动转换Email、HTTP地址
207
/// </summary>
208
/// <param name="content"></param>
209
/// <returns></returns>
210
public static String EncodeTextBox(String content)
211![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
212
StringBuilder sbContent = new StringBuilder(content);
213![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
214
sbContent = sbContent.Replace("<", "<");//处理小于号
215
sbContent = sbContent.Replace(">", ">");//处理大于号
216
sbContent = sbContent.Replace("\"", """);//处理双引号
217![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
218
//替换URL
219
Regex regUrl = new Regex(@"(http:\/\/[\w.]+(\/?\w+)+[.a-zA-Z0-9\?=]+)", RegexOptions.IgnoreCase | RegexOptions.Compiled);
220
sbContent = new StringBuilder(regUrl.Replace(sbContent.ToString(), "<a href=\"$0\" target=\"_blank\">$0</a>"));
221![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
222
//替换Email
223
Regex regEmail = new Regex(@"([a-zA-Z_0-9.-]+\@[a-zA-Z_0-9.-]+\.\w+)", RegexOptions.IgnoreCase | RegexOptions.Compiled);
224
sbContent = new StringBuilder(regEmail.Replace(sbContent.ToString(), "<a href=\"mailto:$0\">$0</a>"));
225![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
226
sbContent = sbContent.Replace("\n", "<br />");//处理换行
227
sbContent = sbContent.Replace(" ", " ");//处理空格
228![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
229
return sbContent.ToString();
230
}
231![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
232![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
233
/// 与EncodeTextBox方法作用相反
234
/// </summary>
235
/// <param name="content"></param>
236
/// <returns></returns>
237
public static String DecodeTextBox(String content)
238![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
239
StringBuilder sbContent = new StringBuilder(Utility.DropHtmlTags(content)); //去掉html标签
240![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
241
sbContent = sbContent.Replace(""", "\"");//处理双引号
242
sbContent = sbContent.Replace(" ", " ");//处理空格
243
sbContent = sbContent.Replace("<", "<");//处理小于号
244
sbContent = sbContent.Replace(">", ">");//处理大于号
245
sbContent = sbContent.Replace("<br />", "\n");//处理换行
246![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
247
return sbContent.ToString();
248
}
249![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
250![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
251
/// 对字符串进行Base64编码
252
/// </summary>
253
/// <param name="content"></param>
254
/// <returns></returns>
255
public static String EncodeBase64(String content)
256![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
257
String encode = "";
258
Byte[] bytes = Encoding.Default.GetBytes(content);
259![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
260
try
261![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
262
encode = Convert.ToBase64String(bytes);
263
}
264
catch
265![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
266
encode = content;
267
}
268![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
269
return encode;
270
}
271![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
272![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
273
/// 对字符串进行Base64解码
274
/// </summary>
275
/// <param name="content"></param>
276
/// <returns></returns>
277
public static String DecodeBase64(String content)
278![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
279
String decode = "";
280
Byte[] bytes = Convert.FromBase64String(content);
281![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
282
try
283![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
284
decode = Encoding.Default.GetString(bytes);
285
}
286
catch
287![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
288
decode = content;
289
}
290![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
291
return decode;
292
}
293![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
294![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
295
/// DES加密
296
/// </summary>
297
/// <param name="pToEncrypt">要加密的字符串</param>
298
/// <param name="sKey">密钥</param>
299
/// <returns></returns>
300
public static String EncodeDES(String pToEncrypt, String sKey)
301![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
302
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
303![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
304
//把字符串放到byte数组中
305
Byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt);
306![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
307
//建立加密对象的密钥和偏移量
308
//原文使用ASCIIEncoding.ASCII方法的GetBytes方法
309
//使得输入密码必须输入英文文本
310
des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
311
des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
312
MemoryStream ms = new MemoryStream();
313
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
314![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
315
//Write the byte array into the crypto stream
316
//(It will end up in the memory stream)
317
cs.Write(inputByteArray, 0, inputByteArray.Length);
318
cs.FlushFinalBlock();
319![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
320
//Get the data back from the memory stream, and into a string
321
StringBuilder ret = new StringBuilder();
322
foreach (Byte b in ms.ToArray())
323![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
324
//Format as hex
325
ret.AppendFormat("{0:X2}", b);
326
}
327![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
328
ret.ToString();
329![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
330
return ret.ToString();
331
}
332![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
333![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
334
/// DES解密
335
/// </summary>
336
/// <param name="pToDecrypt">要解密的字符串</param>
337
/// <param name="sKey">密钥</param>
338
/// <returns></returns>
339
public static String DecodeDES(String pToDecrypt, String sKey)
340![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
341
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
342![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
343
Byte[] inputByteArray = new Byte[pToDecrypt.Length / 2];
344![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
345
for (Int32 x = 0; x < pToDecrypt.Length / 2; x++)
346![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
347
Int32 i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16));
348
inputByteArray[x] = (Byte)i;
349
}
350![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
351
//建立加密对象的密钥和偏移量,此值重要,不能修改
352
des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
353
des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
354
MemoryStream ms = new MemoryStream();
355
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
356![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
357
//Flush the data through the crypto stream into the memory stream
358
cs.Write(inputByteArray, 0, inputByteArray.Length);
359
cs.FlushFinalBlock();
360![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
361
//Get the decrypted data back from the memory stream
362
return Encoding.Default.GetString(ms.ToArray());
363
}
364![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
365![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
366
/// DES与Base64组合加密
367
/// </summary>
368
/// <param name="data"></param>
369
/// <param name="key"></param>
370
/// <returns></returns>
371
public static String EncodeDESAndBase64(String data, String key)
372![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
373
Byte[] byKey = Encoding.Default.GetBytes(key);
374
Byte[] byIV = Encoding.Default.GetBytes(key);
375![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
376
DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
377
Int32 i = cryptoProvider.KeySize;
378
MemoryStream ms = new MemoryStream();
379
CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateEncryptor(byKey, byIV), CryptoStreamMode.Write);
380![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
381
StreamWriter sw = new StreamWriter(cst);
382
cst.Write(System.Text.Encoding.Default.GetBytes(data), 0, System.Text.Encoding.Default.GetByteCount(data));
383
sw.Flush();
384
cst.FlushFinalBlock();
385
sw.Flush();
386![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
387
return Convert.ToBase64String(ms.GetBuffer(), 0, (Int32)ms.Length);
388
}
389![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
390![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
391
/// DES与Base64组合解密
392
/// </summary>
393
/// <param name="data"></param>
394
/// <param name="key"></param>
395
/// <returns></returns>
396
public static String DecodeDESAndBase64(String data, String key)
397![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
398
//把密钥转成二进制数组
399
Byte[] byKey = Encoding.Default.GetBytes(key);
400
Byte[] byIV = Encoding.Default.GetBytes(key);
401![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
402
Byte[] byEnc;
403![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
404
try
405![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
406
//base64解码
407
byEnc = Convert.FromBase64String(data);
408
}
409
catch
410![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
411
return null;
412
}
413![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
414
DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
415
MemoryStream ms = new MemoryStream(byEnc);
416
CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateDecryptor(byKey, byIV), CryptoStreamMode.Read);
417
StreamReader sr = new StreamReader(cst);
418
Byte[] tmp = new Byte[ms.Length];
419
cst.Read(tmp, 0, tmp.Length);
420
String result = System.Text.Encoding.Default.GetString(tmp);
421![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
422
return result;
423
}
424![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
425![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
426
/// 数组转换为ArrayList
427
/// </summary>
428
/// <param name="array">待转换的数组</param>
429
/// <returns></returns>
430
public static ArrayList ArrayToArrayList(String[] array)
431![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
432
ArrayList arrayList = new ArrayList();
433![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
434
for (Int32 i = 0; i < array.Length; i++)
435![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
436
arrayList.Add(array[i]);
437
}
438![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
439
return arrayList;
440
}
441![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
442![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
443
/// 数组转换为ArrayList
444
/// </summary>
445
/// <param name="array">待转换的数组</param>
446
/// <returns></returns>
447
public static ArrayList ArrayToArrayList(Char[] array)
448![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
449
ArrayList arrayList = new ArrayList();
450![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
451
for (Int32 i = 0; i < array.Length; i++)
452![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
453
arrayList.Add(array[i]);
454
}
455![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
456
return arrayList;
457
}
458![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
459![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
460
/// 截断字符串,截断结果的长度将不会超过制定的最大长度
461
/// </summary>
462
/// <param name="strContent"></param>
463
/// <param name="intMaxLength"></param>
464
/// <returns></returns>
465
public static String CompressString(String strContent, Int32 intMaxLength)
466![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
467
return CompressString(strContent, intMaxLength, true);
468
}
469![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
470![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
471
/// 截断字符串,截断结果的长度将不会超过制定的最大长度,并且可以指定是否添加省略号
472
/// </summary>
473
/// <param name="strContent"></param>
474
/// <param name="intMaxLength"></param>
475
/// <param name="appendSuffix"></param>
476
/// <returns></returns>
477
public static String CompressString(String strContent, Int32 intMaxLength, Boolean appendSuffix)
478![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
479
if (String.IsNullOrEmpty(strContent))
480![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
481
return String.Empty;
482
}
483
else
484![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
485
int intUnicodeLength = 0;
486
int intCharCount = 0;
487
for (Int32 i = 0; i < strContent.Length && intUnicodeLength < intMaxLength; i++)
488![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
489
if (strContent[i] > 255)
490
intUnicodeLength += 2;
491
else
492
intUnicodeLength++;
493![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
494
intCharCount++;
495
}
496![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
497
if (intUnicodeLength >= intMaxLength)
498![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
499
if (appendSuffix)
500![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
501
return strContent.Substring(0, intCharCount) + "…";
502
}
503
else
504![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
505
return strContent.Substring(0, intCharCount);
506
}
507
}
508
else
509![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
510
return strContent;
511
}
512
}
513
}
514![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
515![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
516
/// 去掉字符串中的所有空格
517
/// </summary>
518
/// <param name="HtmlText"></param>
519
/// <returns></returns>
520
public static String DropBlanks(string HtmlText)
521![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
522
if (!String.IsNullOrEmpty(HtmlText))
523![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
524
System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex(@"[\s| ]", System.Text.RegularExpressions.RegexOptions.Singleline | System.Text.RegularExpressions.RegexOptions.Compiled);
525
return reg.Replace(HtmlText, string.Empty).Replace(" ", " ");
526
}
527
else
528![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
529
return String.Empty;
530
}
531
}
532![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
533![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
534
/// 去除Html"标签"
535
/// </summary>
536
/// <param name="HtmlText"></param>
537
/// <returns></returns>
538
public static String DropHtmlTags(string HtmlText)
539![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
540
if (string.IsNullOrEmpty(HtmlText))
541![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
542
return String.Empty;
543
}
544
else
545![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
546
System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex(@"<.*?>", System.Text.RegularExpressions.RegexOptions.Singleline | System.Text.RegularExpressions.RegexOptions.Compiled);
547
return reg.Replace(HtmlText, string.Empty);
548
}
549
}
550![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
551![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
552
/// 发送邮件(账户友好名称为:“价值中国网”)
553
/// </summary>
554
/// <param name="userID">邮件发送目的用户ID</param>
555
/// <param name="subject">邮件主题</param>
556
/// <param name="body">邮件内容</param>
557
/// <returns></returns>
558
public static Boolean SendMail(Int32 userID, String subject, String body)
559![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
560
SqlParameter[] para = new SqlParameter[1];
561
para[0] = new SqlParameter("@ID", SqlDbType.Int, 4);
562
para[0].Value = userID;
563![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
564
String sqlStr = "SELECT Email FROM huiyuan WHERE [ID] = @ID";
565![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
566
Object objEmail = SqlHelper.ExecuteScalar(WebConfig.ConnStrWWW, CommandType.Text, sqlStr, para);
567![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
568
if (objEmail != null)
569![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
570
return SendMail("价值中国网", objEmail.ToString(), subject, body);
571
}
572![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
573
return false;
574
}
575![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
576![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
577
/// 发送邮件(账户友好名称为:“价值中国网”)
578
/// </summary>
579
/// <param name="toEmail">邮件发送目的Email</param>
580
/// <param name="subject">邮件主题</param>
581
/// <param name="body">邮件内容</param>
582
/// <returns></returns>
583
public static Boolean SendMail(String toEmail, String subject, String body)
584![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
585
return SendMail("价值中国网", toEmail, subject, body);
586
}
587![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
588![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
589
/// 发送邮件
590
/// </summary>
591
/// <param name="fromFriendlyName">收件人看到的友好名称</param>
592
/// <param name="toEmail">邮件发送目的Email</param>
593
/// <param name="subject">邮件主题</param>
594
/// <param name="body">邮件内容</param>
595
/// <returns></returns>
596
public static Boolean SendMail(String fromFriendlyName, String toEmail, String subject, String body)
597![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
598
return SendMail(fromFriendlyName, WebConfig.SMTPMailAccount, toEmail, subject, body);
599
}
600![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
601![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
602
/// 发送邮件
603
/// </summary>
604
/// <param name="fromFriendlyName">收件人看到的友好名称</param>
605
/// <param name="fromFriendlyMail">收件人看到的友好Email</param>
606
/// <param name="toEmail">邮件发送目的Email</param>
607
/// <param name="subject">邮件主题</param>
608
/// <param name="body">邮件内容</param>
609
/// <returns></returns>
610
public static Boolean SendMail(String fromFriendlyName, String fromFriendlyMail, String toEmail, String subject, String body)
611![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
612
Boolean sendResult = false;
613![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
614
String fromTrueUser = WebConfig.SMTPMailAccount.Substring(0, WebConfig.SMTPMailAccount.IndexOf('@'));
615
String fromTrueDomain = WebConfig.SMTPMailAccount.Substring(WebConfig.SMTPMailAccount.IndexOf('@') + 1, WebConfig.SMTPMailAccount.Length - fromTrueUser.Length - 1);
616![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
617
String fromUser = fromFriendlyMail.Substring(0, fromFriendlyMail.IndexOf('@'));
618
String fromDomain = fromFriendlyMail.Substring(fromFriendlyMail.IndexOf('@') + 1, fromFriendlyMail.Length - fromUser.Length - 1);
619![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
620
Smtp smtpServer = new Smtp();
621
smtpServer.UseAuthentication = true;
622
smtpServer.Server = WebConfig.SMTPServerAddress;
623
smtpServer.Username = WebConfig.SMTPUserName;
624
smtpServer.Password = WebConfig.SMTPPassword;
625
smtpServer.MailFrom = new MailAddress(fromFriendlyName, fromTrueUser, fromTrueDomain);
626![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
627
StringBuilder sbMailBody = new StringBuilder();
628
sbMailBody.Append("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"><html xmlns=\"http://www.w3.org/1999/xhtml\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\" /><body>");
629
sbMailBody.Append(body);
630
sbMailBody.Append("</body></html>");
631![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
632
MessageStream msgStream = new MessageStream();
633
msgStream.Type = "text/html";
634
msgStream.From.Domain = fromDomain;
635
msgStream.From.User = fromUser;
636
msgStream.From.Friendly = fromFriendlyName;
637
msgStream.To.Add(new MailAddress(toEmail));
638![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
639
msgStream.Charset = "gb2312";
640
//以下各种时间格式都会造成用户收到的邮件时间不准,暂时没有好的解决办法
641
//msgStream.Date = DateTime.Now.ToString("r") + " +0800";
642
//msgStream.Date = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
643
//msgStream.Date = DateTime.Now.ToString("g");
644
//msgStream.Date = DateTime.Now.ToString();
645
msgStream.Mailer = "www.chinavalue.net";
646![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
647
msgStream.Subject = subject;
648
msgStream.Text = sbMailBody.ToString();
649![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
650
try
651![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
652
smtpServer.Send(msgStream);
653
smtpServer.Close();
654![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
655
sendResult = true;
656
}
657
catch (ProtocolException exProtocol)
658![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
659
//TODO: Log exception
660
Utility.LogInfo("ChinaValue.Info.Common.SendMail Error", exProtocol.ToString());
661
}
662
catch (SocketException exSocket)
663![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
664
//TODO: Log exception
665
Utility.LogInfo("ChinaValue.Info.Common.SendMail Error", exSocket.ToString());
666
}
667
catch (IOException exIO)
668![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
669
//TODO: Log IOException
670
Utility.LogInfo("ChinaValue.Info.Common.SendMail Error", exIO.ToString());
671
}
672
catch (ArgumentException exArg)
673![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
674
//TODO: Log Argument Exception
675
Utility.LogInfo("ChinaValue.Info.Common.SendMail Error", exArg.ToString());
676
}
677![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
678
return sendResult;
679
}
680![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
681![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
682
/// 发送站内信息
683
/// </summary>
684
/// <param name="intFromUserId">发送用户的ID</param>
685
/// <param name="intToUserId">接收用户的ID</param>
686
/// <param name="msgSubject">消息标题</param>
687
/// <param name="msgBody">消息内容</param>
688
/// <returns></returns>
689
public static Boolean SendMessage(Int32 fromUserID, Int32 toUserID, String msgSubject, String msgBody)
690![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
691
return SendMessage(fromUserID, toUserID, msgSubject, msgBody, String.Empty);
692
}
693![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
694![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
695
/// 发送系统消息
696
/// </summary>
697
/// <param name="toUserID">接收用户的ID</param>
698
/// <param name="msgSubject">消息标题</param>
699
/// <param name="msgBody">消息内容</param>
700
/// <returns></returns>
701
public static Boolean SendMessage(Int32 toUserID, String msgSubject, String msgBody)
702![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
703
return SendMessage(0, toUserID, msgSubject, msgBody, "价值中国");
704
}
705![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
706![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
707
/// 发送站内信息
708
/// </summary>
709
/// <param name="fromUserID">发送用户的ID</param>
710
/// <param name="toUserID">接收用户的ID</param>
711
/// <param name="msgSubject">消息标题</param>
712
/// <param name="msgBody">消息内容</param>
713
/// <param name="systemUserName">系统消息的发送者姓名</param>
714
/// <returns></returns>
715
public static Boolean SendMessage(Int32 fromUserID, Int32 toUserID, String msgSubject, String msgBody, String systemUserName)
716![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
717
SqlParameter[] para = new SqlParameter[5];
718
para[0] = new SqlParameter("@title", SqlDbType.NText);
719
para[0].Value = msgSubject;
720
para[1] = new SqlParameter("@content", SqlDbType.NText);
721
para[1].Value = msgBody;
722
para[2] = new SqlParameter("@toUserID", SqlDbType.Int, 4);
723
para[2].Value = toUserID;
724
para[3] = new SqlParameter("@fromUserID", SqlDbType.Int, 4);
725
para[3].Value = fromUserID;
726
para[4] = new SqlParameter("@systemUserName", SqlDbType.NVarChar, 20);
727
para[4].Value = systemUserName;
728![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
729
if (SqlHelper.ExecuteNonQuery(WebConfig.DBConnectionString, CommandType.StoredProcedure, "pr_Message_Send", para) > 0)
730![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
731
return true;
732
}
733![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
734
return false;
735
}
736![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
737![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
738
/// 发送站内消息 + Email
739
/// </summary>
740
/// <param name="toUserID">收件人ID</param>
741
/// <param name="subject">消息主题</param>
742
/// <param name="body">消息内容</param>
743
/// <returns></returns>
744
public static Boolean SendMailAndMessage(Int32 toUserID, String subject, String body)
745![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
746
return SendMail(toUserID, subject, body) & SendMessage(toUserID, subject, body);
747
}
748![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
749![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
750
/// 清除Word冗余格式
751
/// </summary>
752
/// <param name="str"></param>
753
/// <returns></returns>
754
public static string CleanWordStyle(String str)
755![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
756
StringCollection sc = new StringCollection();
757![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
758
// get rid of unnecessary tag spans (comments and title)
759
sc.Add(@"<!--(\w|\W)+?-->");
760
sc.Add(@"<title>(\w|\W)+?</title>");
761![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
762
// Get rid of classes and styles
763
sc.Add(@"\s?class=\w+");
764
sc.Add(@"\s+style='[^']+'");
765![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
766
// Get rid of unnecessary tags
767
sc.Add(
768
@"<(meta|link|/?o:|/?style|/?st\d|/?head|/?html|body|/?body|/?span|!\[)[^>]*?>");
769![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
770
// Get rid of empty paragraph tags
771
sc.Add(@"(<[^>]+>)+ (</\w+>)+");
772![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
773
// remove bizarre v: element attached to <img> tag
774
sc.Add(@"\s+v:\w+=""[^""]+""");
775![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
776
// remove extra lines
777
sc.Add(@"(\n\r){2,}");
778![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
779
// remove font tags
780
sc.Add(@"</?font.*?>");
781![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
782
// remove font tags
783
sc.Add(@"</?b\W+.*?>");
784![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
785
// remove font tags
786
sc.Add(@"<\?xml.*?>");
787![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
788
foreach (String s in sc)
789![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
790
str = Regex.Replace(str, s, "", RegexOptions.IgnoreCase | RegexOptions.Multiline);
791
}
792![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
793
String pattern = @"<p.*?>";
794
Regex reg = new Regex(pattern, RegexOptions.IgnoreCase | RegexOptions.Multiline);
795
str = reg.Replace(str, "<p>");
796![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
797
pattern = @"<div.*?>";
798
reg = new Regex(pattern, RegexOptions.IgnoreCase | RegexOptions.Multiline);
799
str = reg.Replace(str, "<div>");
800![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
801
return str;
802
}
803![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
804![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
805
/// 检测操作是否已进行,用于限制规定时间内只能进行一次的操作
806
/// </summary>
807
/// <param name="key">用户监测的Cookie、Session键</param>
808
/// <param name="expireTime">下次操作的间隔时间(分钟)</param>
809
/// <param name="userSession">是否启用Session(默认只用Cookie)</param>
810
/// <returns></returns>
811
public static Boolean OperationDone(String key, Int32 expireTime, Boolean userSession)
812![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
813
if (!String.IsNullOrEmpty(CVCookie.Read(key))) //Cookie最省服务器资源,Cookie存在的情况下,直接返回-1,不再继续
814![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
815
return true;
816
}
817![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
818
if (userSession)
819![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
820
if (HttpContext.Current.Session[key] != null)
821![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
822
if (!String.IsNullOrEmpty(HttpContext.Current.Session[key].ToString()))
823![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
824
return true;
825
}
826
}
827
}
828![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
829
//Cookie、Session的默认值
830
String defaultValue = "1";
831![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
832
CVCookie.Set(key, defaultValue, expireTime * 60); //expireTime秒内只能操作一次
833![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
834
if (userSession)
835![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
836
HttpContext.Current.Session.Timeout = expireTime;
837
HttpContext.Current.Session[key] = defaultValue; //用Session可以避免Cookie被删除
838
}
839![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
840
return false;
841
}
842![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
843![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
844
/// 检测操作是否已进行,用于限制规定时间内只能进行一次的操作(Cookie、Session并用)
845
/// </summary>
846
/// <param name="key">用户监测的Cookie、Session键</param>
847
/// <param name="expireTime">下次操作的间隔时间(秒)</param>
848
/// <returns></returns>
849
public static Boolean OperationDone(String key, Int32 expireTime)
850![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
851
return OperationDone(key, expireTime, true);
852
}
853
}
854
}
![None.gif](/Images/OutliningIndicators/None.gif)
2
![None.gif](/Images/OutliningIndicators/None.gif)
3
![None.gif](/Images/OutliningIndicators/None.gif)
4
![None.gif](/Images/OutliningIndicators/None.gif)
5
![None.gif](/Images/OutliningIndicators/None.gif)
6
![None.gif](/Images/OutliningIndicators/None.gif)
7
![None.gif](/Images/OutliningIndicators/None.gif)
8
![None.gif](/Images/OutliningIndicators/None.gif)
9
![None.gif](/Images/OutliningIndicators/None.gif)
10
![None.gif](/Images/OutliningIndicators/None.gif)
11
![None.gif](/Images/OutliningIndicators/None.gif)
12
![None.gif](/Images/OutliningIndicators/None.gif)
13
![None.gif](/Images/OutliningIndicators/None.gif)
14
![None.gif](/Images/OutliningIndicators/None.gif)
15
![None.gif](/Images/OutliningIndicators/None.gif)
16
![None.gif](/Images/OutliningIndicators/None.gif)
17
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![ContractedBlock.gif](/Images/OutliningIndicators/ContractedBlock.gif)
![dot.gif](/Images/dot.gif)
18
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
19
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
20
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
21
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
22
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
23
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
24
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
25
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
26
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
27
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
28
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
29
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
30
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
31
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
32
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
33
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
34
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
35
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
36
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
37
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
38
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
39
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
40
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
41
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
42
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
43
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
44
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
45
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
46
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
47
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
48
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
49
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
50
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
51
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
52
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
53
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
54
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
55
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
56
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
57
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
58
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
59
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
60
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
61
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
62
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
63
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
64
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
65
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
66
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
67
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
68
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
69
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
70
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
71
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
72
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
73
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
74
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
75
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
76
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
77
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
78
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
79
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
80
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
81
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
82
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
83
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
84
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
85
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
86
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
87
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
88
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
89
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
90
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
91
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
92
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
93
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
94
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
95
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
96
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
97
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
98
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
99
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
100
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
101
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
102
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
103
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
104
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
105
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
106
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
107
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
108
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
109
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
110
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
111
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
112
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
113
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
114
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
115
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
116
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
117
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
118
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
119
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
120
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
121
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
122
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
123
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
124
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
125
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
126
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
127
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
128
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
129
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
130
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
131
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
132
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
133
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
134
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
135
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
136
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
137
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
138
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
139
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
140
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
141
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
142
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
143
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
144
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
145
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
146
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
147
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
148
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
149
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
150
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
151
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
152
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
153
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
154
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
155
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
156
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
157
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
158
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
159
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
160
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
161
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
162
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
163
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
164
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
165
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
166
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
167
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
168
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
169
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
170
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
171
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
172
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
173
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
174
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
175
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
176
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
177
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
178
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
179
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
180
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
181
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
182
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
183
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
184
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
185
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
186
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
187
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
188
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
189
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
190
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
191
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
192
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
193
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
194
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
195
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
196
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
197
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
198
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
199
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
200
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
201
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
202
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
203
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
204
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
205
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
206
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
207
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
208
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
209
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
210
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
211
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
212
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
213
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
214
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
215
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
216
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
217
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
218
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
219
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
220
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
221
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
222
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
223
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
224
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
225
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
226
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
227
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
228
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
229
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
230
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
231
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
232
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
233
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
234
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
235
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
236
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
237
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
238
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
239
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
240
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
241
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
242
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
243
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
244
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
245
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
246
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
247
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
248
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
249
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
250
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
251
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
252
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
253
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
254
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
255
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
256
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
257
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
258
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
259
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
260
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
261
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
262
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
263
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
264
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
265
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
266
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
267
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
268
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
269
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
270
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
271
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
272
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
273
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
274
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
275
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
276
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
277
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
278
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
279
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
280
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
281
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
282
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
283
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
284
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
285
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
286
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
287
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
288
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
289
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
290
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
291
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
292
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
293
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
294
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
295
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
296
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
297
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
298
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
299
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
300
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
301
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
302
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
303
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
304
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
305
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
306
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
307
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
308
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
309
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
310
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
311
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
312
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
313
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
314
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
315
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
316
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
317
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
318
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
319
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
320
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
321
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
322
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
323
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
324
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
325
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
326
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
327
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
328
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
329
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
330
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
331
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
332
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
333
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
334
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
335
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
336
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
337
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
338
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
339
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
340
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
341
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
342
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
343
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
344
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
345
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
346
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
347
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
348
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
349
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
350
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
351
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
352
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
353
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
354
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
355
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
356
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
357
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
358
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
359
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
360
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
361
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
362
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
363
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
364
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
365
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
366
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
367
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
368
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
369
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
370
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
371
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
372
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
373
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
374
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
375
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
376
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
377
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
378
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
379
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
380
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
381
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
382
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
383
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
384
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
385
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
386
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
387
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
388
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
389
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
390
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
391
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
392
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
393
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
394
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
395
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
396
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
397
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
398
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
399
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
400
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
401
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
402
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
403
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
404
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
405
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
406
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
407
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
408
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
409
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
410
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
411
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
412
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
413
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
414
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
415
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
416
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
417
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
418
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
419
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
420
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
421
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
422
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
423
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
424
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
425
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
426
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
427
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
428
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
429
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
430
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
431
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
432
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
433
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
434
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
435
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
436
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
437
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
438
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
439
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
440
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
441
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
442
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
443
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
444
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
445
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
446
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
447
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
448
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
449
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
450
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
451
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
452
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
453
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
454
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
455
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
456
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
457
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
458
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
459
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
460
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
461
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
462
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
463
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
464
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
465
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
466
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
467
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
468
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
469
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
470
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
471
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
472
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
473
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
474
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
475
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
476
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
477
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
478
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
479
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
480
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
481
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
482
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
483
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
484
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
485
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
486
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
487
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
488
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
489
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
490
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
491
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
492
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
493
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
494
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
495
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
496
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
497
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
498
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
499
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
500
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
501
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
502
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
503
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
504
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
505
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
506
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
507
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
508
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
509
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
510
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
511
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
512
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
513
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
514
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
515
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
516
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
517
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
518
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
519
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
520
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
521
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
522
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
523
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
524
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
525
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
526
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
527
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
528
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
529
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
530
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
531
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
532
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
533
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
534
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
535
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
536
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
537
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
538
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
539
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
540
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
541
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
542
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
543
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
544
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
545
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
546
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
547
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
548
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
549
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
550
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
551
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
552
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
553
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
554
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
555
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
556
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
557
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
558
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
559
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
560
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
561
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
562
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
563
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
564
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
565
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
566
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
567
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
568
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
569
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
570
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
571
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
572
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
573
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
574
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
575
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
576
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
577
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
578
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
579
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
580
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
581
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
582
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
583
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
584
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
585
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
586
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
587
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
588
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
589
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
590
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
591
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
592
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
593
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
594
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
595
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
596
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
597
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
598
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
599
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
600
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
601
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
602
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
603
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
604
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
605
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
606
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
607
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
608
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
609
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
610
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
611
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
612
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
613
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
614
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
615
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
616
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
617
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
618
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
619
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
620
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
621
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
622
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
623
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
624
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
625
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
626
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
627
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
628
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
629
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
630
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
631
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
632
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
633
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
634
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
635
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
636
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
637
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
638
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
639
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
640
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
641
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
642
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
643
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
644
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
645
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
646
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
647
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
648
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
649
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
650
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
651
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
652
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
653
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
654
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
655
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
656
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
657
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
658
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
659
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
660
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
661
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
662
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
663
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
664
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
665
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
666
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
667
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
668
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
669
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
670
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
671
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
672
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
673
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
674
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
675
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
676
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
677
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
678
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
679
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
680
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
681
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
682
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
683
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
684
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
685
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
686
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
687
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
688
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
689
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
690
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
691
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
692
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
693
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
694
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
695
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
696
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
697
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
698
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
699
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
700
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
701
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
702
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
703
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
704
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
705
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
706
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
707
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
708
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
709
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
710
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
711
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
712
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
713
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
714
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
715
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
716
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
717
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
718
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
719
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
720
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
721
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
722
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
723
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
724
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
725
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
726
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
727
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
728
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
729
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
730
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
731
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
732
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
733
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
734
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
735
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
736
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
737
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
738
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
739
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
740
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
741
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
742
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
743
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
744
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
745
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
746
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
747
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
748
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
749
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
750
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
751
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
752
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
753
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
754
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
755
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
756
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
757
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
758
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
759
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
760
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
761
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
762
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
763
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
764
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
765
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
766
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
767
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
768
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
769
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
770
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
771
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
772
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
773
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
774
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
775
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
776
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
777
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
778
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
779
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
780
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
781
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
782
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
783
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
784
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
785
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
786
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
787
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
788
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
789
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
790
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
791
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
792
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
793
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
794
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
795
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
796
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
797
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
798
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
799
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
800
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
801
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
802
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
803
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
804
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
805
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
806
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
807
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
808
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
809
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
810
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
811
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
812
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
813
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
814
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
815
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
816
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
817
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
818
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
819
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
820
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
821
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
822
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
823
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
824
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
825
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
826
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
827
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
828
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
829
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
830
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
831
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
832
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
833
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
834
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
835
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
836
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
837
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
838
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
839
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
840
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
841
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
842
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
843
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
844
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
845
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
846
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
847
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
848
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
849
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
850
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](/Images/dot.gif)
851
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
852
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
853
![ExpandedSubBlockEnd.gif](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
854
![ExpandedBlockEnd.gif](/Images/OutliningIndicators/ExpandedBlockEnd.gif)