├── packer.jar ├── lib ├── dllmain.cpp ├── CMakeLists.txt ├── pch.cpp ├── framework.h ├── pch.h ├── classes.h ├── loader.h └── jni.h ├── ELoader.h ├── CMakeLists.txt ├── README.md └── ELoader.cpp /packer.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moemoli/eloader/HEAD/packer.jar -------------------------------------------------------------------------------- /lib/dllmain.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moemoli/eloader/HEAD/lib/dllmain.cpp -------------------------------------------------------------------------------- /lib/CMakeLists.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/moemoli/eloader/HEAD/lib/CMakeLists.txt -------------------------------------------------------------------------------- /lib/pch.cpp: -------------------------------------------------------------------------------- 1 | // pch.cpp: 与预编译标头对应的源文件 2 | 3 | #include "pch.h" 4 | 5 | // 当使用预编译的头时,需要使用此源文件,编译才能成功。 6 | -------------------------------------------------------------------------------- /ELoader.h: -------------------------------------------------------------------------------- 1 | // ELoader.h: 标准系统包含文件的包含文件 2 | // 或项目特定的包含文件。 3 | 4 | #pragma once 5 | 6 | #include 7 | 8 | // TODO: 在此处引用程序需要的其他标头。 9 | -------------------------------------------------------------------------------- /lib/framework.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define WIN32_LEAN_AND_MEAN // 从 Windows 头文件中排除极少使用的内容 4 | // Windows 头文件 5 | #include 6 | -------------------------------------------------------------------------------- /CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # CMakeList.txt: ELoader 的 CMake 项目,在此处包括源代码并定义 2 | # 项目特定的逻辑。 3 | # 4 | cmake_minimum_required (VERSION 3.8) 5 | 6 | project ("ELoader") 7 | 8 | # 将源代码添加到此项目的可执行文件。 9 | add_executable (ELoader "ELoader.cpp" "ELoader.h" ) 10 | 11 | ADD_SUBDIRECTORY(lib) 12 | -------------------------------------------------------------------------------- /lib/pch.h: -------------------------------------------------------------------------------- 1 | // pch.h: 这是预编译标头文件。 2 | // 下方列出的文件仅编译一次,提高了将来生成的生成性能。 3 | // 这还将影响 IntelliSense 性能,包括代码完成和许多代码浏览功能。 4 | // 但是,如果此处列出的文件中的任何一个在生成之间有更新,它们全部都将被重新编译。 5 | // 请勿在此处添加要频繁更新的文件,这将使得性能优势无效。 6 | 7 | #ifndef PCH_H 8 | #define PCH_H 9 | 10 | // 添加要在此处预编译的标头 11 | #include "framework.h" 12 | 13 | #endif //PCH_H 14 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ELoader - 一个mod注入工具(从Xenobyte分离) 2 | ### 使用方法: 3 | 将你要注入的mod放在此目录 4 | 5 | 然后打开控制台定位到此目录 6 | 7 | 输入指令: 8 | ```bash 9 | java -jar packer.jar 你mod的文件名称.jar 10 | ``` 11 | 会在此目录生成一个classes.h的文件 12 | 13 | 将此文件放入lib文件夹,然后构建 14 | 15 | 会生成一个out目录 16 | 17 | 打开 out\build\ 并寻找ELoader.exe和eloader_dll.dll 18 | 19 | 将这两个文件放在同一文件夹然后打开ELoader.exe即可自动注入 20 | 21 | 提示: 程序会注入此电脑运行的所有java程序。当电脑没有启动任何java程序时,程序无显示 22 | -------------------------------------------------------------------------------- /lib/classes.h: -------------------------------------------------------------------------------- 1 | unsigned char classes[]={0xCA,0xFE,0xBA,0xBE,0x0,0x0,0x0,0x34,0x0,0x22,0xA,0x0,0x7,0x0,0x13,0x9,0x0,0x14,0x0,0x15,0x8,0x0,0x16,0xA,0x0,0x17,0x0,0x18,0xA,0x0,0x6,0x0, 2 | 0x19,0x7,0x0,0x1A,0x7,0x0,0x1B,0x1,0x0,0x6,0x3C,0x69,0x6E,0x69,0x74,0x3E,0x1,0x0,0x3,0x28,0x29,0x56,0x1,0x0,0x4,0x43,0x6F,0x64,0x65,0x1,0x0,0xF, 3 | 0x4C,0x69,0x6E,0x65,0x4E,0x75,0x6D,0x62,0x65,0x72,0x54,0x61,0x62,0x6C,0x65,0x1,0x0,0x12,0x4C,0x6F,0x63,0x61,0x6C,0x56,0x61,0x72,0x69,0x61,0x62,0x6C,0x65,0x54, 4 | 0x61,0x62,0x6C,0x65,0x1,0x0,0x4,0x74,0x68,0x69,0x73,0x1,0x0,0x1C,0x4C,0x63,0x6E,0x2F,0x6C,0x6C,0x69,0x69,0x6F,0x6F,0x6C,0x6C,0x2F,0x6C,0x6F,0x61,0x64,0x65, 5 | 0x72,0x2F,0x45,0x4C,0x6F,0x61,0x64,0x65,0x72,0x3B,0x1,0x0,0x6,0x6C,0x6F,0x61,0x64,0x65,0x72,0x1,0x0,0x8,0x3C,0x63,0x6C,0x69,0x6E,0x69,0x74,0x3E,0x1,0x0, 6 | 0xA,0x53,0x6F,0x75,0x72,0x63,0x65,0x46,0x69,0x6C,0x65,0x1,0x0,0xC,0x45,0x4C,0x6F,0x61,0x64,0x65,0x72,0x2E,0x6A,0x61,0x76,0x61,0xC,0x0,0x8,0x0,0x9,0x7, 7 | 0x0,0x1C,0xC,0x0,0x1D,0x0,0x1E,0x1,0x0,0x3,0x61,0x77,0x61,0x7,0x0,0x1F,0xC,0x0,0x20,0x0,0x21,0xC,0x0,0xF,0x0,0x9,0x1,0x0,0x1A,0x63,0x6E,0x2F, 8 | 0x6C,0x6C,0x69,0x69,0x6F,0x6F,0x6C,0x6C,0x2F,0x6C,0x6F,0x61,0x64,0x65,0x72,0x2F,0x45,0x4C,0x6F,0x61,0x64,0x65,0x72,0x1,0x0,0x10,0x6A,0x61,0x76,0x61,0x2F,0x6C, 9 | 0x61,0x6E,0x67,0x2F,0x4F,0x62,0x6A,0x65,0x63,0x74,0x1,0x0,0x10,0x6A,0x61,0x76,0x61,0x2F,0x6C,0x61,0x6E,0x67,0x2F,0x53,0x79,0x73,0x74,0x65,0x6D,0x1,0x0,0x3, 10 | 0x6F,0x75,0x74,0x1,0x0,0x15,0x4C,0x6A,0x61,0x76,0x61,0x2F,0x69,0x6F,0x2F,0x50,0x72,0x69,0x6E,0x74,0x53,0x74,0x72,0x65,0x61,0x6D,0x3B,0x1,0x0,0x13,0x6A,0x61, 11 | 0x76,0x61,0x2F,0x69,0x6F,0x2F,0x50,0x72,0x69,0x6E,0x74,0x53,0x74,0x72,0x65,0x61,0x6D,0x1,0x0,0x7,0x70,0x72,0x69,0x6E,0x74,0x6C,0x6E,0x1,0x0,0x15,0x28,0x4C, 12 | 0x6A,0x61,0x76,0x61,0x2F,0x6C,0x61,0x6E,0x67,0x2F,0x53,0x74,0x72,0x69,0x6E,0x67,0x3B,0x29,0x56,0x0,0x21,0x0,0x6,0x0,0x7,0x0,0x0,0x0,0x0,0x0,0x3,0x0, 13 | 0x1,0x0,0x8,0x0,0x9,0x0,0x1,0x0,0xA,0x0,0x0,0x0,0x2F,0x0,0x1,0x0,0x1,0x0,0x0,0x0,0x5,0x2A,0xB7,0x0,0x1,0xB1,0x0,0x0,0x0,0x2,0x0,0xB, 14 | 0x0,0x0,0x0,0x6,0x0,0x1,0x0,0x0,0x0,0x3,0x0,0xC,0x0,0x0,0x0,0xC,0x0,0x1,0x0,0x0,0x0,0x5,0x0,0xD,0x0,0xE,0x0,0x0,0x0,0x9,0x0,0xF, 15 | 0x0,0x9,0x0,0x1,0x0,0xA,0x0,0x0,0x0,0x25,0x0,0x2,0x0,0x0,0x0,0x0,0x0,0x9,0xB2,0x0,0x2,0x12,0x3,0xB6,0x0,0x4,0xB1,0x0,0x0,0x0,0x1,0x0, 16 | 0xB,0x0,0x0,0x0,0xA,0x0,0x2,0x0,0x0,0x0,0x9,0x0,0x8,0x0,0xA,0x0,0x8,0x0,0x10,0x0,0x9,0x0,0x1,0x0,0xA,0x0,0x0,0x0,0x20,0x0,0x0,0x0, 17 | 0x0,0x0,0x0,0x0,0x4,0xB8,0x0,0x5,0xB1,0x0,0x0,0x0,0x1,0x0,0xB,0x0,0x0,0x0,0xA,0x0,0x2,0x0,0x0,0x0,0x5,0x0,0x3,0x0,0x6,0x0,0x1,0x0, 18 | 0x11,0x0,0x0,0x0,0x2,0x0,0x12}; 19 | int classes_sizes[]={551}; 20 | int classes_count=1; 21 | -------------------------------------------------------------------------------- /ELoader.cpp: -------------------------------------------------------------------------------- 1 | // ELoader.cpp: 定义应用程序的入口点。 2 | // 3 | 4 | #include "ELoader.h" 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include 15 | 16 | HANDLE h_token; 17 | HANDLE h_remote_process; 18 | TCHAR msg[MAX_PATH]; 19 | 20 | BOOL inject_dll(LPCSTR dll_path, const DWORD remote_pro_id) { 21 | DWORD path_len = strlen(dll_path) + 1; 22 | SIZE_T write_len; 23 | if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &h_token)) 24 | { 25 | TOKEN_PRIVILEGES tkp; 26 | LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &tkp.Privileges[0].Luid); tkp.PrivilegeCount = 1; tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; 27 | AdjustTokenPrivileges(h_token, FALSE, &tkp, sizeof(tkp), NULL, NULL); 28 | std::cout << "OpenSuccess" << std::endl; 29 | } 30 | if ((h_remote_process = OpenProcess(PROCESS_CREATE_THREAD | PROCESS_VM_OPERATION | PROCESS_VM_WRITE, FALSE, remote_pro_id)) == NULL) 31 | { 32 | std::cout << "OpenError" << std::endl; 33 | return FALSE; 34 | } 35 | char* lib_func_buf; 36 | lib_func_buf = (char*)VirtualAllocEx(h_remote_process, NULL, path_len, MEM_COMMIT, PAGE_READWRITE); 37 | if (lib_func_buf == NULL) { 38 | std::cout << "BufReadError" << std::endl; 39 | return FALSE; 40 | } 41 | 42 | if (WriteProcessMemory(h_remote_process, lib_func_buf, (void*)dll_path, path_len, &write_len) == 0) { 43 | std::cout << "WriteError!" << std::endl; 44 | return FALSE; 45 | } 46 | 47 | if (path_len != write_len) 48 | { 49 | std::cout << "WriteNotFull!" << std::endl; 50 | return FALSE; 51 | } 52 | 53 | PTHREAD_START_ROUTINE load_start_addr = (PTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle(TEXT("Kernel32")), "LoadLibraryA"); 54 | if (load_start_addr == NULL) 55 | { 56 | std::cout << "LoadError" << std::endl; 57 | return FALSE; 58 | } 59 | HANDLE h_remote_thread; 60 | if ((h_remote_thread = CreateRemoteThread(h_remote_process, NULL, 0, load_start_addr, lib_func_buf, 0, NULL)) == NULL) { 61 | std::cout << "InjectError" << std::endl; 62 | return FALSE; 63 | } 64 | return TRUE; 65 | } 66 | 67 | DWORD RejectAllProcess(LPCSTR ProcessName, LPCSTR path) 68 | { 69 | DWORD ProcessId = 0; 70 | HANDLE process = NULL; 71 | process = CreateToolhelp32Snapshot(TH32CS_SNAPALL, ::GetCurrentProcessId()); 72 | PROCESSENTRY32 pe = { sizeof(pe) }; 73 | while (::Process32Next(process, &pe)) 74 | { 75 | if (::lstrcmpi(pe.szExeFile, ProcessName) == 0) 76 | { 77 | ProcessId = pe.th32ProcessID; 78 | std::cout << "SuccessFind: " << ProcessId << std::endl; 79 | std::cout << "Rejectin: " << ProcessId << std::endl; 80 | if (inject_dll(path, ProcessId)) { 81 | std::cout << "Rejectin: " << ProcessId << " success" << std::endl; 82 | } 83 | else { 84 | std::cout << "Rejectin: " << ProcessId << " failed" << std::endl; 85 | } 86 | //MessageBox(NULL,pe.szExeFile,"hello",MB_OK); 87 | } 88 | //MessageBox(NULL,pe.szExeFile,"hello",MB_OK); 89 | } 90 | 91 | return ProcessId; 92 | } 93 | 94 | std::string GetDllDir() 95 | { 96 | char exeFullPath[MAX_PATH]; 97 | std::string strPath = ""; 98 | GetModuleFileName(NULL, exeFullPath, MAX_PATH); 99 | strPath = (std::string)exeFullPath; 100 | int pos = strPath.find_last_of("\\", strPath.length()); 101 | std::string final = strPath.substr(0, pos) + "\\eloader_dll.dll"; 102 | return final; 103 | } 104 | 105 | int main(int argc, char** argv) { 106 | USES_CONVERSION; 107 | 108 | PCSTR processname = "java.exe"; 109 | std::string ws = GetDllDir(); 110 | LPCSTR path = ws.c_str(); 111 | RejectAllProcess(processname,path); 112 | system("pause"); 113 | return 0; 114 | } -------------------------------------------------------------------------------- /lib/loader.h: -------------------------------------------------------------------------------- 1 | #include "jni.h" 2 | 3 | unsigned char class_loader_class[] = { 4 | 0xCA, 0xFE, 0xBA, 0xBE, 0x00, 0x00, 0x00, 0x34, 0x01, 0x45, 0x0A, 0x00, 0x18, 0x00, 0x91, 0x0A, 5 | 0x00, 0x31, 0x00, 0x92, 0x07, 0x00, 0x93, 0x0A, 0x00, 0x03, 0x00, 0x94, 0x07, 0x00, 0x95, 0x07, 6 | 0x00, 0x96, 0x0A, 0x00, 0x06, 0x00, 0x91, 0x08, 0x00, 0x97, 0x0A, 0x00, 0x98, 0x00, 0x99, 0x0A, 7 | 0x00, 0x06, 0x00, 0x9A, 0x09, 0x00, 0x9B, 0x00, 0x9C, 0x08, 0x00, 0x9D, 0x0A, 0x00, 0x06, 0x00, 8 | 0x9E, 0x08, 0x00, 0x9F, 0x0A, 0x00, 0x05, 0x00, 0xA0, 0x08, 0x00, 0xA1, 0x0A, 0x00, 0x05, 0x00, 9 | 0xA2, 0x0A, 0x00, 0x05, 0x00, 0xA3, 0x0A, 0x00, 0x18, 0x00, 0xA4, 0x0B, 0x00, 0xA5, 0x00, 0xA6, 10 | 0x0B, 0x00, 0xA7, 0x00, 0xA8, 0x0B, 0x00, 0xA9, 0x00, 0xAA, 0x0B, 0x00, 0xA9, 0x00, 0xAB, 0x07, 11 | 0x00, 0xAC, 0x0A, 0x00, 0x18, 0x00, 0xAD, 0x0A, 0x00, 0x41, 0x00, 0xAE, 0x0A, 0x00, 0x33, 0x00, 12 | 0xAF, 0x08, 0x00, 0xB0, 0x0A, 0x00, 0x18, 0x00, 0xAF, 0x08, 0x00, 0xB1, 0x08, 0x00, 0xB2, 0x08, 13 | 0x00, 0xB3, 0x0A, 0x00, 0x27, 0x00, 0xB4, 0x08, 0x00, 0xB5, 0x07, 0x00, 0xB6, 0x08, 0x00, 0xB7, 14 | 0x0A, 0x00, 0x23, 0x00, 0xB8, 0x0A, 0x00, 0x6C, 0x00, 0xB9, 0x07, 0x00, 0xBA, 0x08, 0x00, 0xBB, 15 | 0x08, 0x00, 0xBC, 0x0A, 0x00, 0x6C, 0x00, 0xBD, 0x08, 0x00, 0xBE, 0x08, 0x00, 0xBF, 0x08, 0x00, 16 | 0xC0, 0x08, 0x00, 0xC1, 0x08, 0x00, 0xC2, 0x08, 0x00, 0xC3, 0x07, 0x00, 0xC4, 0x08, 0x00, 0xC5, 17 | 0x07, 0x00, 0xC6, 0x07, 0x00, 0xC7, 0x09, 0x00, 0xC8, 0x00, 0xC9, 0x07, 0x00, 0xCA, 0x0A, 0x00, 18 | 0x33, 0x00, 0xCB, 0x0A, 0x00, 0x58, 0x00, 0xCC, 0x08, 0x00, 0xCD, 0x09, 0x00, 0x6C, 0x00, 0xCE, 19 | 0x0A, 0x00, 0x06, 0x00, 0xCF, 0x08, 0x00, 0xD0, 0x07, 0x00, 0xD1, 0x0A, 0x00, 0x3D, 0x00, 0x91, 20 | 0x08, 0x00, 0xD2, 0x08, 0x00, 0xD3, 0x07, 0x00, 0xD4, 0x0A, 0x00, 0xC8, 0x00, 0xD5, 0x0A, 0x00, 21 | 0x33, 0x00, 0xD6, 0x0A, 0x00, 0x58, 0x00, 0xD7, 0x0A, 0x00, 0x33, 0x00, 0xD8, 0x0A, 0x00, 0x33, 22 | 0x00, 0xD9, 0x0A, 0x00, 0x58, 0x00, 0xD8, 0x0A, 0x00, 0x58, 0x00, 0xDA, 0x0A, 0x00, 0x58, 0x00, 23 | 0xDB, 0x0A, 0x00, 0x3D, 0x00, 0xDC, 0x0A, 0x00, 0x23, 0x00, 0xDD, 0x08, 0x00, 0xDE, 0x0A, 0x00, 24 | 0x23, 0x00, 0xDF, 0x08, 0x00, 0xE0, 0x0A, 0x00, 0x3D, 0x00, 0xA8, 0x07, 0x00, 0xE1, 0x08, 0x00, 25 | 0xE2, 0x0A, 0x00, 0x33, 0x00, 0xE3, 0x08, 0x00, 0xE4, 0x08, 0x00, 0xE5, 0x0A, 0x00, 0x06, 0x00, 26 | 0xE6, 0x0A, 0x00, 0x23, 0x00, 0x94, 0x08, 0x00, 0xE7, 0x07, 0x00, 0xE8, 0x08, 0x00, 0xE9, 0x08, 27 | 0x00, 0xEA, 0x07, 0x00, 0xEB, 0x08, 0x00, 0xEC, 0x0A, 0x00, 0x5B, 0x00, 0xED, 0x0A, 0x00, 0x69, 28 | 0x00, 0x94, 0x08, 0x00, 0xEE, 0x08, 0x00, 0xEF, 0x08, 0x00, 0xF0, 0x08, 0x00, 0xF1, 0x08, 0x00, 29 | 0xF2, 0x08, 0x00, 0xF3, 0x08, 0x00, 0xF4, 0x08, 0x00, 0xF5, 0x08, 0x00, 0xF6, 0x08, 0x00, 0xF7, 30 | 0x07, 0x00, 0xF8, 0x0A, 0x00, 0x05, 0x00, 0xF9, 0x0A, 0x00, 0x69, 0x00, 0xDD, 0x07, 0x00, 0xFA, 31 | 0x0A, 0x00, 0x6C, 0x00, 0x91, 0x0A, 0x00, 0x6C, 0x00, 0xFB, 0x01, 0x00, 0x07, 0x63, 0x6C, 0x61, 32 | 0x73, 0x73, 0x65, 0x73, 0x01, 0x00, 0x03, 0x5B, 0x5B, 0x42, 0x01, 0x00, 0x06, 0x3C, 0x69, 0x6E, 33 | 0x69, 0x74, 0x3E, 0x01, 0x00, 0x03, 0x28, 0x29, 0x56, 0x01, 0x00, 0x04, 0x43, 0x6F, 0x64, 0x65, 34 | 0x01, 0x00, 0x0F, 0x4C, 0x69, 0x6E, 0x65, 0x4E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x54, 0x61, 0x62, 35 | 0x6C, 0x65, 0x01, 0x00, 0x0B, 0x74, 0x72, 0x79, 0x47, 0x65, 0x74, 0x43, 0x6C, 0x61, 0x73, 0x73, 36 | 0x01, 0x00, 0x52, 0x28, 0x4C, 0x6A, 0x61, 0x76, 0x61, 0x2F, 0x69, 0x6F, 0x2F, 0x50, 0x72, 0x69, 37 | 0x6E, 0x74, 0x57, 0x72, 0x69, 0x74, 0x65, 0x72, 0x3B, 0x4C, 0x6A, 0x61, 0x76, 0x61, 0x2F, 0x6C, 38 | 0x61, 0x6E, 0x67, 0x2F, 0x43, 0x6C, 0x61, 0x73, 0x73, 0x4C, 0x6F, 0x61, 0x64, 0x65, 0x72, 0x3B, 39 | 0x5B, 0x4C, 0x6A, 0x61, 0x76, 0x61, 0x2F, 0x6C, 0x61, 0x6E, 0x67, 0x2F, 0x53, 0x74, 0x72, 0x69, 40 | 0x6E, 0x67, 0x3B, 0x29, 0x4C, 0x6A, 0x61, 0x76, 0x61, 0x2F, 0x6C, 0x61, 0x6E, 0x67, 0x2F, 0x43, 41 | 0x6C, 0x61, 0x73, 0x73, 0x3B, 0x01, 0x00, 0x0D, 0x53, 0x74, 0x61, 0x63, 0x6B, 0x4D, 0x61, 0x70, 42 | 0x54, 0x61, 0x62, 0x6C, 0x65, 0x07, 0x00, 0x95, 0x07, 0x00, 0xC4, 0x07, 0x00, 0xFC, 0x07, 0x00, 43 | 0x93, 0x07, 0x00, 0xBA, 0x01, 0x00, 0x0A, 0x45, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6F, 0x6E, 44 | 0x73, 0x01, 0x00, 0x03, 0x72, 0x75, 0x6E, 0x07, 0x00, 0xFD, 0x07, 0x00, 0xAC, 0x07, 0x00, 0xFA, 45 | 0x07, 0x00, 0xC6, 0x07, 0x00, 0xE8, 0x07, 0x00, 0xD1, 0x07, 0x00, 0x70, 0x07, 0x00, 0xFE, 0x07, 46 | 0x00, 0xB6, 0x07, 0x00, 0xD4, 0x07, 0x00, 0xEB, 0x07, 0x00, 0xF8, 0x01, 0x00, 0x08, 0x69, 0x6E, 47 | 0x6A, 0x65, 0x63, 0x74, 0x43, 0x50, 0x01, 0x00, 0x06, 0x28, 0x5B, 0x5B, 0x42, 0x29, 0x49, 0x01, 48 | 0x00, 0x0C, 0x67, 0x65, 0x74, 0x42, 0x79, 0x74, 0x65, 0x41, 0x72, 0x72, 0x61, 0x79, 0x01, 0x00, 49 | 0x06, 0x28, 0x49, 0x29, 0x5B, 0x5B, 0x42, 0x01, 0x00, 0x0A, 0x53, 0x6F, 0x75, 0x72, 0x63, 0x65, 50 | 0x46, 0x69, 0x6C, 0x65, 0x01, 0x00, 0x0F, 0x24, 0x50, 0x72, 0x6F, 0x78, 0x79, 0x31, 0x33, 0x33, 51 | 0x37, 0x2E, 0x6A, 0x61, 0x76, 0x61, 0x0C, 0x00, 0x71, 0x00, 0x72, 0x0C, 0x00, 0xFF, 0x01, 0x00, 52 | 0x01, 0x00, 0x20, 0x6A, 0x61, 0x76, 0x61, 0x2F, 0x6C, 0x61, 0x6E, 0x67, 0x2F, 0x43, 0x6C, 0x61, 53 | 0x73, 0x73, 0x4E, 0x6F, 0x74, 0x46, 0x6F, 0x75, 0x6E, 0x64, 0x45, 0x78, 0x63, 0x65, 0x70, 0x74, 54 | 0x69, 0x6F, 0x6E, 0x0C, 0x01, 0x01, 0x01, 0x02, 0x01, 0x00, 0x13, 0x6A, 0x61, 0x76, 0x61, 0x2F, 55 | 0x69, 0x6F, 0x2F, 0x50, 0x72, 0x69, 0x6E, 0x74, 0x57, 0x72, 0x69, 0x74, 0x65, 0x72, 0x01, 0x00, 56 | 0x17, 0x6A, 0x61, 0x76, 0x61, 0x2F, 0x6C, 0x61, 0x6E, 0x67, 0x2F, 0x53, 0x74, 0x72, 0x69, 0x6E, 57 | 0x67, 0x42, 0x75, 0x69, 0x6C, 0x64, 0x65, 0x72, 0x01, 0x00, 0x09, 0x75, 0x73, 0x65, 0x72, 0x2E, 58 | 0x68, 0x6F, 0x6D, 0x65, 0x07, 0x01, 0x03, 0x0C, 0x01, 0x04, 0x01, 0x05, 0x0C, 0x01, 0x06, 0x01, 59 | 0x07, 0x07, 0x01, 0x08, 0x0C, 0x01, 0x09, 0x01, 0x0A, 0x01, 0x00, 0x0F, 0x65, 0x6C, 0x6F, 0x61, 60 | 0x64, 0x65, 0x72, 0x2D, 0x6C, 0x6F, 0x67, 0x2E, 0x74, 0x78, 0x74, 0x0C, 0x01, 0x0B, 0x01, 0x0C, 61 | 0x01, 0x00, 0x05, 0x55, 0x54, 0x46, 0x2D, 0x38, 0x0C, 0x00, 0x71, 0x01, 0x0D, 0x01, 0x00, 0x09, 62 | 0x53, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6E, 0x67, 0x21, 0x0C, 0x01, 0x0E, 0x01, 0x0F, 0x0C, 0x01, 63 | 0x10, 0x00, 0x72, 0x0C, 0x01, 0x11, 0x01, 0x12, 0x07, 0x01, 0x13, 0x0C, 0x01, 0x14, 0x01, 0x15, 64 | 0x07, 0x01, 0x16, 0x0C, 0x01, 0x17, 0x01, 0x18, 0x07, 0x00, 0xFD, 0x0C, 0x01, 0x19, 0x01, 0x1A, 65 | 0x0C, 0x01, 0x1B, 0x01, 0x1C, 0x01, 0x00, 0x10, 0x6A, 0x61, 0x76, 0x61, 0x2F, 0x6C, 0x61, 0x6E, 66 | 0x67, 0x2F, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x0C, 0x01, 0x1D, 0x01, 0x1E, 0x0C, 0x01, 0x1F, 67 | 0x01, 0x20, 0x0C, 0x01, 0x21, 0x01, 0x0C, 0x01, 0x00, 0x08, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 68 | 0x3A, 0x20, 0x01, 0x00, 0x02, 0x20, 0x5B, 0x01, 0x00, 0x01, 0x5D, 0x01, 0x00, 0x11, 0x4C, 0x61, 69 | 0x75, 0x6E, 0x63, 0x68, 0x43, 0x6C, 0x61, 0x73, 0x73, 0x4C, 0x6F, 0x61, 0x64, 0x65, 0x72, 0x0C, 70 | 0x01, 0x22, 0x01, 0x23, 0x01, 0x00, 0x13, 0x52, 0x65, 0x6C, 0x61, 0x75, 0x6E, 0x63, 0x68, 0x43, 71 | 0x6C, 0x61, 0x73, 0x73, 0x4C, 0x6F, 0x61, 0x64, 0x65, 0x72, 0x01, 0x00, 0x13, 0x6A, 0x61, 0x76, 72 | 0x61, 0x2F, 0x6C, 0x61, 0x6E, 0x67, 0x2F, 0x45, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6F, 0x6E, 73 | 0x01, 0x00, 0x13, 0x43, 0x6C, 0x61, 0x73, 0x73, 0x4C, 0x6F, 0x61, 0x64, 0x65, 0x72, 0x20, 0x69, 74 | 0x73, 0x20, 0x6E, 0x75, 0x6C, 0x6C, 0x0C, 0x00, 0x71, 0x01, 0x0F, 0x0C, 0x01, 0x24, 0x01, 0x25, 75 | 0x01, 0x00, 0x10, 0x6A, 0x61, 0x76, 0x61, 0x2F, 0x6C, 0x61, 0x6E, 0x67, 0x2F, 0x53, 0x74, 0x72, 76 | 0x69, 0x6E, 0x67, 0x01, 0x00, 0x24, 0x63, 0x70, 0x77, 0x2E, 0x6D, 0x6F, 0x64, 0x73, 0x2E, 0x66, 77 | 0x6D, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x6D, 0x6F, 0x6E, 0x2E, 0x4D, 0x6F, 0x64, 0x24, 0x45, 0x76, 78 | 0x65, 0x6E, 0x74, 0x48, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x01, 0x00, 0x2E, 0x6E, 0x65, 0x74, 79 | 0x2E, 0x6D, 0x69, 0x6E, 0x65, 0x63, 0x72, 0x61, 0x66, 0x74, 0x66, 0x6F, 0x72, 0x67, 0x65, 0x2E, 80 | 0x66, 0x6D, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x6D, 0x6F, 0x6E, 0x2E, 0x4D, 0x6F, 0x64, 0x24, 0x45, 81 | 0x76, 0x65, 0x6E, 0x74, 0x48, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x0C, 0x00, 0x75, 0x00, 0x76, 82 | 0x01, 0x00, 0x17, 0x63, 0x70, 0x77, 0x2E, 0x6D, 0x6F, 0x64, 0x73, 0x2E, 0x66, 0x6D, 0x6C, 0x2E, 83 | 0x63, 0x6F, 0x6D, 0x6D, 0x6F, 0x6E, 0x2E, 0x4D, 0x6F, 0x64, 0x01, 0x00, 0x21, 0x6E, 0x65, 0x74, 84 | 0x2E, 0x6D, 0x69, 0x6E, 0x65, 0x63, 0x72, 0x61, 0x66, 0x74, 0x66, 0x6F, 0x72, 0x67, 0x65, 0x2E, 85 | 0x66, 0x6D, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x6D, 0x6F, 0x6E, 0x2E, 0x4D, 0x6F, 0x64, 0x01, 0x00, 86 | 0x30, 0x63, 0x70, 0x77, 0x2E, 0x6D, 0x6F, 0x64, 0x73, 0x2E, 0x66, 0x6D, 0x6C, 0x2E, 0x63, 0x6F, 87 | 0x6D, 0x6D, 0x6F, 0x6E, 0x2E, 0x65, 0x76, 0x65, 0x6E, 0x74, 0x2E, 0x46, 0x4D, 0x4C, 0x49, 0x6E, 88 | 0x69, 0x74, 0x69, 0x61, 0x6C, 0x69, 0x7A, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x45, 0x76, 0x65, 0x6E, 89 | 0x74, 0x01, 0x00, 0x3A, 0x6E, 0x65, 0x74, 0x2E, 0x6D, 0x69, 0x6E, 0x65, 0x63, 0x72, 0x61, 0x66, 90 | 0x74, 0x66, 0x6F, 0x72, 0x67, 0x65, 0x2E, 0x66, 0x6D, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x6D, 0x6F, 91 | 0x6E, 0x2E, 0x65, 0x76, 0x65, 0x6E, 0x74, 0x2E, 0x46, 0x4D, 0x4C, 0x49, 0x6E, 0x69, 0x74, 0x69, 92 | 0x61, 0x6C, 0x69, 0x7A, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x45, 0x76, 0x65, 0x6E, 0x74, 0x01, 0x00, 93 | 0x33, 0x63, 0x70, 0x77, 0x2E, 0x6D, 0x6F, 0x64, 0x73, 0x2E, 0x66, 0x6D, 0x6C, 0x2E, 0x63, 0x6F, 94 | 0x6D, 0x6D, 0x6F, 0x6E, 0x2E, 0x65, 0x76, 0x65, 0x6E, 0x74, 0x2E, 0x46, 0x4D, 0x4C, 0x50, 0x72, 95 | 0x65, 0x49, 0x6E, 0x69, 0x74, 0x69, 0x61, 0x6C, 0x69, 0x7A, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x45, 96 | 0x76, 0x65, 0x6E, 0x74, 0x01, 0x00, 0x3D, 0x6E, 0x65, 0x74, 0x2E, 0x6D, 0x69, 0x6E, 0x65, 0x63, 97 | 0x72, 0x61, 0x66, 0x74, 0x66, 0x6F, 0x72, 0x67, 0x65, 0x2E, 0x66, 0x6D, 0x6C, 0x2E, 0x63, 0x6F, 98 | 0x6D, 0x6D, 0x6F, 0x6E, 0x2E, 0x65, 0x76, 0x65, 0x6E, 0x74, 0x2E, 0x46, 0x4D, 0x4C, 0x50, 0x72, 99 | 0x65, 0x49, 0x6E, 0x69, 0x74, 0x69, 0x61, 0x6C, 0x69, 0x7A, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x45, 100 | 0x76, 0x65, 0x6E, 0x74, 0x01, 0x00, 0x15, 0x6A, 0x61, 0x76, 0x61, 0x2F, 0x6C, 0x61, 0x6E, 0x67, 101 | 0x2F, 0x43, 0x6C, 0x61, 0x73, 0x73, 0x4C, 0x6F, 0x61, 0x64, 0x65, 0x72, 0x01, 0x00, 0x0B, 0x64, 102 | 0x65, 0x66, 0x69, 0x6E, 0x65, 0x43, 0x6C, 0x61, 0x73, 0x73, 0x01, 0x00, 0x0F, 0x6A, 0x61, 0x76, 103 | 0x61, 0x2F, 0x6C, 0x61, 0x6E, 0x67, 0x2F, 0x43, 0x6C, 0x61, 0x73, 0x73, 0x01, 0x00, 0x02, 0x5B, 104 | 0x42, 0x07, 0x01, 0x26, 0x0C, 0x01, 0x27, 0x01, 0x28, 0x01, 0x00, 0x1E, 0x6A, 0x61, 0x76, 0x61, 105 | 0x2F, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2F, 0x50, 0x72, 0x6F, 0x74, 0x65, 0x63, 106 | 0x74, 0x69, 0x6F, 0x6E, 0x44, 0x6F, 0x6D, 0x61, 0x69, 0x6E, 0x0C, 0x01, 0x29, 0x01, 0x2A, 0x0C, 107 | 0x01, 0x2B, 0x01, 0x2C, 0x01, 0x00, 0x08, 0x4C, 0x6F, 0x61, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x0C, 108 | 0x00, 0x6F, 0x00, 0x70, 0x0C, 0x01, 0x06, 0x01, 0x2D, 0x01, 0x00, 0x08, 0x20, 0x63, 0x6C, 0x61, 109 | 0x73, 0x73, 0x65, 0x73, 0x01, 0x00, 0x13, 0x6A, 0x61, 0x76, 0x61, 0x2F, 0x75, 0x74, 0x69, 0x6C, 110 | 0x2F, 0x41, 0x72, 0x72, 0x61, 0x79, 0x4C, 0x69, 0x73, 0x74, 0x01, 0x00, 0x11, 0x63, 0x6C, 0x61, 111 | 0x73, 0x73, 0x44, 0x61, 0x74, 0x61, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x75, 0x6C, 0x6C, 0x01, 0x00, 112 | 0x12, 0x67, 0x65, 0x74, 0x43, 0x6C, 0x61, 0x73, 0x73, 0x28, 0x29, 0x20, 0x69, 0x73, 0x20, 0x6E, 113 | 0x75, 0x6C, 0x6C, 0x01, 0x00, 0x10, 0x6A, 0x61, 0x76, 0x61, 0x2F, 0x6C, 0x61, 0x6E, 0x67, 0x2F, 114 | 0x4F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x0C, 0x01, 0x2E, 0x01, 0x2F, 0x0C, 0x01, 0x30, 0x01, 0x31, 115 | 0x0C, 0x01, 0x32, 0x01, 0x33, 0x0C, 0x01, 0x34, 0x01, 0x35, 0x0C, 0x01, 0x36, 0x01, 0x37, 0x0C, 116 | 0x01, 0x38, 0x01, 0x39, 0x0C, 0x01, 0x3A, 0x01, 0x3B, 0x0C, 0x01, 0x3C, 0x01, 0x3D, 0x0C, 0x01, 117 | 0x01, 0x00, 0x72, 0x01, 0x00, 0x18, 0x45, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x20, 118 | 0x6F, 0x6E, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x43, 0x6C, 0x61, 0x73, 0x73, 0x0C, 0x00, 119 | 0x71, 0x01, 0x3E, 0x01, 0x00, 0x14, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x65, 0x64, 0x20, 0x73, 0x75, 120 | 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6C, 0x6C, 0x79, 0x01, 0x00, 0x13, 0x5B, 0x4C, 0x6A, 121 | 0x61, 0x76, 0x61, 0x2F, 0x6C, 0x61, 0x6E, 0x67, 0x2F, 0x4F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x3B, 122 | 0x01, 0x00, 0x0B, 0x49, 0x6E, 0x73, 0x74, 0x61, 0x6E, 0x63, 0x69, 0x6E, 0x67, 0x20, 0x0C, 0x01, 123 | 0x3F, 0x01, 0x1C, 0x01, 0x00, 0x09, 0x49, 0x6E, 0x73, 0x74, 0x61, 0x6E, 0x63, 0x65, 0x64, 0x01, 124 | 0x00, 0x1B, 0x47, 0x65, 0x6E, 0x65, 0x78, 0x65, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x6E, 125 | 0x20, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6E, 0x63, 0x69, 0x6E, 0x67, 0x3A, 0x20, 0x0C, 0x01, 0x06, 126 | 0x01, 0x40, 0x01, 0x00, 0x17, 0x45, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 127 | 0x6E, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6E, 0x63, 0x69, 0x6E, 0x67, 0x01, 0x00, 0x18, 0x6A, 128 | 0x61, 0x76, 0x61, 0x2F, 0x6C, 0x61, 0x6E, 0x67, 0x2F, 0x72, 0x65, 0x66, 0x6C, 0x65, 0x63, 0x74, 129 | 0x2F, 0x4D, 0x65, 0x74, 0x68, 0x6F, 0x64, 0x01, 0x00, 0x0B, 0x50, 0x72, 0x65, 0x69, 0x6E, 0x69, 130 | 0x74, 0x69, 0x6E, 0x67, 0x20, 0x01, 0x00, 0x09, 0x50, 0x72, 0x65, 0x69, 0x6E, 0x69, 0x74, 0x65, 131 | 0x64, 0x01, 0x00, 0x2B, 0x6A, 0x61, 0x76, 0x61, 0x2F, 0x6C, 0x61, 0x6E, 0x67, 0x2F, 0x72, 0x65, 132 | 0x66, 0x6C, 0x65, 0x63, 0x74, 0x2F, 0x49, 0x6E, 0x76, 0x6F, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 133 | 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x45, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x01, 134 | 0x00, 0x29, 0x49, 0x6E, 0x76, 0x6F, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x54, 0x61, 0x72, 0x67, 135 | 0x65, 0x74, 0x45, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x6E, 0x20, 0x70, 136 | 0x72, 0x65, 0x69, 0x6E, 0x69, 0x74, 0x69, 0x6E, 0x67, 0x3A, 0x20, 0x0C, 0x01, 0x41, 0x01, 0x42, 137 | 0x01, 0x00, 0x33, 0x45, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x6E, 0x20, 138 | 0x70, 0x72, 0x65, 0x69, 0x6E, 0x69, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x28, 0x49, 0x6E, 0x76, 0x6F, 139 | 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x45, 0x78, 0x63, 0x65, 140 | 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x29, 0x01, 0x00, 0x1B, 0x47, 0x65, 0x6E, 0x65, 0x78, 0x65, 0x70, 141 | 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x6E, 0x20, 0x70, 0x72, 0x65, 0x69, 0x6E, 0x69, 0x74, 0x69, 142 | 0x6E, 0x67, 0x3A, 0x20, 0x01, 0x00, 0x17, 0x45, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6F, 0x6E, 143 | 0x20, 0x6F, 0x6E, 0x20, 0x70, 0x72, 0x65, 0x69, 0x6E, 0x69, 0x74, 0x69, 0x6E, 0x67, 0x01, 0x00, 144 | 0x08, 0x49, 0x6E, 0x69, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x01, 0x00, 0x06, 0x49, 0x6E, 0x69, 0x74, 145 | 0x65, 0x64, 0x01, 0x00, 0x26, 0x49, 0x6E, 0x76, 0x6F, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x54, 146 | 0x61, 0x72, 0x67, 0x65, 0x74, 0x45, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 147 | 0x6E, 0x20, 0x69, 0x6E, 0x69, 0x74, 0x69, 0x6E, 0x67, 0x3A, 0x20, 0x01, 0x00, 0x30, 0x45, 0x78, 148 | 0x63, 0x65, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x6E, 0x20, 0x69, 0x6E, 0x69, 0x74, 0x69, 149 | 0x6E, 0x67, 0x20, 0x28, 0x49, 0x6E, 0x76, 0x6F, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x54, 0x61, 150 | 0x72, 0x67, 0x65, 0x74, 0x45, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x29, 0x01, 0x00, 151 | 0x18, 0x47, 0x65, 0x6E, 0x65, 0x78, 0x65, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x6E, 0x20, 152 | 0x69, 0x6E, 0x69, 0x74, 0x69, 0x6E, 0x67, 0x3A, 0x20, 0x01, 0x00, 0x14, 0x45, 0x78, 0x63, 0x65, 153 | 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x6E, 0x20, 0x69, 0x6E, 0x69, 0x74, 0x69, 0x6E, 0x67, 154 | 0x01, 0x00, 0x15, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6C, 0x6C, 0x79, 0x20, 155 | 0x69, 0x6E, 0x6A, 0x65, 0x63, 0x74, 0x65, 0x64, 0x01, 0x00, 0x13, 0x6A, 0x61, 0x76, 0x61, 0x2F, 156 | 0x6C, 0x61, 0x6E, 0x67, 0x2F, 0x54, 0x68, 0x72, 0x6F, 0x77, 0x61, 0x62, 0x6C, 0x65, 0x0C, 0x01, 157 | 0x43, 0x00, 0x72, 0x01, 0x00, 0x18, 0x63, 0x6F, 0x6D, 0x2F, 0x73, 0x75, 0x6E, 0x2F, 0x70, 0x72, 158 | 0x6F, 0x78, 0x79, 0x2F, 0x24, 0x50, 0x72, 0x6F, 0x78, 0x79, 0x31, 0x33, 0x33, 0x37, 0x0C, 0x01, 159 | 0x44, 0x00, 0x72, 0x01, 0x00, 0x13, 0x5B, 0x4C, 0x6A, 0x61, 0x76, 0x61, 0x2F, 0x6C, 0x61, 0x6E, 160 | 0x67, 0x2F, 0x53, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x3B, 0x01, 0x00, 0x12, 0x6A, 0x61, 0x76, 0x61, 161 | 0x2F, 0x75, 0x74, 0x69, 0x6C, 0x2F, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6F, 0x72, 0x01, 0x00, 162 | 0x1B, 0x5B, 0x4C, 0x6A, 0x61, 0x76, 0x61, 0x2F, 0x6C, 0x61, 0x6E, 0x67, 0x2F, 0x72, 0x65, 0x66, 163 | 0x6C, 0x65, 0x63, 0x74, 0x2F, 0x4D, 0x65, 0x74, 0x68, 0x6F, 0x64, 0x3B, 0x01, 0x00, 0x09, 0x6C, 164 | 0x6F, 0x61, 0x64, 0x43, 0x6C, 0x61, 0x73, 0x73, 0x01, 0x00, 0x25, 0x28, 0x4C, 0x6A, 0x61, 0x76, 165 | 0x61, 0x2F, 0x6C, 0x61, 0x6E, 0x67, 0x2F, 0x53, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x3B, 0x29, 0x4C, 166 | 0x6A, 0x61, 0x76, 0x61, 0x2F, 0x6C, 0x61, 0x6E, 0x67, 0x2F, 0x43, 0x6C, 0x61, 0x73, 0x73, 0x3B, 167 | 0x01, 0x00, 0x0F, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x53, 0x74, 0x61, 0x63, 0x6B, 0x54, 0x72, 0x61, 168 | 0x63, 0x65, 0x01, 0x00, 0x18, 0x28, 0x4C, 0x6A, 0x61, 0x76, 0x61, 0x2F, 0x69, 0x6F, 0x2F, 0x50, 169 | 0x72, 0x69, 0x6E, 0x74, 0x57, 0x72, 0x69, 0x74, 0x65, 0x72, 0x3B, 0x29, 0x56, 0x01, 0x00, 0x10, 170 | 0x6A, 0x61, 0x76, 0x61, 0x2F, 0x6C, 0x61, 0x6E, 0x67, 0x2F, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6D, 171 | 0x01, 0x00, 0x0B, 0x67, 0x65, 0x74, 0x50, 0x72, 0x6F, 0x70, 0x65, 0x72, 0x74, 0x79, 0x01, 0x00, 172 | 0x26, 0x28, 0x4C, 0x6A, 0x61, 0x76, 0x61, 0x2F, 0x6C, 0x61, 0x6E, 0x67, 0x2F, 0x53, 0x74, 0x72, 173 | 0x69, 0x6E, 0x67, 0x3B, 0x29, 0x4C, 0x6A, 0x61, 0x76, 0x61, 0x2F, 0x6C, 0x61, 0x6E, 0x67, 0x2F, 174 | 0x53, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x3B, 0x01, 0x00, 0x06, 0x61, 0x70, 0x70, 0x65, 0x6E, 0x64, 175 | 0x01, 0x00, 0x2D, 0x28, 0x4C, 0x6A, 0x61, 0x76, 0x61, 0x2F, 0x6C, 0x61, 0x6E, 0x67, 0x2F, 0x53, 176 | 0x74, 0x72, 0x69, 0x6E, 0x67, 0x3B, 0x29, 0x4C, 0x6A, 0x61, 0x76, 0x61, 0x2F, 0x6C, 0x61, 0x6E, 177 | 0x67, 0x2F, 0x53, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x42, 0x75, 0x69, 0x6C, 0x64, 0x65, 0x72, 0x3B, 178 | 0x01, 0x00, 0x0C, 0x6A, 0x61, 0x76, 0x61, 0x2F, 0x69, 0x6F, 0x2F, 0x46, 0x69, 0x6C, 0x65, 0x01, 179 | 0x00, 0x09, 0x73, 0x65, 0x70, 0x61, 0x72, 0x61, 0x74, 0x6F, 0x72, 0x01, 0x00, 0x12, 0x4C, 0x6A, 180 | 0x61, 0x76, 0x61, 0x2F, 0x6C, 0x61, 0x6E, 0x67, 0x2F, 0x53, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x3B, 181 | 0x01, 0x00, 0x08, 0x74, 0x6F, 0x53, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x01, 0x00, 0x14, 0x28, 0x29, 182 | 0x4C, 0x6A, 0x61, 0x76, 0x61, 0x2F, 0x6C, 0x61, 0x6E, 0x67, 0x2F, 0x53, 0x74, 0x72, 0x69, 0x6E, 183 | 0x67, 0x3B, 0x01, 0x00, 0x27, 0x28, 0x4C, 0x6A, 0x61, 0x76, 0x61, 0x2F, 0x6C, 0x61, 0x6E, 0x67, 184 | 0x2F, 0x53, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x3B, 0x4C, 0x6A, 0x61, 0x76, 0x61, 0x2F, 0x6C, 0x61, 185 | 0x6E, 0x67, 0x2F, 0x53, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x3B, 0x29, 0x56, 0x01, 0x00, 0x07, 0x70, 186 | 0x72, 0x69, 0x6E, 0x74, 0x6C, 0x6E, 0x01, 0x00, 0x15, 0x28, 0x4C, 0x6A, 0x61, 0x76, 0x61, 0x2F, 187 | 0x6C, 0x61, 0x6E, 0x67, 0x2F, 0x53, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x3B, 0x29, 0x56, 0x01, 0x00, 188 | 0x05, 0x66, 0x6C, 0x75, 0x73, 0x68, 0x01, 0x00, 0x11, 0x67, 0x65, 0x74, 0x41, 0x6C, 0x6C, 0x53, 189 | 0x74, 0x61, 0x63, 0x6B, 0x54, 0x72, 0x61, 0x63, 0x65, 0x73, 0x01, 0x00, 0x11, 0x28, 0x29, 0x4C, 190 | 0x6A, 0x61, 0x76, 0x61, 0x2F, 0x75, 0x74, 0x69, 0x6C, 0x2F, 0x4D, 0x61, 0x70, 0x3B, 0x01, 0x00, 191 | 0x0D, 0x6A, 0x61, 0x76, 0x61, 0x2F, 0x75, 0x74, 0x69, 0x6C, 0x2F, 0x4D, 0x61, 0x70, 0x01, 0x00, 192 | 0x06, 0x6B, 0x65, 0x79, 0x53, 0x65, 0x74, 0x01, 0x00, 0x11, 0x28, 0x29, 0x4C, 0x6A, 0x61, 0x76, 193 | 0x61, 0x2F, 0x75, 0x74, 0x69, 0x6C, 0x2F, 0x53, 0x65, 0x74, 0x3B, 0x01, 0x00, 0x0D, 0x6A, 0x61, 194 | 0x76, 0x61, 0x2F, 0x75, 0x74, 0x69, 0x6C, 0x2F, 0x53, 0x65, 0x74, 0x01, 0x00, 0x08, 0x69, 0x74, 195 | 0x65, 0x72, 0x61, 0x74, 0x6F, 0x72, 0x01, 0x00, 0x16, 0x28, 0x29, 0x4C, 0x6A, 0x61, 0x76, 0x61, 196 | 0x2F, 0x75, 0x74, 0x69, 0x6C, 0x2F, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6F, 0x72, 0x3B, 0x01, 197 | 0x00, 0x07, 0x68, 0x61, 0x73, 0x4E, 0x65, 0x78, 0x74, 0x01, 0x00, 0x03, 0x28, 0x29, 0x5A, 0x01, 198 | 0x00, 0x04, 0x6E, 0x65, 0x78, 0x74, 0x01, 0x00, 0x14, 0x28, 0x29, 0x4C, 0x6A, 0x61, 0x76, 0x61, 199 | 0x2F, 0x6C, 0x61, 0x6E, 0x67, 0x2F, 0x4F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x3B, 0x01, 0x00, 0x15, 200 | 0x67, 0x65, 0x74, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x78, 0x74, 0x43, 0x6C, 0x61, 0x73, 0x73, 0x4C, 201 | 0x6F, 0x61, 0x64, 0x65, 0x72, 0x01, 0x00, 0x19, 0x28, 0x29, 0x4C, 0x6A, 0x61, 0x76, 0x61, 0x2F, 202 | 0x6C, 0x61, 0x6E, 0x67, 0x2F, 0x43, 0x6C, 0x61, 0x73, 0x73, 0x4C, 0x6F, 0x61, 0x64, 0x65, 0x72, 203 | 0x3B, 0x01, 0x00, 0x08, 0x67, 0x65, 0x74, 0x43, 0x6C, 0x61, 0x73, 0x73, 0x01, 0x00, 0x13, 0x28, 204 | 0x29, 0x4C, 0x6A, 0x61, 0x76, 0x61, 0x2F, 0x6C, 0x61, 0x6E, 0x67, 0x2F, 0x43, 0x6C, 0x61, 0x73, 205 | 0x73, 0x3B, 0x01, 0x00, 0x07, 0x67, 0x65, 0x74, 0x4E, 0x61, 0x6D, 0x65, 0x01, 0x00, 0x08, 0x63, 206 | 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x73, 0x01, 0x00, 0x1B, 0x28, 0x4C, 0x6A, 0x61, 0x76, 0x61, 207 | 0x2F, 0x6C, 0x61, 0x6E, 0x67, 0x2F, 0x43, 0x68, 0x61, 0x72, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6E, 208 | 0x63, 0x65, 0x3B, 0x29, 0x5A, 0x01, 0x00, 0x15, 0x73, 0x65, 0x74, 0x43, 0x6F, 0x6E, 0x74, 0x65, 209 | 0x78, 0x74, 0x43, 0x6C, 0x61, 0x73, 0x73, 0x4C, 0x6F, 0x61, 0x64, 0x65, 0x72, 0x01, 0x00, 0x1A, 210 | 0x28, 0x4C, 0x6A, 0x61, 0x76, 0x61, 0x2F, 0x6C, 0x61, 0x6E, 0x67, 0x2F, 0x43, 0x6C, 0x61, 0x73, 211 | 0x73, 0x4C, 0x6F, 0x61, 0x64, 0x65, 0x72, 0x3B, 0x29, 0x56, 0x01, 0x00, 0x11, 0x6A, 0x61, 0x76, 212 | 0x61, 0x2F, 0x6C, 0x61, 0x6E, 0x67, 0x2F, 0x49, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x01, 0x00, 213 | 0x04, 0x54, 0x59, 0x50, 0x45, 0x01, 0x00, 0x11, 0x4C, 0x6A, 0x61, 0x76, 0x61, 0x2F, 0x6C, 0x61, 214 | 0x6E, 0x67, 0x2F, 0x43, 0x6C, 0x61, 0x73, 0x73, 0x3B, 0x01, 0x00, 0x11, 0x67, 0x65, 0x74, 0x44, 215 | 0x65, 0x63, 0x6C, 0x61, 0x72, 0x65, 0x64, 0x4D, 0x65, 0x74, 0x68, 0x6F, 0x64, 0x01, 0x00, 0x40, 216 | 0x28, 0x4C, 0x6A, 0x61, 0x76, 0x61, 0x2F, 0x6C, 0x61, 0x6E, 0x67, 0x2F, 0x53, 0x74, 0x72, 0x69, 217 | 0x6E, 0x67, 0x3B, 0x5B, 0x4C, 0x6A, 0x61, 0x76, 0x61, 0x2F, 0x6C, 0x61, 0x6E, 0x67, 0x2F, 0x43, 218 | 0x6C, 0x61, 0x73, 0x73, 0x3B, 0x29, 0x4C, 0x6A, 0x61, 0x76, 0x61, 0x2F, 0x6C, 0x61, 0x6E, 0x67, 219 | 0x2F, 0x72, 0x65, 0x66, 0x6C, 0x65, 0x63, 0x74, 0x2F, 0x4D, 0x65, 0x74, 0x68, 0x6F, 0x64, 0x3B, 220 | 0x01, 0x00, 0x0D, 0x73, 0x65, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x69, 0x62, 0x6C, 0x65, 221 | 0x01, 0x00, 0x04, 0x28, 0x5A, 0x29, 0x56, 0x01, 0x00, 0x1C, 0x28, 0x49, 0x29, 0x4C, 0x6A, 0x61, 222 | 0x76, 0x61, 0x2F, 0x6C, 0x61, 0x6E, 0x67, 0x2F, 0x53, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x42, 0x75, 223 | 0x69, 0x6C, 0x64, 0x65, 0x72, 0x3B, 0x01, 0x00, 0x07, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x4F, 0x66, 224 | 0x01, 0x00, 0x16, 0x28, 0x49, 0x29, 0x4C, 0x6A, 0x61, 0x76, 0x61, 0x2F, 0x6C, 0x61, 0x6E, 0x67, 225 | 0x2F, 0x49, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x3B, 0x01, 0x00, 0x13, 0x67, 0x65, 0x74, 0x50, 226 | 0x72, 0x6F, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x44, 0x6F, 0x6D, 0x61, 0x69, 0x6E, 0x01, 227 | 0x00, 0x22, 0x28, 0x29, 0x4C, 0x6A, 0x61, 0x76, 0x61, 0x2F, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 228 | 0x74, 0x79, 0x2F, 0x50, 0x72, 0x6F, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x44, 0x6F, 0x6D, 229 | 0x61, 0x69, 0x6E, 0x3B, 0x01, 0x00, 0x06, 0x69, 0x6E, 0x76, 0x6F, 0x6B, 0x65, 0x01, 0x00, 0x39, 230 | 0x28, 0x4C, 0x6A, 0x61, 0x76, 0x61, 0x2F, 0x6C, 0x61, 0x6E, 0x67, 0x2F, 0x4F, 0x62, 0x6A, 0x65, 231 | 0x63, 0x74, 0x3B, 0x5B, 0x4C, 0x6A, 0x61, 0x76, 0x61, 0x2F, 0x6C, 0x61, 0x6E, 0x67, 0x2F, 0x4F, 232 | 0x62, 0x6A, 0x65, 0x63, 0x74, 0x3B, 0x29, 0x4C, 0x6A, 0x61, 0x76, 0x61, 0x2F, 0x6C, 0x61, 0x6E, 233 | 0x67, 0x2F, 0x4F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x3B, 0x01, 0x00, 0x0D, 0x67, 0x65, 0x74, 0x41, 234 | 0x6E, 0x6E, 0x6F, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x01, 0x00, 0x34, 0x28, 0x4C, 0x6A, 0x61, 235 | 0x76, 0x61, 0x2F, 0x6C, 0x61, 0x6E, 0x67, 0x2F, 0x43, 0x6C, 0x61, 0x73, 0x73, 0x3B, 0x29, 0x4C, 236 | 0x6A, 0x61, 0x76, 0x61, 0x2F, 0x6C, 0x61, 0x6E, 0x67, 0x2F, 0x61, 0x6E, 0x6E, 0x6F, 0x74, 0x61, 237 | 0x74, 0x69, 0x6F, 0x6E, 0x2F, 0x41, 0x6E, 0x6E, 0x6F, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x3B, 238 | 0x01, 0x00, 0x12, 0x67, 0x65, 0x74, 0x44, 0x65, 0x63, 0x6C, 0x61, 0x72, 0x65, 0x64, 0x4D, 0x65, 239 | 0x74, 0x68, 0x6F, 0x64, 0x73, 0x01, 0x00, 0x1D, 0x28, 0x29, 0x5B, 0x4C, 0x6A, 0x61, 0x76, 0x61, 240 | 0x2F, 0x6C, 0x61, 0x6E, 0x67, 0x2F, 0x72, 0x65, 0x66, 0x6C, 0x65, 0x63, 0x74, 0x2F, 0x4D, 0x65, 241 | 0x74, 0x68, 0x6F, 0x64, 0x3B, 0x01, 0x00, 0x11, 0x67, 0x65, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6D, 242 | 0x65, 0x74, 0x65, 0x72, 0x43, 0x6F, 0x75, 0x6E, 0x74, 0x01, 0x00, 0x03, 0x28, 0x29, 0x49, 0x01, 243 | 0x00, 0x11, 0x67, 0x65, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6D, 0x65, 0x74, 0x65, 0x72, 0x54, 0x79, 244 | 0x70, 0x65, 0x73, 0x01, 0x00, 0x14, 0x28, 0x29, 0x5B, 0x4C, 0x6A, 0x61, 0x76, 0x61, 0x2F, 0x6C, 245 | 0x61, 0x6E, 0x67, 0x2F, 0x43, 0x6C, 0x61, 0x73, 0x73, 0x3B, 0x01, 0x00, 0x03, 0x61, 0x64, 0x64, 246 | 0x01, 0x00, 0x15, 0x28, 0x4C, 0x6A, 0x61, 0x76, 0x61, 0x2F, 0x6C, 0x61, 0x6E, 0x67, 0x2F, 0x4F, 247 | 0x62, 0x6A, 0x65, 0x63, 0x74, 0x3B, 0x29, 0x5A, 0x01, 0x00, 0x2A, 0x28, 0x4C, 0x6A, 0x61, 0x76, 248 | 0x61, 0x2F, 0x6C, 0x61, 0x6E, 0x67, 0x2F, 0x53, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x3B, 0x4C, 0x6A, 249 | 0x61, 0x76, 0x61, 0x2F, 0x6C, 0x61, 0x6E, 0x67, 0x2F, 0x54, 0x68, 0x72, 0x6F, 0x77, 0x61, 0x62, 250 | 0x6C, 0x65, 0x3B, 0x29, 0x56, 0x01, 0x00, 0x0B, 0x6E, 0x65, 0x77, 0x49, 0x6E, 0x73, 0x74, 0x61, 251 | 0x6E, 0x63, 0x65, 0x01, 0x00, 0x2D, 0x28, 0x4C, 0x6A, 0x61, 0x76, 0x61, 0x2F, 0x6C, 0x61, 0x6E, 252 | 0x67, 0x2F, 0x4F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x3B, 0x29, 0x4C, 0x6A, 0x61, 0x76, 0x61, 0x2F, 253 | 0x6C, 0x61, 0x6E, 0x67, 0x2F, 0x53, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x42, 0x75, 0x69, 0x6C, 0x64, 254 | 0x65, 0x72, 0x3B, 0x01, 0x00, 0x08, 0x67, 0x65, 0x74, 0x43, 0x61, 0x75, 0x73, 0x65, 0x01, 0x00, 255 | 0x17, 0x28, 0x29, 0x4C, 0x6A, 0x61, 0x76, 0x61, 0x2F, 0x6C, 0x61, 0x6E, 0x67, 0x2F, 0x54, 0x68, 256 | 0x72, 0x6F, 0x77, 0x61, 0x62, 0x6C, 0x65, 0x3B, 0x01, 0x00, 0x05, 0x63, 0x6C, 0x6F, 0x73, 0x65, 257 | 0x01, 0x00, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x00, 0x21, 0x00, 0x6C, 0x00, 0x18, 0x00, 0x00, 258 | 0x00, 0x01, 0x00, 0x09, 0x00, 0x6F, 0x00, 0x70, 0x00, 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x71, 259 | 0x00, 0x72, 0x00, 0x01, 0x00, 0x73, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 260 | 0x00, 0x05, 0x2A, 0xB7, 0x00, 0x01, 0xB1, 0x00, 0x00, 0x00, 0x01, 0x00, 0x74, 0x00, 0x00, 0x00, 261 | 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x8A, 0x00, 0x75, 0x00, 0x76, 0x00, 0x02, 0x00, 262 | 0x73, 0x00, 0x00, 0x00, 0xC2, 0x00, 0x02, 0x00, 0x09, 0x00, 0x00, 0x00, 0x35, 0x01, 0x4E, 0x2C, 263 | 0x3A, 0x04, 0x19, 0x04, 0xBE, 0x36, 0x05, 0x03, 0x36, 0x06, 0x15, 0x06, 0x15, 0x05, 0xA2, 0x00, 264 | 0x22, 0x19, 0x04, 0x15, 0x06, 0x32, 0x3A, 0x07, 0x2B, 0x19, 0x07, 0xB6, 0x00, 0x02, 0xB0, 0x3A, 265 | 0x08, 0x19, 0x08, 0x2A, 0xB6, 0x00, 0x04, 0x19, 0x08, 0x4E, 0x84, 0x06, 0x01, 0xA7, 0xFF, 0xDD, 266 | 0x2D, 0xBF, 0x00, 0x01, 0x00, 0x1B, 0x00, 0x21, 0x00, 0x22, 0x00, 0x03, 0x00, 0x02, 0x00, 0x74, 267 | 0x00, 0x00, 0x00, 0x22, 0x00, 0x08, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x12, 0x00, 0x1B, 268 | 0x00, 0x14, 0x00, 0x22, 0x00, 0x15, 0x00, 0x24, 0x00, 0x16, 0x00, 0x2A, 0x00, 0x17, 0x00, 0x2D, 269 | 0x00, 0x12, 0x00, 0x33, 0x00, 0x1A, 0x00, 0x77, 0x00, 0x00, 0x00, 0x4B, 0x00, 0x03, 0xFF, 0x00, 270 | 0x0D, 0x00, 0x07, 0x07, 0x00, 0x78, 0x07, 0x00, 0x79, 0x07, 0x00, 0x7A, 0x07, 0x00, 0x7B, 0x07, 271 | 0x00, 0x7A, 0x01, 0x01, 0x00, 0x00, 0xFF, 0x00, 0x14, 0x00, 0x08, 0x07, 0x00, 0x78, 0x07, 0x00, 272 | 0x79, 0x07, 0x00, 0x7A, 0x07, 0x00, 0x7B, 0x07, 0x00, 0x7A, 0x01, 0x01, 0x07, 0x00, 0x7C, 0x00, 273 | 0x01, 0x07, 0x00, 0x7B, 0xFF, 0x00, 0x10, 0x00, 0x04, 0x07, 0x00, 0x78, 0x07, 0x00, 0x79, 0x07, 274 | 0x00, 0x7A, 0x07, 0x00, 0x7B, 0x00, 0x00, 0x00, 0x7D, 0x00, 0x00, 0x00, 0x04, 0x00, 0x01, 0x00, 275 | 0x03, 0x00, 0x01, 0x00, 0x7E, 0x00, 0x72, 0x00, 0x01, 0x00, 0x73, 0x00, 0x00, 0x09, 0x69, 0x00, 276 | 0x06, 0x00, 0x15, 0x00, 0x00, 0x05, 0x37, 0xBB, 0x00, 0x05, 0x59, 0xBB, 0x00, 0x06, 0x59, 0xB7, 277 | 0x00, 0x07, 0x12, 0x08, 0xB8, 0x00, 0x09, 0xB6, 0x00, 0x0A, 0xB2, 0x00, 0x0B, 0xB6, 0x00, 0x0A, 278 | 0x12, 0x0C, 0xB6, 0x00, 0x0A, 0xB6, 0x00, 0x0D, 0x12, 0x0E, 0xB7, 0x00, 0x0F, 0x4C, 0x2B, 0x12, 279 | 0x10, 0xB6, 0x00, 0x11, 0x2B, 0xB6, 0x00, 0x12, 0x01, 0x4D, 0xB8, 0x00, 0x13, 0xB9, 0x00, 0x14, 280 | 0x01, 0x00, 0xB9, 0x00, 0x15, 0x01, 0x00, 0x4E, 0x2D, 0xB9, 0x00, 0x16, 0x01, 0x00, 0x99, 0x00, 281 | 0x8C, 0x2D, 0xB9, 0x00, 0x17, 0x01, 0x00, 0xC0, 0x00, 0x18, 0x3A, 0x04, 0x19, 0x04, 0xC6, 0xFF, 282 | 0xEA, 0x19, 0x04, 0xB6, 0x00, 0x19, 0xC6, 0xFF, 0xE2, 0x19, 0x04, 0xB6, 0x00, 0x19, 0x59, 0x3A, 283 | 0x05, 0xB6, 0x00, 0x1A, 0xC6, 0xFF, 0xD4, 0x19, 0x05, 0xB6, 0x00, 0x1A, 0xB6, 0x00, 0x1B, 0xC7, 284 | 0x00, 0x06, 0xA7, 0xFF, 0xC6, 0x19, 0x05, 0xB6, 0x00, 0x1A, 0xB6, 0x00, 0x1B, 0x3A, 0x06, 0x2B, 285 | 0xBB, 0x00, 0x06, 0x59, 0xB7, 0x00, 0x07, 0x12, 0x1C, 0xB6, 0x00, 0x0A, 0x19, 0x04, 0xB6, 0x00, 286 | 0x1D, 0xB6, 0x00, 0x0A, 0x12, 0x1E, 0xB6, 0x00, 0x0A, 0x19, 0x06, 0xB6, 0x00, 0x0A, 0x12, 0x1F, 287 | 0xB6, 0x00, 0x0A, 0xB6, 0x00, 0x0D, 0xB6, 0x00, 0x11, 0x2B, 0xB6, 0x00, 0x12, 0x19, 0x06, 0x12, 288 | 0x20, 0xB6, 0x00, 0x21, 0x9A, 0x00, 0x10, 0x19, 0x06, 0x12, 0x22, 0xB6, 0x00, 0x21, 0x9A, 0x00, 289 | 0x06, 0xA7, 0xFF, 0x77, 0x19, 0x05, 0x4D, 0xA7, 0x00, 0x03, 0x2C, 0xC7, 0x00, 0x0D, 0xBB, 0x00, 290 | 0x23, 0x59, 0x12, 0x24, 0xB7, 0x00, 0x25, 0xBF, 0x2A, 0x2C, 0xB6, 0x00, 0x26, 0x2B, 0x2C, 0x05, 291 | 0xBD, 0x00, 0x27, 0x59, 0x03, 0x12, 0x28, 0x53, 0x59, 0x04, 0x12, 0x29, 0x53, 0xB8, 0x00, 0x2A, 292 | 0x4E, 0x2B, 0x2C, 0x05, 0xBD, 0x00, 0x27, 0x59, 0x03, 0x12, 0x2B, 0x53, 0x59, 0x04, 0x12, 0x2C, 293 | 0x53, 0xB8, 0x00, 0x2A, 0x3A, 0x04, 0x2B, 0x2C, 0x05, 0xBD, 0x00, 0x27, 0x59, 0x03, 0x12, 0x2D, 294 | 0x53, 0x59, 0x04, 0x12, 0x2E, 0x53, 0xB8, 0x00, 0x2A, 0x3A, 0x05, 0x2B, 0x2C, 0x05, 0xBD, 0x00, 295 | 0x27, 0x59, 0x03, 0x12, 0x2F, 0x53, 0x59, 0x04, 0x12, 0x30, 0x53, 0xB8, 0x00, 0x2A, 0x3A, 0x06, 296 | 0x12, 0x31, 0x12, 0x32, 0x08, 0xBD, 0x00, 0x33, 0x59, 0x03, 0x12, 0x27, 0x53, 0x59, 0x04, 0x12, 297 | 0x34, 0x53, 0x59, 0x05, 0xB2, 0x00, 0x35, 0x53, 0x59, 0x06, 0xB2, 0x00, 0x35, 0x53, 0x59, 0x07, 298 | 0x12, 0x36, 0x53, 0xB6, 0x00, 0x37, 0x3A, 0x07, 0x19, 0x07, 0x04, 0xB6, 0x00, 0x38, 0x2B, 0xBB, 299 | 0x00, 0x06, 0x59, 0xB7, 0x00, 0x07, 0x12, 0x39, 0xB6, 0x00, 0x0A, 0xB2, 0x00, 0x3A, 0xBE, 0xB6, 300 | 0x00, 0x3B, 0x12, 0x3C, 0xB6, 0x00, 0x0A, 0xB6, 0x00, 0x0D, 0xB6, 0x00, 0x11, 0x2B, 0xB6, 0x00, 301 | 0x12, 0xBB, 0x00, 0x3D, 0x59, 0xB7, 0x00, 0x3E, 0x3A, 0x08, 0xB2, 0x00, 0x3A, 0x3A, 0x09, 0x19, 302 | 0x09, 0xBE, 0x36, 0x0A, 0x03, 0x36, 0x0B, 0x15, 0x0B, 0x15, 0x0A, 0xA2, 0x01, 0x32, 0x19, 0x09, 303 | 0x15, 0x0B, 0x32, 0x3A, 0x0C, 0x19, 0x0C, 0xC7, 0x00, 0x0D, 0xBB, 0x00, 0x23, 0x59, 0x12, 0x3F, 304 | 0xB7, 0x00, 0x25, 0xBF, 0x2C, 0xB6, 0x00, 0x1A, 0xC7, 0x00, 0x0D, 0xBB, 0x00, 0x23, 0x59, 0x12, 305 | 0x40, 0xB7, 0x00, 0x25, 0xBF, 0x19, 0x07, 0x2C, 0x08, 0xBD, 0x00, 0x41, 0x59, 0x03, 0x01, 0x53, 306 | 0x59, 0x04, 0x19, 0x0C, 0x53, 0x59, 0x05, 0x03, 0xB8, 0x00, 0x42, 0x53, 0x59, 0x06, 0x19, 0x0C, 307 | 0xBE, 0xB8, 0x00, 0x42, 0x53, 0x59, 0x07, 0x2C, 0xB6, 0x00, 0x1A, 0xB6, 0x00, 0x43, 0x53, 0xB6, 308 | 0x00, 0x44, 0xC0, 0x00, 0x33, 0x3A, 0x0D, 0x19, 0x0D, 0x19, 0x04, 0xB6, 0x00, 0x45, 0xC7, 0x00, 309 | 0x06, 0xA7, 0x00, 0xC6, 0x06, 0xBD, 0x00, 0x41, 0x3A, 0x0E, 0x19, 0x0E, 0x03, 0x19, 0x0D, 0x53, 310 | 0xBB, 0x00, 0x3D, 0x59, 0xB7, 0x00, 0x3E, 0x3A, 0x0F, 0xBB, 0x00, 0x3D, 0x59, 0xB7, 0x00, 0x3E, 311 | 0x3A, 0x10, 0x19, 0x0D, 0xB6, 0x00, 0x46, 0x3A, 0x11, 0x19, 0x11, 0xBE, 0x36, 0x12, 0x03, 0x36, 312 | 0x13, 0x15, 0x13, 0x15, 0x12, 0xA2, 0x00, 0x68, 0x19, 0x11, 0x15, 0x13, 0x32, 0x3A, 0x14, 0x19, 313 | 0x14, 0x2D, 0xB6, 0x00, 0x47, 0xC6, 0x00, 0x26, 0x19, 0x14, 0xB6, 0x00, 0x48, 0x04, 0xA0, 0x00, 314 | 0x1D, 0x19, 0x14, 0xB6, 0x00, 0x49, 0x03, 0x32, 0x19, 0x05, 0xA6, 0x00, 0x11, 0x19, 0x14, 0x04, 315 | 0xB6, 0x00, 0x38, 0x19, 0x10, 0x19, 0x14, 0xB6, 0x00, 0x4A, 0x57, 0x19, 0x14, 0x2D, 0xB6, 0x00, 316 | 0x47, 0xC6, 0x00, 0x26, 0x19, 0x14, 0xB6, 0x00, 0x48, 0x04, 0xA0, 0x00, 0x1D, 0x19, 0x14, 0xB6, 317 | 0x00, 0x49, 0x03, 0x32, 0x19, 0x06, 0xA6, 0x00, 0x11, 0x19, 0x14, 0x04, 0xB6, 0x00, 0x38, 0x19, 318 | 0x0F, 0x19, 0x14, 0xB6, 0x00, 0x4A, 0x57, 0x84, 0x13, 0x01, 0xA7, 0xFF, 0x97, 0x19, 0x0E, 0x04, 319 | 0x19, 0x0F, 0x53, 0x19, 0x0E, 0x05, 0x19, 0x10, 0x53, 0x19, 0x08, 0x19, 0x0E, 0xB6, 0x00, 0x4A, 320 | 0x57, 0xA7, 0x00, 0x16, 0x3A, 0x0D, 0x19, 0x0D, 0xB6, 0x00, 0x4B, 0xBB, 0x00, 0x23, 0x59, 0x12, 321 | 0x4C, 0x19, 0x0D, 0xB7, 0x00, 0x4D, 0xBF, 0x84, 0x0B, 0x01, 0xA7, 0xFE, 0xCD, 0x2B, 0xBB, 0x00, 322 | 0x06, 0x59, 0xB7, 0x00, 0x07, 0xB2, 0x00, 0x3A, 0xBE, 0xB6, 0x00, 0x3B, 0x12, 0x4E, 0xB6, 0x00, 323 | 0x0A, 0xB6, 0x00, 0x0D, 0xB6, 0x00, 0x11, 0x2B, 0xB6, 0x00, 0x12, 0x19, 0x08, 0xB6, 0x00, 0x4F, 324 | 0x3A, 0x09, 0x19, 0x09, 0xB9, 0x00, 0x16, 0x01, 0x00, 0x99, 0x02, 0x11, 0x19, 0x09, 0xB9, 0x00, 325 | 0x17, 0x01, 0x00, 0xC0, 0x00, 0x50, 0x3A, 0x0A, 0x19, 0x0A, 0x03, 0x32, 0xC0, 0x00, 0x33, 0x3A, 326 | 0x0B, 0x19, 0x0A, 0x04, 0x32, 0xC0, 0x00, 0x3D, 0x3A, 0x0C, 0x19, 0x0A, 0x05, 0x32, 0xC0, 0x00, 327 | 0x3D, 0x3A, 0x0D, 0x01, 0x3A, 0x0E, 0x2B, 0xBB, 0x00, 0x06, 0x59, 0xB7, 0x00, 0x07, 0x12, 0x51, 328 | 0xB6, 0x00, 0x0A, 0x19, 0x0B, 0xB6, 0x00, 0x1B, 0xB6, 0x00, 0x0A, 0xB6, 0x00, 0x0D, 0xB6, 0x00, 329 | 0x11, 0x2B, 0xB6, 0x00, 0x12, 0x19, 0x0B, 0xB6, 0x00, 0x52, 0x3A, 0x0E, 0x2B, 0x12, 0x53, 0xB6, 330 | 0x00, 0x11, 0x2B, 0xB6, 0x00, 0x12, 0xA7, 0x00, 0x33, 0x3A, 0x0F, 0x2B, 0xBB, 0x00, 0x06, 0x59, 331 | 0xB7, 0x00, 0x07, 0x12, 0x54, 0xB6, 0x00, 0x0A, 0x19, 0x0F, 0xB6, 0x00, 0x55, 0xB6, 0x00, 0x0D, 332 | 0xB6, 0x00, 0x11, 0x19, 0x0F, 0x2B, 0xB6, 0x00, 0x56, 0x2B, 0xB6, 0x00, 0x12, 0xBB, 0x00, 0x23, 333 | 0x59, 0x12, 0x57, 0x19, 0x0F, 0xB7, 0x00, 0x4D, 0xBF, 0x19, 0x0C, 0xB6, 0x00, 0x4F, 0x3A, 0x0F, 334 | 0x19, 0x0F, 0xB9, 0x00, 0x16, 0x01, 0x00, 0x99, 0x00, 0xB1, 0x19, 0x0F, 0xB9, 0x00, 0x17, 0x01, 335 | 0x00, 0xC0, 0x00, 0x58, 0x3A, 0x10, 0x2B, 0xBB, 0x00, 0x06, 0x59, 0xB7, 0x00, 0x07, 0x12, 0x59, 336 | 0xB6, 0x00, 0x0A, 0x19, 0x10, 0xB6, 0x00, 0x55, 0xB6, 0x00, 0x0D, 0xB6, 0x00, 0x11, 0x2B, 0xB6, 337 | 0x00, 0x12, 0x2B, 0x12, 0x5A, 0xB6, 0x00, 0x11, 0x2B, 0xB6, 0x00, 0x12, 0x19, 0x10, 0x19, 0x0E, 338 | 0x04, 0xBD, 0x00, 0x41, 0x59, 0x03, 0x01, 0x53, 0xB6, 0x00, 0x44, 0x57, 0xA7, 0x00, 0x69, 0x3A, 339 | 0x11, 0x2B, 0xBB, 0x00, 0x06, 0x59, 0xB7, 0x00, 0x07, 0x12, 0x5C, 0xB6, 0x00, 0x0A, 0x19, 0x11, 340 | 0xB6, 0x00, 0x55, 0xB6, 0x00, 0x0D, 0xB6, 0x00, 0x11, 0x19, 0x11, 0xB6, 0x00, 0x5D, 0x2B, 0xB6, 341 | 0x00, 0x5E, 0x2B, 0xB6, 0x00, 0x12, 0xBB, 0x00, 0x23, 0x59, 0x12, 0x5F, 0x19, 0x11, 0xB6, 0x00, 342 | 0x5D, 0xB7, 0x00, 0x4D, 0xBF, 0x3A, 0x11, 0x2B, 0xBB, 0x00, 0x06, 0x59, 0xB7, 0x00, 0x07, 0x12, 343 | 0x60, 0xB6, 0x00, 0x0A, 0x19, 0x11, 0xB6, 0x00, 0x55, 0xB6, 0x00, 0x0D, 0xB6, 0x00, 0x11, 0x19, 344 | 0x11, 0x2B, 0xB6, 0x00, 0x56, 0x2B, 0xB6, 0x00, 0x12, 0xBB, 0x00, 0x23, 0x59, 0x12, 0x61, 0x19, 345 | 0x11, 0xB7, 0x00, 0x4D, 0xBF, 0xA7, 0xFF, 0x4B, 0x19, 0x0D, 0xB6, 0x00, 0x4F, 0x3A, 0x0F, 0x19, 346 | 0x0F, 0xB9, 0x00, 0x16, 0x01, 0x00, 0x99, 0x00, 0xB1, 0x19, 0x0F, 0xB9, 0x00, 0x17, 0x01, 0x00, 347 | 0xC0, 0x00, 0x58, 0x3A, 0x10, 0x2B, 0xBB, 0x00, 0x06, 0x59, 0xB7, 0x00, 0x07, 0x12, 0x62, 0xB6, 348 | 0x00, 0x0A, 0x19, 0x10, 0xB6, 0x00, 0x55, 0xB6, 0x00, 0x0D, 0xB6, 0x00, 0x11, 0x2B, 0xB6, 0x00, 349 | 0x12, 0x2B, 0x12, 0x63, 0xB6, 0x00, 0x11, 0x2B, 0xB6, 0x00, 0x12, 0x19, 0x10, 0x19, 0x0E, 0x04, 350 | 0xBD, 0x00, 0x41, 0x59, 0x03, 0x01, 0x53, 0xB6, 0x00, 0x44, 0x57, 0xA7, 0x00, 0x69, 0x3A, 0x11, 351 | 0x2B, 0xBB, 0x00, 0x06, 0x59, 0xB7, 0x00, 0x07, 0x12, 0x64, 0xB6, 0x00, 0x0A, 0x19, 0x11, 0xB6, 352 | 0x00, 0x55, 0xB6, 0x00, 0x0D, 0xB6, 0x00, 0x11, 0x19, 0x11, 0xB6, 0x00, 0x5D, 0x2B, 0xB6, 0x00, 353 | 0x5E, 0x2B, 0xB6, 0x00, 0x12, 0xBB, 0x00, 0x23, 0x59, 0x12, 0x65, 0x19, 0x11, 0xB6, 0x00, 0x5D, 354 | 0xB7, 0x00, 0x4D, 0xBF, 0x3A, 0x11, 0x2B, 0xBB, 0x00, 0x06, 0x59, 0xB7, 0x00, 0x07, 0x12, 0x66, 355 | 0xB6, 0x00, 0x0A, 0x19, 0x11, 0xB6, 0x00, 0x55, 0xB6, 0x00, 0x0D, 0xB6, 0x00, 0x11, 0x19, 0x11, 356 | 0x2B, 0xB6, 0x00, 0x56, 0x2B, 0xB6, 0x00, 0x12, 0xBB, 0x00, 0x23, 0x59, 0x12, 0x67, 0x19, 0x11, 357 | 0xB7, 0x00, 0x4D, 0xBF, 0xA7, 0xFF, 0x4B, 0xA7, 0xFD, 0xEB, 0x2B, 0x12, 0x68, 0xB6, 0x00, 0x11, 358 | 0x2B, 0xB6, 0x00, 0x12, 0xA7, 0x00, 0x0D, 0x4D, 0x2C, 0x2B, 0xB6, 0x00, 0x5E, 0x2B, 0xB6, 0x00, 359 | 0x12, 0x2B, 0xB6, 0x00, 0x6A, 0xA7, 0x00, 0x08, 0x4C, 0x2B, 0xB6, 0x00, 0x6B, 0xB1, 0x00, 0x09, 360 | 0x01, 0xCE, 0x02, 0x0A, 0x02, 0xBD, 0x00, 0x23, 0x02, 0x0D, 0x02, 0xBA, 0x02, 0xBD, 0x00, 0x23, 361 | 0x03, 0x2F, 0x03, 0x5F, 0x03, 0x62, 0x00, 0x23, 0x03, 0xAF, 0x03, 0xE5, 0x03, 0xE8, 0x00, 0x5B, 362 | 0x03, 0xAF, 0x03, 0xE5, 0x04, 0x1E, 0x00, 0x23, 0x04, 0x6E, 0x04, 0xA4, 0x04, 0xA7, 0x00, 0x5B, 363 | 0x04, 0x6E, 0x04, 0xA4, 0x04, 0xDD, 0x00, 0x23, 0x00, 0x31, 0x05, 0x1D, 0x05, 0x20, 0x00, 0x69, 364 | 0x00, 0x00, 0x05, 0x2E, 0x05, 0x31, 0x00, 0x69, 0x00, 0x02, 0x00, 0x74, 0x00, 0x00, 0x01, 0xDA, 365 | 0x00, 0x76, 0x00, 0x00, 0x00, 0x20, 0x00, 0x27, 0x00, 0x21, 0x00, 0x2D, 0x00, 0x22, 0x00, 0x31, 366 | 0x00, 0x24, 0x00, 0x33, 0x00, 0x25, 0x00, 0x55, 0x00, 0x27, 0x00, 0x7E, 0x00, 0x28, 0x00, 0x88, 367 | 0x00, 0x29, 0x00, 0xB2, 0x00, 0x2A, 0x00, 0xB6, 0x00, 0x2B, 0x00, 0xCD, 0x00, 0x2C, 0x00, 0xD0, 368 | 0x00, 0x2D, 0x00, 0xD3, 0x00, 0x2F, 0x00, 0xD7, 0x00, 0x30, 0x00, 0xE1, 0x00, 0x32, 0x00, 0xE6, 369 | 0x00, 0x33, 0x00, 0xFA, 0x00, 0x34, 0x01, 0x0F, 0x00, 0x35, 0x01, 0x24, 0x00, 0x36, 0x01, 0x39, 370 | 0x00, 0x37, 0x01, 0x61, 0x00, 0x38, 0x01, 0x67, 0x00, 0x39, 0x01, 0x86, 0x00, 0x3A, 0x01, 0x8A, 371 | 0x00, 0x3B, 0x01, 0x93, 0x00, 0x3C, 0x01, 0xAE, 0x00, 0x3D, 0x01, 0xB3, 0x00, 0x3E, 0x01, 0xBD, 372 | 0x00, 0x40, 0x01, 0xC4, 0x00, 0x41, 0x01, 0xCE, 0x00, 0x44, 0x02, 0x00, 0x00, 0x45, 0x02, 0x0A, 373 | 0x00, 0x46, 0x02, 0x0D, 0x00, 0x47, 0x02, 0x13, 0x00, 0x48, 0x02, 0x19, 0x00, 0x49, 0x02, 0x22, 374 | 0x00, 0x4A, 0x02, 0x2B, 0x00, 0x4B, 0x02, 0x48, 0x00, 0x4C, 0x02, 0x66, 0x00, 0x4D, 0x02, 0x6C, 375 | 0x00, 0x4E, 0x02, 0x74, 0x00, 0x50, 0x02, 0x92, 0x00, 0x51, 0x02, 0x98, 0x00, 0x52, 0x02, 0xA0, 376 | 0x00, 0x4B, 0x02, 0xA6, 0x00, 0x55, 0x02, 0xAC, 0x00, 0x56, 0x02, 0xB2, 0x00, 0x57, 0x02, 0xBA, 377 | 0x00, 0x5C, 0x02, 0xBD, 0x00, 0x59, 0x02, 0xBF, 0x00, 0x5A, 0x02, 0xC4, 0x00, 0x5B, 0x02, 0xD0, 378 | 0x00, 0x3C, 0x02, 0xD6, 0x00, 0x5E, 0x02, 0xF0, 0x00, 0x5F, 0x02, 0xF4, 0x00, 0x60, 0x03, 0x11, 379 | 0x00, 0x61, 0x03, 0x1A, 0x00, 0x62, 0x03, 0x23, 0x00, 0x63, 0x03, 0x2C, 0x00, 0x64, 0x03, 0x2F, 380 | 0x00, 0x67, 0x03, 0x4A, 0x00, 0x68, 0x03, 0x4E, 0x00, 0x69, 0x03, 0x55, 0x00, 0x6A, 0x03, 0x5B, 381 | 0x00, 0x6B, 0x03, 0x5F, 0x00, 0x72, 0x03, 0x62, 0x00, 0x6D, 0x03, 0x64, 0x00, 0x6E, 0x03, 0x7C, 382 | 0x00, 0x6F, 0x03, 0x82, 0x00, 0x70, 0x03, 0x86, 0x00, 0x71, 0x03, 0x92, 0x00, 0x74, 0x03, 0xAF, 383 | 0x00, 0x76, 0x03, 0xC7, 0x00, 0x77, 0x03, 0xCB, 0x00, 0x78, 0x03, 0xD1, 0x00, 0x79, 0x03, 0xD5, 384 | 0x00, 0x7A, 0x03, 0xE5, 0x00, 0x87, 0x03, 0xE8, 0x00, 0x7C, 0x03, 0xEA, 0x00, 0x7D, 0x04, 0x02, 385 | 0x00, 0x7E, 0x04, 0x0B, 0x00, 0x7F, 0x04, 0x0F, 0x00, 0x80, 0x04, 0x1E, 0x00, 0x82, 0x04, 0x20, 386 | 0x00, 0x83, 0x04, 0x38, 0x00, 0x84, 0x04, 0x3E, 0x00, 0x85, 0x04, 0x42, 0x00, 0x86, 0x04, 0x4E, 387 | 0x00, 0x88, 0x04, 0x51, 0x00, 0x8A, 0x04, 0x6E, 0x00, 0x8C, 0x04, 0x86, 0x00, 0x8D, 0x04, 0x8A, 388 | 0x00, 0x8E, 0x04, 0x90, 0x00, 0x8F, 0x04, 0x94, 0x00, 0x90, 0x04, 0xA4, 0x00, 0x9D, 0x04, 0xA7, 389 | 0x00, 0x92, 0x04, 0xA9, 0x00, 0x93, 0x04, 0xC1, 0x00, 0x94, 0x04, 0xCA, 0x00, 0x95, 0x04, 0xCE, 390 | 0x00, 0x96, 0x04, 0xDD, 0x00, 0x98, 0x04, 0xDF, 0x00, 0x99, 0x04, 0xF7, 0x00, 0x9A, 0x04, 0xFD, 391 | 0x00, 0x9B, 0x05, 0x01, 0x00, 0x9C, 0x05, 0x0D, 0x00, 0x9E, 0x05, 0x10, 0x00, 0x9F, 0x05, 0x13, 392 | 0x00, 0xA0, 0x05, 0x19, 0x00, 0xA1, 0x05, 0x1D, 0x00, 0xA6, 0x05, 0x20, 0x00, 0xA3, 0x05, 0x21, 393 | 0x00, 0xA4, 0x05, 0x26, 0x00, 0xA5, 0x05, 0x2A, 0x00, 0xA7, 0x05, 0x2E, 0x00, 0xAB, 0x05, 0x31, 394 | 0x00, 0xA9, 0x05, 0x32, 0x00, 0xAA, 0x05, 0x36, 0x00, 0xAC, 0x00, 0x77, 0x00, 0x00, 0x01, 0xF8, 395 | 0x00, 0x22, 0xFE, 0x00, 0x41, 0x07, 0x00, 0x78, 0x07, 0x00, 0x79, 0x07, 0x00, 0x7F, 0xFD, 0x00, 396 | 0x3C, 0x07, 0x00, 0x80, 0x07, 0x00, 0x79, 0xFC, 0x00, 0x4E, 0x07, 0x00, 0x7C, 0xFF, 0x00, 0x05, 397 | 0x00, 0x03, 0x07, 0x00, 0x81, 0x07, 0x00, 0x78, 0x07, 0x00, 0x79, 0x00, 0x00, 0x0D, 0xFF, 0x00, 398 | 0xBE, 0x00, 0x0C, 0x07, 0x00, 0x81, 0x07, 0x00, 0x78, 0x07, 0x00, 0x79, 0x07, 0x00, 0x82, 0x07, 399 | 0x00, 0x82, 0x07, 0x00, 0x82, 0x07, 0x00, 0x82, 0x07, 0x00, 0x83, 0x07, 0x00, 0x84, 0x07, 0x00, 400 | 0x85, 0x01, 0x01, 0x00, 0x00, 0xFC, 0x00, 0x1C, 0x07, 0x00, 0x34, 0x10, 0xFC, 0x00, 0x3E, 0x07, 401 | 0x00, 0x82, 0xFF, 0x00, 0x2C, 0x00, 0x14, 0x07, 0x00, 0x81, 0x07, 0x00, 0x78, 0x07, 0x00, 0x79, 402 | 0x07, 0x00, 0x82, 0x07, 0x00, 0x82, 0x07, 0x00, 0x82, 0x07, 0x00, 0x82, 0x07, 0x00, 0x83, 0x07, 403 | 0x00, 0x84, 0x07, 0x00, 0x85, 0x01, 0x01, 0x07, 0x00, 0x34, 0x07, 0x00, 0x82, 0x07, 0x00, 0x50, 404 | 0x07, 0x00, 0x84, 0x07, 0x00, 0x84, 0x07, 0x00, 0x86, 0x01, 0x01, 0x00, 0x00, 0xFC, 0x00, 0x39, 405 | 0x07, 0x00, 0x83, 0xFA, 0x00, 0x2B, 0xF8, 0x00, 0x05, 0xFF, 0x00, 0x16, 0x00, 0x0D, 0x07, 0x00, 406 | 0x81, 0x07, 0x00, 0x78, 0x07, 0x00, 0x79, 0x07, 0x00, 0x82, 0x07, 0x00, 0x82, 0x07, 0x00, 0x82, 407 | 0x07, 0x00, 0x82, 0x07, 0x00, 0x83, 0x07, 0x00, 0x84, 0x07, 0x00, 0x85, 0x01, 0x01, 0x07, 0x00, 408 | 0x34, 0x00, 0x01, 0x07, 0x00, 0x87, 0xFA, 0x00, 0x12, 0xF8, 0x00, 0x05, 0xFC, 0x00, 0x24, 0x07, 409 | 0x00, 0x7F, 0xFF, 0x00, 0x66, 0x00, 0x0F, 0x07, 0x00, 0x81, 0x07, 0x00, 0x78, 0x07, 0x00, 0x79, 410 | 0x07, 0x00, 0x82, 0x07, 0x00, 0x82, 0x07, 0x00, 0x82, 0x07, 0x00, 0x82, 0x07, 0x00, 0x83, 0x07, 411 | 0x00, 0x84, 0x07, 0x00, 0x7F, 0x07, 0x00, 0x50, 0x07, 0x00, 0x82, 0x07, 0x00, 0x84, 0x07, 0x00, 412 | 0x84, 0x07, 0x00, 0x88, 0x00, 0x01, 0x07, 0x00, 0x87, 0x2F, 0xFC, 0x00, 0x06, 0x07, 0x00, 0x7F, 413 | 0xFF, 0x00, 0x4E, 0x00, 0x11, 0x07, 0x00, 0x81, 0x07, 0x00, 0x78, 0x07, 0x00, 0x79, 0x07, 0x00, 414 | 0x82, 0x07, 0x00, 0x82, 0x07, 0x00, 0x82, 0x07, 0x00, 0x82, 0x07, 0x00, 0x83, 0x07, 0x00, 0x84, 415 | 0x07, 0x00, 0x7F, 0x07, 0x00, 0x50, 0x07, 0x00, 0x82, 0x07, 0x00, 0x84, 0x07, 0x00, 0x84, 0x07, 416 | 0x00, 0x88, 0x07, 0x00, 0x7F, 0x07, 0x00, 0x83, 0x00, 0x01, 0x07, 0x00, 0x89, 0x75, 0x07, 0x00, 417 | 0x87, 0xFA, 0x00, 0x2F, 0xFA, 0x00, 0x02, 0xFC, 0x00, 0x06, 0x07, 0x00, 0x7F, 0xFF, 0x00, 0x4E, 418 | 0x00, 0x11, 0x07, 0x00, 0x81, 0x07, 0x00, 0x78, 0x07, 0x00, 0x79, 0x07, 0x00, 0x82, 0x07, 0x00, 419 | 0x82, 0x07, 0x00, 0x82, 0x07, 0x00, 0x82, 0x07, 0x00, 0x83, 0x07, 0x00, 0x84, 0x07, 0x00, 0x7F, 420 | 0x07, 0x00, 0x50, 0x07, 0x00, 0x82, 0x07, 0x00, 0x84, 0x07, 0x00, 0x84, 0x07, 0x00, 0x88, 0x07, 421 | 0x00, 0x7F, 0x07, 0x00, 0x83, 0x00, 0x01, 0x07, 0x00, 0x89, 0x75, 0x07, 0x00, 0x87, 0xFA, 0x00, 422 | 0x2F, 0xFF, 0x00, 0x02, 0x00, 0x0A, 0x07, 0x00, 0x81, 0x07, 0x00, 0x78, 0x07, 0x00, 0x79, 0x07, 423 | 0x00, 0x82, 0x07, 0x00, 0x82, 0x07, 0x00, 0x82, 0x07, 0x00, 0x82, 0x07, 0x00, 0x83, 0x07, 0x00, 424 | 0x84, 0x07, 0x00, 0x7F, 0x00, 0x00, 0xFA, 0x00, 0x02, 0xFF, 0x00, 0x0C, 0x00, 0x02, 0x07, 0x00, 425 | 0x81, 0x07, 0x00, 0x78, 0x00, 0x01, 0x07, 0x00, 0x8A, 0x09, 0xFF, 0x00, 0x06, 0x00, 0x01, 0x07, 426 | 0x00, 0x81, 0x00, 0x01, 0x07, 0x00, 0x8A, 0x04, 0x00, 0x09, 0x00, 0x8B, 0x00, 0x8C, 0x00, 0x01, 427 | 0x00, 0x73, 0x00, 0x00, 0x00, 0x57, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x16, 0x2A, 0xB3, 428 | 0x00, 0x3A, 0xBB, 0x00, 0x6C, 0x59, 0xB7, 0x00, 0x6D, 0x4C, 0x2B, 0xB6, 0x00, 0x6E, 0xA7, 0x00, 429 | 0x04, 0x4C, 0x03, 0xAC, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x13, 0x00, 0x23, 0x00, 0x02, 430 | 0x00, 0x74, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x06, 0x00, 0x00, 0x00, 0xB0, 0x00, 0x04, 0x00, 0xB1, 431 | 0x00, 0x0C, 0x00, 0xB2, 0x00, 0x10, 0x00, 0xB6, 0x00, 0x13, 0x00, 0xB4, 0x00, 0x14, 0x00, 0xB7, 432 | 0x00, 0x77, 0x00, 0x00, 0x00, 0x07, 0x00, 0x02, 0x53, 0x07, 0x00, 0x87, 0x00, 0x00, 0x09, 0x00, 433 | 0x8D, 0x00, 0x8E, 0x00, 0x01, 0x00, 0x73, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x01, 0x00, 0x01, 0x00, 434 | 0x00, 0x00, 0x05, 0x1A, 0xBD, 0x00, 0x34, 0xB0, 0x00, 0x00, 0x00, 0x01, 0x00, 0x74, 0x00, 0x00, 435 | 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0xBB, 0x00, 0x01, 0x00, 0x8F, 0x00, 0x00, 0x00, 0x02, 436 | 0x00, 0x90 437 | }; 438 | 439 | jsize class_loader_class_size = 6914; -------------------------------------------------------------------------------- /lib/jni.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved. 3 | * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. 4 | * 5 | * 6 | * 7 | * 8 | * 9 | * 10 | * 11 | * 12 | * 13 | * 14 | * 15 | * 16 | * 17 | * 18 | * 19 | * 20 | * 21 | * 22 | * 23 | * 24 | */ 25 | 26 | /* 27 | * We used part of Netscape's Java Runtime Interface (JRI) as the starting 28 | * point of our design and implementation. 29 | */ 30 | 31 | /****************************************************************************** 32 | * Java Runtime Interface 33 | * Copyright (c) 1996 Netscape Communications Corporation. All rights reserved. 34 | *****************************************************************************/ 35 | 36 | #ifndef _JAVASOFT_JNI_MD_H_ 37 | #define _JAVASOFT_JNI_MD_H_ 38 | 39 | #ifndef __has_attribute 40 | #define __has_attribute(x) 0 41 | #endif 42 | #if (defined(__GNUC__) && ((__GNUC__ > 4) || (__GNUC__ == 4) && (__GNUC_MINOR__ > 2))) || __has_attribute(visibility) 43 | #define JNIEXPORT __attribute__((visibility("default"))) 44 | #define JNIIMPORT __attribute__((visibility("default"))) 45 | #else 46 | #define JNIEXPORT 47 | #define JNIIMPORT 48 | #endif 49 | 50 | #define JNICALL 51 | 52 | typedef int jint; 53 | #ifdef _LP64 /* 64-bit Solaris */ 54 | typedef long jlong; 55 | #else 56 | typedef long long jlong; 57 | #endif 58 | 59 | typedef signed char jbyte; 60 | 61 | #endif /* !_JAVASOFT_JNI_MD_H_ */ 62 | 63 | #ifndef _JAVASOFT_JNI_H_ 64 | #define _JAVASOFT_JNI_H_ 65 | 66 | #include 67 | #include 68 | 69 | /* jni_md.h contains the machine-dependent typedefs for jbyte, jint 70 | and jlong */ 71 | 72 | #ifdef __cplusplus 73 | extern "C" { 74 | #endif 75 | 76 | /* 77 | * JNI Types 78 | */ 79 | 80 | #ifndef JNI_TYPES_ALREADY_DEFINED_IN_JNI_MD_H 81 | 82 | typedef unsigned char jboolean; 83 | typedef unsigned short jchar; 84 | typedef short jshort; 85 | typedef float jfloat; 86 | typedef double jdouble; 87 | 88 | typedef jint jsize; 89 | 90 | #ifdef __cplusplus 91 | 92 | class _jobject {}; 93 | class _jclass : public _jobject {}; 94 | class _jthrowable : public _jobject {}; 95 | class _jstring : public _jobject {}; 96 | class _jarray : public _jobject {}; 97 | class _jbooleanArray : public _jarray {}; 98 | class _jbyteArray : public _jarray {}; 99 | class _jcharArray : public _jarray {}; 100 | class _jshortArray : public _jarray {}; 101 | class _jintArray : public _jarray {}; 102 | class _jlongArray : public _jarray {}; 103 | class _jfloatArray : public _jarray {}; 104 | class _jdoubleArray : public _jarray {}; 105 | class _jobjectArray : public _jarray {}; 106 | 107 | typedef _jobject *jobject; 108 | typedef _jclass *jclass; 109 | typedef _jthrowable *jthrowable; 110 | typedef _jstring *jstring; 111 | typedef _jarray *jarray; 112 | typedef _jbooleanArray *jbooleanArray; 113 | typedef _jbyteArray *jbyteArray; 114 | typedef _jcharArray *jcharArray; 115 | typedef _jshortArray *jshortArray; 116 | typedef _jintArray *jintArray; 117 | typedef _jlongArray *jlongArray; 118 | typedef _jfloatArray *jfloatArray; 119 | typedef _jdoubleArray *jdoubleArray; 120 | typedef _jobjectArray *jobjectArray; 121 | 122 | #else 123 | 124 | struct _jobject; 125 | 126 | typedef struct _jobject *jobject; 127 | typedef jobject jclass; 128 | typedef jobject jthrowable; 129 | typedef jobject jstring; 130 | typedef jobject jarray; 131 | typedef jarray jbooleanArray; 132 | typedef jarray jbyteArray; 133 | typedef jarray jcharArray; 134 | typedef jarray jshortArray; 135 | typedef jarray jintArray; 136 | typedef jarray jlongArray; 137 | typedef jarray jfloatArray; 138 | typedef jarray jdoubleArray; 139 | typedef jarray jobjectArray; 140 | 141 | #endif 142 | 143 | typedef jobject jweak; 144 | 145 | typedef union jvalue { 146 | jboolean z; 147 | jbyte b; 148 | jchar c; 149 | jshort s; 150 | jint i; 151 | jlong j; 152 | jfloat f; 153 | jdouble d; 154 | jobject l; 155 | } jvalue; 156 | 157 | struct _jfieldID; 158 | typedef struct _jfieldID *jfieldID; 159 | 160 | struct _jmethodID; 161 | typedef struct _jmethodID *jmethodID; 162 | 163 | /* Return values from jobjectRefType */ 164 | typedef enum _jobjectType { 165 | JNIInvalidRefType = 0, 166 | JNILocalRefType = 1, 167 | JNIGlobalRefType = 2, 168 | JNIWeakGlobalRefType = 3 169 | } jobjectRefType; 170 | 171 | 172 | #endif /* JNI_TYPES_ALREADY_DEFINED_IN_JNI_MD_H */ 173 | 174 | /* 175 | * jboolean constants 176 | */ 177 | 178 | #define JNI_FALSE 0 179 | #define JNI_TRUE 1 180 | 181 | /* 182 | * possible return values for JNI functions. 183 | */ 184 | 185 | #define JNI_OK 0 /* success */ 186 | #define JNI_ERR (-1) /* unknown error */ 187 | #define JNI_EDETACHED (-2) /* thread detached from the VM */ 188 | #define JNI_EVERSION (-3) /* JNI version error */ 189 | #define JNI_ENOMEM (-4) /* not enough memory */ 190 | #define JNI_EEXIST (-5) /* VM already created */ 191 | #define JNI_EINVAL (-6) /* invalid arguments */ 192 | 193 | /* 194 | * used in ReleaseScalarArrayElements 195 | */ 196 | 197 | #define JNI_COMMIT 1 198 | #define JNI_ABORT 2 199 | 200 | /* 201 | * used in RegisterNatives to describe native method name, signature, 202 | * and function pointer. 203 | */ 204 | 205 | typedef struct { 206 | char *name; 207 | char *signature; 208 | void *fnPtr; 209 | } JNINativeMethod; 210 | 211 | /* 212 | * JNI Native Method Interface. 213 | */ 214 | 215 | struct JNINativeInterface_; 216 | 217 | struct JNIEnv_; 218 | 219 | #ifdef __cplusplus 220 | typedef JNIEnv_ JNIEnv; 221 | #else 222 | typedef const struct JNINativeInterface_ *JNIEnv; 223 | #endif 224 | 225 | /* 226 | * JNI Invocation Interface. 227 | */ 228 | 229 | struct JNIInvokeInterface_; 230 | 231 | struct JavaVM_; 232 | 233 | #ifdef __cplusplus 234 | typedef JavaVM_ JavaVM; 235 | #else 236 | typedef const struct JNIInvokeInterface_ *JavaVM; 237 | #endif 238 | 239 | struct JNINativeInterface_ { 240 | void *reserved0; 241 | void *reserved1; 242 | void *reserved2; 243 | 244 | void *reserved3; 245 | jint (JNICALL *GetVersion)(JNIEnv *env); 246 | 247 | jclass (JNICALL *DefineClass) 248 | (JNIEnv *env, const char *name, jobject loader, const jbyte *buf, 249 | jsize len); 250 | jclass (JNICALL *FindClass) 251 | (JNIEnv *env, const char *name); 252 | 253 | jmethodID (JNICALL *FromReflectedMethod) 254 | (JNIEnv *env, jobject method); 255 | jfieldID (JNICALL *FromReflectedField) 256 | (JNIEnv *env, jobject field); 257 | 258 | jobject (JNICALL *ToReflectedMethod) 259 | (JNIEnv *env, jclass cls, jmethodID methodID, jboolean isStatic); 260 | 261 | jclass (JNICALL *GetSuperclass) 262 | (JNIEnv *env, jclass sub); 263 | jboolean (JNICALL *IsAssignableFrom) 264 | (JNIEnv *env, jclass sub, jclass sup); 265 | 266 | jobject (JNICALL *ToReflectedField) 267 | (JNIEnv *env, jclass cls, jfieldID fieldID, jboolean isStatic); 268 | 269 | jint (JNICALL *Throw) 270 | (JNIEnv *env, jthrowable obj); 271 | jint (JNICALL *ThrowNew) 272 | (JNIEnv *env, jclass clazz, const char *msg); 273 | jthrowable (JNICALL *ExceptionOccurred) 274 | (JNIEnv *env); 275 | void (JNICALL *ExceptionDescribe) 276 | (JNIEnv *env); 277 | void (JNICALL *ExceptionClear) 278 | (JNIEnv *env); 279 | void (JNICALL *FatalError) 280 | (JNIEnv *env, const char *msg); 281 | 282 | jint (JNICALL *PushLocalFrame) 283 | (JNIEnv *env, jint capacity); 284 | jobject (JNICALL *PopLocalFrame) 285 | (JNIEnv *env, jobject result); 286 | 287 | jobject (JNICALL *NewGlobalRef) 288 | (JNIEnv *env, jobject lobj); 289 | void (JNICALL *DeleteGlobalRef) 290 | (JNIEnv *env, jobject gref); 291 | void (JNICALL *DeleteLocalRef) 292 | (JNIEnv *env, jobject obj); 293 | jboolean (JNICALL *IsSameObject) 294 | (JNIEnv *env, jobject obj1, jobject obj2); 295 | jobject (JNICALL *NewLocalRef) 296 | (JNIEnv *env, jobject ref); 297 | jint (JNICALL *EnsureLocalCapacity) 298 | (JNIEnv *env, jint capacity); 299 | 300 | jobject (JNICALL *AllocObject) 301 | (JNIEnv *env, jclass clazz); 302 | jobject (JNICALL *NewObject) 303 | (JNIEnv *env, jclass clazz, jmethodID methodID, ...); 304 | jobject (JNICALL *NewObjectV) 305 | (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); 306 | jobject (JNICALL *NewObjectA) 307 | (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); 308 | 309 | jclass (JNICALL *GetObjectClass) 310 | (JNIEnv *env, jobject obj); 311 | jboolean (JNICALL *IsInstanceOf) 312 | (JNIEnv *env, jobject obj, jclass clazz); 313 | 314 | jmethodID (JNICALL *GetMethodID) 315 | (JNIEnv *env, jclass clazz, const char *name, const char *sig); 316 | 317 | jobject (JNICALL *CallObjectMethod) 318 | (JNIEnv *env, jobject obj, jmethodID methodID, ...); 319 | jobject (JNICALL *CallObjectMethodV) 320 | (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); 321 | jobject (JNICALL *CallObjectMethodA) 322 | (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue * args); 323 | 324 | jboolean (JNICALL *CallBooleanMethod) 325 | (JNIEnv *env, jobject obj, jmethodID methodID, ...); 326 | jboolean (JNICALL *CallBooleanMethodV) 327 | (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); 328 | jboolean (JNICALL *CallBooleanMethodA) 329 | (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue * args); 330 | 331 | jbyte (JNICALL *CallByteMethod) 332 | (JNIEnv *env, jobject obj, jmethodID methodID, ...); 333 | jbyte (JNICALL *CallByteMethodV) 334 | (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); 335 | jbyte (JNICALL *CallByteMethodA) 336 | (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args); 337 | 338 | jchar (JNICALL *CallCharMethod) 339 | (JNIEnv *env, jobject obj, jmethodID methodID, ...); 340 | jchar (JNICALL *CallCharMethodV) 341 | (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); 342 | jchar (JNICALL *CallCharMethodA) 343 | (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args); 344 | 345 | jshort (JNICALL *CallShortMethod) 346 | (JNIEnv *env, jobject obj, jmethodID methodID, ...); 347 | jshort (JNICALL *CallShortMethodV) 348 | (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); 349 | jshort (JNICALL *CallShortMethodA) 350 | (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args); 351 | 352 | jint (JNICALL *CallIntMethod) 353 | (JNIEnv *env, jobject obj, jmethodID methodID, ...); 354 | jint (JNICALL *CallIntMethodV) 355 | (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); 356 | jint (JNICALL *CallIntMethodA) 357 | (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args); 358 | 359 | jlong (JNICALL *CallLongMethod) 360 | (JNIEnv *env, jobject obj, jmethodID methodID, ...); 361 | jlong (JNICALL *CallLongMethodV) 362 | (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); 363 | jlong (JNICALL *CallLongMethodA) 364 | (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args); 365 | 366 | jfloat (JNICALL *CallFloatMethod) 367 | (JNIEnv *env, jobject obj, jmethodID methodID, ...); 368 | jfloat (JNICALL *CallFloatMethodV) 369 | (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); 370 | jfloat (JNICALL *CallFloatMethodA) 371 | (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args); 372 | 373 | jdouble (JNICALL *CallDoubleMethod) 374 | (JNIEnv *env, jobject obj, jmethodID methodID, ...); 375 | jdouble (JNICALL *CallDoubleMethodV) 376 | (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); 377 | jdouble (JNICALL *CallDoubleMethodA) 378 | (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue *args); 379 | 380 | void (JNICALL *CallVoidMethod) 381 | (JNIEnv *env, jobject obj, jmethodID methodID, ...); 382 | void (JNICALL *CallVoidMethodV) 383 | (JNIEnv *env, jobject obj, jmethodID methodID, va_list args); 384 | void (JNICALL *CallVoidMethodA) 385 | (JNIEnv *env, jobject obj, jmethodID methodID, const jvalue * args); 386 | 387 | jobject (JNICALL *CallNonvirtualObjectMethod) 388 | (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); 389 | jobject (JNICALL *CallNonvirtualObjectMethodV) 390 | (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 391 | va_list args); 392 | jobject (JNICALL *CallNonvirtualObjectMethodA) 393 | (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 394 | const jvalue * args); 395 | 396 | jboolean (JNICALL *CallNonvirtualBooleanMethod) 397 | (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); 398 | jboolean (JNICALL *CallNonvirtualBooleanMethodV) 399 | (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 400 | va_list args); 401 | jboolean (JNICALL *CallNonvirtualBooleanMethodA) 402 | (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 403 | const jvalue * args); 404 | 405 | jbyte (JNICALL *CallNonvirtualByteMethod) 406 | (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); 407 | jbyte (JNICALL *CallNonvirtualByteMethodV) 408 | (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 409 | va_list args); 410 | jbyte (JNICALL *CallNonvirtualByteMethodA) 411 | (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 412 | const jvalue *args); 413 | 414 | jchar (JNICALL *CallNonvirtualCharMethod) 415 | (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); 416 | jchar (JNICALL *CallNonvirtualCharMethodV) 417 | (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 418 | va_list args); 419 | jchar (JNICALL *CallNonvirtualCharMethodA) 420 | (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 421 | const jvalue *args); 422 | 423 | jshort (JNICALL *CallNonvirtualShortMethod) 424 | (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); 425 | jshort (JNICALL *CallNonvirtualShortMethodV) 426 | (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 427 | va_list args); 428 | jshort (JNICALL *CallNonvirtualShortMethodA) 429 | (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 430 | const jvalue *args); 431 | 432 | jint (JNICALL *CallNonvirtualIntMethod) 433 | (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); 434 | jint (JNICALL *CallNonvirtualIntMethodV) 435 | (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 436 | va_list args); 437 | jint (JNICALL *CallNonvirtualIntMethodA) 438 | (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 439 | const jvalue *args); 440 | 441 | jlong (JNICALL *CallNonvirtualLongMethod) 442 | (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); 443 | jlong (JNICALL *CallNonvirtualLongMethodV) 444 | (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 445 | va_list args); 446 | jlong (JNICALL *CallNonvirtualLongMethodA) 447 | (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 448 | const jvalue *args); 449 | 450 | jfloat (JNICALL *CallNonvirtualFloatMethod) 451 | (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); 452 | jfloat (JNICALL *CallNonvirtualFloatMethodV) 453 | (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 454 | va_list args); 455 | jfloat (JNICALL *CallNonvirtualFloatMethodA) 456 | (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 457 | const jvalue *args); 458 | 459 | jdouble (JNICALL *CallNonvirtualDoubleMethod) 460 | (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); 461 | jdouble (JNICALL *CallNonvirtualDoubleMethodV) 462 | (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 463 | va_list args); 464 | jdouble (JNICALL *CallNonvirtualDoubleMethodA) 465 | (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 466 | const jvalue *args); 467 | 468 | void (JNICALL *CallNonvirtualVoidMethod) 469 | (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, ...); 470 | void (JNICALL *CallNonvirtualVoidMethodV) 471 | (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 472 | va_list args); 473 | void (JNICALL *CallNonvirtualVoidMethodA) 474 | (JNIEnv *env, jobject obj, jclass clazz, jmethodID methodID, 475 | const jvalue * args); 476 | 477 | jfieldID (JNICALL *GetFieldID) 478 | (JNIEnv *env, jclass clazz, const char *name, const char *sig); 479 | 480 | jobject (JNICALL *GetObjectField) 481 | (JNIEnv *env, jobject obj, jfieldID fieldID); 482 | jboolean (JNICALL *GetBooleanField) 483 | (JNIEnv *env, jobject obj, jfieldID fieldID); 484 | jbyte (JNICALL *GetByteField) 485 | (JNIEnv *env, jobject obj, jfieldID fieldID); 486 | jchar (JNICALL *GetCharField) 487 | (JNIEnv *env, jobject obj, jfieldID fieldID); 488 | jshort (JNICALL *GetShortField) 489 | (JNIEnv *env, jobject obj, jfieldID fieldID); 490 | jint (JNICALL *GetIntField) 491 | (JNIEnv *env, jobject obj, jfieldID fieldID); 492 | jlong (JNICALL *GetLongField) 493 | (JNIEnv *env, jobject obj, jfieldID fieldID); 494 | jfloat (JNICALL *GetFloatField) 495 | (JNIEnv *env, jobject obj, jfieldID fieldID); 496 | jdouble (JNICALL *GetDoubleField) 497 | (JNIEnv *env, jobject obj, jfieldID fieldID); 498 | 499 | void (JNICALL *SetObjectField) 500 | (JNIEnv *env, jobject obj, jfieldID fieldID, jobject val); 501 | void (JNICALL *SetBooleanField) 502 | (JNIEnv *env, jobject obj, jfieldID fieldID, jboolean val); 503 | void (JNICALL *SetByteField) 504 | (JNIEnv *env, jobject obj, jfieldID fieldID, jbyte val); 505 | void (JNICALL *SetCharField) 506 | (JNIEnv *env, jobject obj, jfieldID fieldID, jchar val); 507 | void (JNICALL *SetShortField) 508 | (JNIEnv *env, jobject obj, jfieldID fieldID, jshort val); 509 | void (JNICALL *SetIntField) 510 | (JNIEnv *env, jobject obj, jfieldID fieldID, jint val); 511 | void (JNICALL *SetLongField) 512 | (JNIEnv *env, jobject obj, jfieldID fieldID, jlong val); 513 | void (JNICALL *SetFloatField) 514 | (JNIEnv *env, jobject obj, jfieldID fieldID, jfloat val); 515 | void (JNICALL *SetDoubleField) 516 | (JNIEnv *env, jobject obj, jfieldID fieldID, jdouble val); 517 | 518 | jmethodID (JNICALL *GetStaticMethodID) 519 | (JNIEnv *env, jclass clazz, const char *name, const char *sig); 520 | 521 | jobject (JNICALL *CallStaticObjectMethod) 522 | (JNIEnv *env, jclass clazz, jmethodID methodID, ...); 523 | jobject (JNICALL *CallStaticObjectMethodV) 524 | (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); 525 | jobject (JNICALL *CallStaticObjectMethodA) 526 | (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); 527 | 528 | jboolean (JNICALL *CallStaticBooleanMethod) 529 | (JNIEnv *env, jclass clazz, jmethodID methodID, ...); 530 | jboolean (JNICALL *CallStaticBooleanMethodV) 531 | (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); 532 | jboolean (JNICALL *CallStaticBooleanMethodA) 533 | (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); 534 | 535 | jbyte (JNICALL *CallStaticByteMethod) 536 | (JNIEnv *env, jclass clazz, jmethodID methodID, ...); 537 | jbyte (JNICALL *CallStaticByteMethodV) 538 | (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); 539 | jbyte (JNICALL *CallStaticByteMethodA) 540 | (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); 541 | 542 | jchar (JNICALL *CallStaticCharMethod) 543 | (JNIEnv *env, jclass clazz, jmethodID methodID, ...); 544 | jchar (JNICALL *CallStaticCharMethodV) 545 | (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); 546 | jchar (JNICALL *CallStaticCharMethodA) 547 | (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); 548 | 549 | jshort (JNICALL *CallStaticShortMethod) 550 | (JNIEnv *env, jclass clazz, jmethodID methodID, ...); 551 | jshort (JNICALL *CallStaticShortMethodV) 552 | (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); 553 | jshort (JNICALL *CallStaticShortMethodA) 554 | (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); 555 | 556 | jint (JNICALL *CallStaticIntMethod) 557 | (JNIEnv *env, jclass clazz, jmethodID methodID, ...); 558 | jint (JNICALL *CallStaticIntMethodV) 559 | (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); 560 | jint (JNICALL *CallStaticIntMethodA) 561 | (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); 562 | 563 | jlong (JNICALL *CallStaticLongMethod) 564 | (JNIEnv *env, jclass clazz, jmethodID methodID, ...); 565 | jlong (JNICALL *CallStaticLongMethodV) 566 | (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); 567 | jlong (JNICALL *CallStaticLongMethodA) 568 | (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); 569 | 570 | jfloat (JNICALL *CallStaticFloatMethod) 571 | (JNIEnv *env, jclass clazz, jmethodID methodID, ...); 572 | jfloat (JNICALL *CallStaticFloatMethodV) 573 | (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); 574 | jfloat (JNICALL *CallStaticFloatMethodA) 575 | (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); 576 | 577 | jdouble (JNICALL *CallStaticDoubleMethod) 578 | (JNIEnv *env, jclass clazz, jmethodID methodID, ...); 579 | jdouble (JNICALL *CallStaticDoubleMethodV) 580 | (JNIEnv *env, jclass clazz, jmethodID methodID, va_list args); 581 | jdouble (JNICALL *CallStaticDoubleMethodA) 582 | (JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args); 583 | 584 | void (JNICALL *CallStaticVoidMethod) 585 | (JNIEnv *env, jclass cls, jmethodID methodID, ...); 586 | void (JNICALL *CallStaticVoidMethodV) 587 | (JNIEnv *env, jclass cls, jmethodID methodID, va_list args); 588 | void (JNICALL *CallStaticVoidMethodA) 589 | (JNIEnv *env, jclass cls, jmethodID methodID, const jvalue * args); 590 | 591 | jfieldID (JNICALL *GetStaticFieldID) 592 | (JNIEnv *env, jclass clazz, const char *name, const char *sig); 593 | jobject (JNICALL *GetStaticObjectField) 594 | (JNIEnv *env, jclass clazz, jfieldID fieldID); 595 | jboolean (JNICALL *GetStaticBooleanField) 596 | (JNIEnv *env, jclass clazz, jfieldID fieldID); 597 | jbyte (JNICALL *GetStaticByteField) 598 | (JNIEnv *env, jclass clazz, jfieldID fieldID); 599 | jchar (JNICALL *GetStaticCharField) 600 | (JNIEnv *env, jclass clazz, jfieldID fieldID); 601 | jshort (JNICALL *GetStaticShortField) 602 | (JNIEnv *env, jclass clazz, jfieldID fieldID); 603 | jint (JNICALL *GetStaticIntField) 604 | (JNIEnv *env, jclass clazz, jfieldID fieldID); 605 | jlong (JNICALL *GetStaticLongField) 606 | (JNIEnv *env, jclass clazz, jfieldID fieldID); 607 | jfloat (JNICALL *GetStaticFloatField) 608 | (JNIEnv *env, jclass clazz, jfieldID fieldID); 609 | jdouble (JNICALL *GetStaticDoubleField) 610 | (JNIEnv *env, jclass clazz, jfieldID fieldID); 611 | 612 | void (JNICALL *SetStaticObjectField) 613 | (JNIEnv *env, jclass clazz, jfieldID fieldID, jobject value); 614 | void (JNICALL *SetStaticBooleanField) 615 | (JNIEnv *env, jclass clazz, jfieldID fieldID, jboolean value); 616 | void (JNICALL *SetStaticByteField) 617 | (JNIEnv *env, jclass clazz, jfieldID fieldID, jbyte value); 618 | void (JNICALL *SetStaticCharField) 619 | (JNIEnv *env, jclass clazz, jfieldID fieldID, jchar value); 620 | void (JNICALL *SetStaticShortField) 621 | (JNIEnv *env, jclass clazz, jfieldID fieldID, jshort value); 622 | void (JNICALL *SetStaticIntField) 623 | (JNIEnv *env, jclass clazz, jfieldID fieldID, jint value); 624 | void (JNICALL *SetStaticLongField) 625 | (JNIEnv *env, jclass clazz, jfieldID fieldID, jlong value); 626 | void (JNICALL *SetStaticFloatField) 627 | (JNIEnv *env, jclass clazz, jfieldID fieldID, jfloat value); 628 | void (JNICALL *SetStaticDoubleField) 629 | (JNIEnv *env, jclass clazz, jfieldID fieldID, jdouble value); 630 | 631 | jstring (JNICALL *NewString) 632 | (JNIEnv *env, const jchar *unicode, jsize len); 633 | jsize (JNICALL *GetStringLength) 634 | (JNIEnv *env, jstring str); 635 | const jchar *(JNICALL *GetStringChars) 636 | (JNIEnv *env, jstring str, jboolean *isCopy); 637 | void (JNICALL *ReleaseStringChars) 638 | (JNIEnv *env, jstring str, const jchar *chars); 639 | 640 | jstring (JNICALL *NewStringUTF) 641 | (JNIEnv *env, const char *utf); 642 | jsize (JNICALL *GetStringUTFLength) 643 | (JNIEnv *env, jstring str); 644 | const char* (JNICALL *GetStringUTFChars) 645 | (JNIEnv *env, jstring str, jboolean *isCopy); 646 | void (JNICALL *ReleaseStringUTFChars) 647 | (JNIEnv *env, jstring str, const char* chars); 648 | 649 | 650 | jsize (JNICALL *GetArrayLength) 651 | (JNIEnv *env, jarray array); 652 | 653 | jobjectArray (JNICALL *NewObjectArray) 654 | (JNIEnv *env, jsize len, jclass clazz, jobject init); 655 | jobject (JNICALL *GetObjectArrayElement) 656 | (JNIEnv *env, jobjectArray array, jsize index); 657 | void (JNICALL *SetObjectArrayElement) 658 | (JNIEnv *env, jobjectArray array, jsize index, jobject val); 659 | 660 | jbooleanArray (JNICALL *NewBooleanArray) 661 | (JNIEnv *env, jsize len); 662 | jbyteArray (JNICALL *NewByteArray) 663 | (JNIEnv *env, jsize len); 664 | jcharArray (JNICALL *NewCharArray) 665 | (JNIEnv *env, jsize len); 666 | jshortArray (JNICALL *NewShortArray) 667 | (JNIEnv *env, jsize len); 668 | jintArray (JNICALL *NewIntArray) 669 | (JNIEnv *env, jsize len); 670 | jlongArray (JNICALL *NewLongArray) 671 | (JNIEnv *env, jsize len); 672 | jfloatArray (JNICALL *NewFloatArray) 673 | (JNIEnv *env, jsize len); 674 | jdoubleArray (JNICALL *NewDoubleArray) 675 | (JNIEnv *env, jsize len); 676 | 677 | jboolean * (JNICALL *GetBooleanArrayElements) 678 | (JNIEnv *env, jbooleanArray array, jboolean *isCopy); 679 | jbyte * (JNICALL *GetByteArrayElements) 680 | (JNIEnv *env, jbyteArray array, jboolean *isCopy); 681 | jchar * (JNICALL *GetCharArrayElements) 682 | (JNIEnv *env, jcharArray array, jboolean *isCopy); 683 | jshort * (JNICALL *GetShortArrayElements) 684 | (JNIEnv *env, jshortArray array, jboolean *isCopy); 685 | jint * (JNICALL *GetIntArrayElements) 686 | (JNIEnv *env, jintArray array, jboolean *isCopy); 687 | jlong * (JNICALL *GetLongArrayElements) 688 | (JNIEnv *env, jlongArray array, jboolean *isCopy); 689 | jfloat * (JNICALL *GetFloatArrayElements) 690 | (JNIEnv *env, jfloatArray array, jboolean *isCopy); 691 | jdouble * (JNICALL *GetDoubleArrayElements) 692 | (JNIEnv *env, jdoubleArray array, jboolean *isCopy); 693 | 694 | void (JNICALL *ReleaseBooleanArrayElements) 695 | (JNIEnv *env, jbooleanArray array, jboolean *elems, jint mode); 696 | void (JNICALL *ReleaseByteArrayElements) 697 | (JNIEnv *env, jbyteArray array, jbyte *elems, jint mode); 698 | void (JNICALL *ReleaseCharArrayElements) 699 | (JNIEnv *env, jcharArray array, jchar *elems, jint mode); 700 | void (JNICALL *ReleaseShortArrayElements) 701 | (JNIEnv *env, jshortArray array, jshort *elems, jint mode); 702 | void (JNICALL *ReleaseIntArrayElements) 703 | (JNIEnv *env, jintArray array, jint *elems, jint mode); 704 | void (JNICALL *ReleaseLongArrayElements) 705 | (JNIEnv *env, jlongArray array, jlong *elems, jint mode); 706 | void (JNICALL *ReleaseFloatArrayElements) 707 | (JNIEnv *env, jfloatArray array, jfloat *elems, jint mode); 708 | void (JNICALL *ReleaseDoubleArrayElements) 709 | (JNIEnv *env, jdoubleArray array, jdouble *elems, jint mode); 710 | 711 | void (JNICALL *GetBooleanArrayRegion) 712 | (JNIEnv *env, jbooleanArray array, jsize start, jsize l, jboolean *buf); 713 | void (JNICALL *GetByteArrayRegion) 714 | (JNIEnv *env, jbyteArray array, jsize start, jsize len, jbyte *buf); 715 | void (JNICALL *GetCharArrayRegion) 716 | (JNIEnv *env, jcharArray array, jsize start, jsize len, jchar *buf); 717 | void (JNICALL *GetShortArrayRegion) 718 | (JNIEnv *env, jshortArray array, jsize start, jsize len, jshort *buf); 719 | void (JNICALL *GetIntArrayRegion) 720 | (JNIEnv *env, jintArray array, jsize start, jsize len, jint *buf); 721 | void (JNICALL *GetLongArrayRegion) 722 | (JNIEnv *env, jlongArray array, jsize start, jsize len, jlong *buf); 723 | void (JNICALL *GetFloatArrayRegion) 724 | (JNIEnv *env, jfloatArray array, jsize start, jsize len, jfloat *buf); 725 | void (JNICALL *GetDoubleArrayRegion) 726 | (JNIEnv *env, jdoubleArray array, jsize start, jsize len, jdouble *buf); 727 | 728 | void (JNICALL *SetBooleanArrayRegion) 729 | (JNIEnv *env, jbooleanArray array, jsize start, jsize l, const jboolean *buf); 730 | void (JNICALL *SetByteArrayRegion) 731 | (JNIEnv *env, jbyteArray array, jsize start, jsize len, const jbyte *buf); 732 | void (JNICALL *SetCharArrayRegion) 733 | (JNIEnv *env, jcharArray array, jsize start, jsize len, const jchar *buf); 734 | void (JNICALL *SetShortArrayRegion) 735 | (JNIEnv *env, jshortArray array, jsize start, jsize len, const jshort *buf); 736 | void (JNICALL *SetIntArrayRegion) 737 | (JNIEnv *env, jintArray array, jsize start, jsize len, const jint *buf); 738 | void (JNICALL *SetLongArrayRegion) 739 | (JNIEnv *env, jlongArray array, jsize start, jsize len, const jlong *buf); 740 | void (JNICALL *SetFloatArrayRegion) 741 | (JNIEnv *env, jfloatArray array, jsize start, jsize len, const jfloat *buf); 742 | void (JNICALL *SetDoubleArrayRegion) 743 | (JNIEnv *env, jdoubleArray array, jsize start, jsize len, const jdouble *buf); 744 | 745 | jint (JNICALL *RegisterNatives) 746 | (JNIEnv *env, jclass clazz, const JNINativeMethod *methods, 747 | jint nMethods); 748 | jint (JNICALL *UnregisterNatives) 749 | (JNIEnv *env, jclass clazz); 750 | 751 | jint (JNICALL *MonitorEnter) 752 | (JNIEnv *env, jobject obj); 753 | jint (JNICALL *MonitorExit) 754 | (JNIEnv *env, jobject obj); 755 | 756 | jint (JNICALL *GetJavaVM) 757 | (JNIEnv *env, JavaVM **vm); 758 | 759 | void (JNICALL *GetStringRegion) 760 | (JNIEnv *env, jstring str, jsize start, jsize len, jchar *buf); 761 | void (JNICALL *GetStringUTFRegion) 762 | (JNIEnv *env, jstring str, jsize start, jsize len, char *buf); 763 | 764 | void * (JNICALL *GetPrimitiveArrayCritical) 765 | (JNIEnv *env, jarray array, jboolean *isCopy); 766 | void (JNICALL *ReleasePrimitiveArrayCritical) 767 | (JNIEnv *env, jarray array, void *carray, jint mode); 768 | 769 | const jchar * (JNICALL *GetStringCritical) 770 | (JNIEnv *env, jstring string, jboolean *isCopy); 771 | void (JNICALL *ReleaseStringCritical) 772 | (JNIEnv *env, jstring string, const jchar *cstring); 773 | 774 | jweak (JNICALL *NewWeakGlobalRef) 775 | (JNIEnv *env, jobject obj); 776 | void (JNICALL *DeleteWeakGlobalRef) 777 | (JNIEnv *env, jweak ref); 778 | 779 | jboolean (JNICALL *ExceptionCheck) 780 | (JNIEnv *env); 781 | 782 | jobject (JNICALL *NewDirectByteBuffer) 783 | (JNIEnv* env, void* address, jlong capacity); 784 | void* (JNICALL *GetDirectBufferAddress) 785 | (JNIEnv* env, jobject buf); 786 | jlong (JNICALL *GetDirectBufferCapacity) 787 | (JNIEnv* env, jobject buf); 788 | 789 | /* New JNI 1.6 Features */ 790 | 791 | jobjectRefType (JNICALL *GetObjectRefType) 792 | (JNIEnv* env, jobject obj); 793 | }; 794 | 795 | /* 796 | * We use inlined functions for C++ so that programmers can write: 797 | * 798 | * env->FindClass("java/lang/String") 799 | * 800 | * in C++ rather than: 801 | * 802 | * (*env)->FindClass(env, "java/lang/String") 803 | * 804 | * in C. 805 | */ 806 | 807 | struct JNIEnv_ { 808 | const struct JNINativeInterface_ *functions; 809 | #ifdef __cplusplus 810 | 811 | jint GetVersion() { 812 | return functions->GetVersion(this); 813 | } 814 | jclass DefineClass(const char *name, jobject loader, const jbyte *buf, 815 | jsize len) { 816 | return functions->DefineClass(this, name, loader, buf, len); 817 | } 818 | jclass FindClass(const char *name) { 819 | return functions->FindClass(this, name); 820 | } 821 | jmethodID FromReflectedMethod(jobject method) { 822 | return functions->FromReflectedMethod(this,method); 823 | } 824 | jfieldID FromReflectedField(jobject field) { 825 | return functions->FromReflectedField(this,field); 826 | } 827 | 828 | jobject ToReflectedMethod(jclass cls, jmethodID methodID, jboolean isStatic) { 829 | return functions->ToReflectedMethod(this, cls, methodID, isStatic); 830 | } 831 | 832 | jclass GetSuperclass(jclass sub) { 833 | return functions->GetSuperclass(this, sub); 834 | } 835 | jboolean IsAssignableFrom(jclass sub, jclass sup) { 836 | return functions->IsAssignableFrom(this, sub, sup); 837 | } 838 | 839 | jobject ToReflectedField(jclass cls, jfieldID fieldID, jboolean isStatic) { 840 | return functions->ToReflectedField(this,cls,fieldID,isStatic); 841 | } 842 | 843 | jint Throw(jthrowable obj) { 844 | return functions->Throw(this, obj); 845 | } 846 | jint ThrowNew(jclass clazz, const char *msg) { 847 | return functions->ThrowNew(this, clazz, msg); 848 | } 849 | jthrowable ExceptionOccurred() { 850 | return functions->ExceptionOccurred(this); 851 | } 852 | void ExceptionDescribe() { 853 | functions->ExceptionDescribe(this); 854 | } 855 | void ExceptionClear() { 856 | functions->ExceptionClear(this); 857 | } 858 | void FatalError(const char *msg) { 859 | functions->FatalError(this, msg); 860 | } 861 | 862 | jint PushLocalFrame(jint capacity) { 863 | return functions->PushLocalFrame(this,capacity); 864 | } 865 | jobject PopLocalFrame(jobject result) { 866 | return functions->PopLocalFrame(this,result); 867 | } 868 | 869 | jobject NewGlobalRef(jobject lobj) { 870 | return functions->NewGlobalRef(this,lobj); 871 | } 872 | void DeleteGlobalRef(jobject gref) { 873 | functions->DeleteGlobalRef(this,gref); 874 | } 875 | void DeleteLocalRef(jobject obj) { 876 | functions->DeleteLocalRef(this, obj); 877 | } 878 | 879 | jboolean IsSameObject(jobject obj1, jobject obj2) { 880 | return functions->IsSameObject(this,obj1,obj2); 881 | } 882 | 883 | jobject NewLocalRef(jobject ref) { 884 | return functions->NewLocalRef(this,ref); 885 | } 886 | jint EnsureLocalCapacity(jint capacity) { 887 | return functions->EnsureLocalCapacity(this,capacity); 888 | } 889 | 890 | jobject AllocObject(jclass clazz) { 891 | return functions->AllocObject(this,clazz); 892 | } 893 | jobject NewObject(jclass clazz, jmethodID methodID, ...) { 894 | va_list args; 895 | jobject result; 896 | va_start(args, methodID); 897 | result = functions->NewObjectV(this,clazz,methodID,args); 898 | va_end(args); 899 | return result; 900 | } 901 | jobject NewObjectV(jclass clazz, jmethodID methodID, 902 | va_list args) { 903 | return functions->NewObjectV(this,clazz,methodID,args); 904 | } 905 | jobject NewObjectA(jclass clazz, jmethodID methodID, 906 | const jvalue *args) { 907 | return functions->NewObjectA(this,clazz,methodID,args); 908 | } 909 | 910 | jclass GetObjectClass(jobject obj) { 911 | return functions->GetObjectClass(this,obj); 912 | } 913 | jboolean IsInstanceOf(jobject obj, jclass clazz) { 914 | return functions->IsInstanceOf(this,obj,clazz); 915 | } 916 | 917 | jmethodID GetMethodID(jclass clazz, const char *name, 918 | const char *sig) { 919 | return functions->GetMethodID(this,clazz,name,sig); 920 | } 921 | 922 | jobject CallObjectMethod(jobject obj, jmethodID methodID, ...) { 923 | va_list args; 924 | jobject result; 925 | va_start(args,methodID); 926 | result = functions->CallObjectMethodV(this,obj,methodID,args); 927 | va_end(args); 928 | return result; 929 | } 930 | jobject CallObjectMethodV(jobject obj, jmethodID methodID, 931 | va_list args) { 932 | return functions->CallObjectMethodV(this,obj,methodID,args); 933 | } 934 | jobject CallObjectMethodA(jobject obj, jmethodID methodID, 935 | const jvalue * args) { 936 | return functions->CallObjectMethodA(this,obj,methodID,args); 937 | } 938 | 939 | jboolean CallBooleanMethod(jobject obj, 940 | jmethodID methodID, ...) { 941 | va_list args; 942 | jboolean result; 943 | va_start(args,methodID); 944 | result = functions->CallBooleanMethodV(this,obj,methodID,args); 945 | va_end(args); 946 | return result; 947 | } 948 | jboolean CallBooleanMethodV(jobject obj, jmethodID methodID, 949 | va_list args) { 950 | return functions->CallBooleanMethodV(this,obj,methodID,args); 951 | } 952 | jboolean CallBooleanMethodA(jobject obj, jmethodID methodID, 953 | const jvalue * args) { 954 | return functions->CallBooleanMethodA(this,obj,methodID, args); 955 | } 956 | 957 | jbyte CallByteMethod(jobject obj, jmethodID methodID, ...) { 958 | va_list args; 959 | jbyte result; 960 | va_start(args,methodID); 961 | result = functions->CallByteMethodV(this,obj,methodID,args); 962 | va_end(args); 963 | return result; 964 | } 965 | jbyte CallByteMethodV(jobject obj, jmethodID methodID, 966 | va_list args) { 967 | return functions->CallByteMethodV(this,obj,methodID,args); 968 | } 969 | jbyte CallByteMethodA(jobject obj, jmethodID methodID, 970 | const jvalue * args) { 971 | return functions->CallByteMethodA(this,obj,methodID,args); 972 | } 973 | 974 | jchar CallCharMethod(jobject obj, jmethodID methodID, ...) { 975 | va_list args; 976 | jchar result; 977 | va_start(args,methodID); 978 | result = functions->CallCharMethodV(this,obj,methodID,args); 979 | va_end(args); 980 | return result; 981 | } 982 | jchar CallCharMethodV(jobject obj, jmethodID methodID, 983 | va_list args) { 984 | return functions->CallCharMethodV(this,obj,methodID,args); 985 | } 986 | jchar CallCharMethodA(jobject obj, jmethodID methodID, 987 | const jvalue * args) { 988 | return functions->CallCharMethodA(this,obj,methodID,args); 989 | } 990 | 991 | jshort CallShortMethod(jobject obj, jmethodID methodID, ...) { 992 | va_list args; 993 | jshort result; 994 | va_start(args,methodID); 995 | result = functions->CallShortMethodV(this,obj,methodID,args); 996 | va_end(args); 997 | return result; 998 | } 999 | jshort CallShortMethodV(jobject obj, jmethodID methodID, 1000 | va_list args) { 1001 | return functions->CallShortMethodV(this,obj,methodID,args); 1002 | } 1003 | jshort CallShortMethodA(jobject obj, jmethodID methodID, 1004 | const jvalue * args) { 1005 | return functions->CallShortMethodA(this,obj,methodID,args); 1006 | } 1007 | 1008 | jint CallIntMethod(jobject obj, jmethodID methodID, ...) { 1009 | va_list args; 1010 | jint result; 1011 | va_start(args,methodID); 1012 | result = functions->CallIntMethodV(this,obj,methodID,args); 1013 | va_end(args); 1014 | return result; 1015 | } 1016 | jint CallIntMethodV(jobject obj, jmethodID methodID, 1017 | va_list args) { 1018 | return functions->CallIntMethodV(this,obj,methodID,args); 1019 | } 1020 | jint CallIntMethodA(jobject obj, jmethodID methodID, 1021 | const jvalue * args) { 1022 | return functions->CallIntMethodA(this,obj,methodID,args); 1023 | } 1024 | 1025 | jlong CallLongMethod(jobject obj, jmethodID methodID, ...) { 1026 | va_list args; 1027 | jlong result; 1028 | va_start(args,methodID); 1029 | result = functions->CallLongMethodV(this,obj,methodID,args); 1030 | va_end(args); 1031 | return result; 1032 | } 1033 | jlong CallLongMethodV(jobject obj, jmethodID methodID, 1034 | va_list args) { 1035 | return functions->CallLongMethodV(this,obj,methodID,args); 1036 | } 1037 | jlong CallLongMethodA(jobject obj, jmethodID methodID, 1038 | const jvalue * args) { 1039 | return functions->CallLongMethodA(this,obj,methodID,args); 1040 | } 1041 | 1042 | jfloat CallFloatMethod(jobject obj, jmethodID methodID, ...) { 1043 | va_list args; 1044 | jfloat result; 1045 | va_start(args,methodID); 1046 | result = functions->CallFloatMethodV(this,obj,methodID,args); 1047 | va_end(args); 1048 | return result; 1049 | } 1050 | jfloat CallFloatMethodV(jobject obj, jmethodID methodID, 1051 | va_list args) { 1052 | return functions->CallFloatMethodV(this,obj,methodID,args); 1053 | } 1054 | jfloat CallFloatMethodA(jobject obj, jmethodID methodID, 1055 | const jvalue * args) { 1056 | return functions->CallFloatMethodA(this,obj,methodID,args); 1057 | } 1058 | 1059 | jdouble CallDoubleMethod(jobject obj, jmethodID methodID, ...) { 1060 | va_list args; 1061 | jdouble result; 1062 | va_start(args,methodID); 1063 | result = functions->CallDoubleMethodV(this,obj,methodID,args); 1064 | va_end(args); 1065 | return result; 1066 | } 1067 | jdouble CallDoubleMethodV(jobject obj, jmethodID methodID, 1068 | va_list args) { 1069 | return functions->CallDoubleMethodV(this,obj,methodID,args); 1070 | } 1071 | jdouble CallDoubleMethodA(jobject obj, jmethodID methodID, 1072 | const jvalue * args) { 1073 | return functions->CallDoubleMethodA(this,obj,methodID,args); 1074 | } 1075 | 1076 | void CallVoidMethod(jobject obj, jmethodID methodID, ...) { 1077 | va_list args; 1078 | va_start(args,methodID); 1079 | functions->CallVoidMethodV(this,obj,methodID,args); 1080 | va_end(args); 1081 | } 1082 | void CallVoidMethodV(jobject obj, jmethodID methodID, 1083 | va_list args) { 1084 | functions->CallVoidMethodV(this,obj,methodID,args); 1085 | } 1086 | void CallVoidMethodA(jobject obj, jmethodID methodID, 1087 | const jvalue * args) { 1088 | functions->CallVoidMethodA(this,obj,methodID,args); 1089 | } 1090 | 1091 | jobject CallNonvirtualObjectMethod(jobject obj, jclass clazz, 1092 | jmethodID methodID, ...) { 1093 | va_list args; 1094 | jobject result; 1095 | va_start(args,methodID); 1096 | result = functions->CallNonvirtualObjectMethodV(this,obj,clazz, 1097 | methodID,args); 1098 | va_end(args); 1099 | return result; 1100 | } 1101 | jobject CallNonvirtualObjectMethodV(jobject obj, jclass clazz, 1102 | jmethodID methodID, va_list args) { 1103 | return functions->CallNonvirtualObjectMethodV(this,obj,clazz, 1104 | methodID,args); 1105 | } 1106 | jobject CallNonvirtualObjectMethodA(jobject obj, jclass clazz, 1107 | jmethodID methodID, const jvalue * args) { 1108 | return functions->CallNonvirtualObjectMethodA(this,obj,clazz, 1109 | methodID,args); 1110 | } 1111 | 1112 | jboolean CallNonvirtualBooleanMethod(jobject obj, jclass clazz, 1113 | jmethodID methodID, ...) { 1114 | va_list args; 1115 | jboolean result; 1116 | va_start(args,methodID); 1117 | result = functions->CallNonvirtualBooleanMethodV(this,obj,clazz, 1118 | methodID,args); 1119 | va_end(args); 1120 | return result; 1121 | } 1122 | jboolean CallNonvirtualBooleanMethodV(jobject obj, jclass clazz, 1123 | jmethodID methodID, va_list args) { 1124 | return functions->CallNonvirtualBooleanMethodV(this,obj,clazz, 1125 | methodID,args); 1126 | } 1127 | jboolean CallNonvirtualBooleanMethodA(jobject obj, jclass clazz, 1128 | jmethodID methodID, const jvalue * args) { 1129 | return functions->CallNonvirtualBooleanMethodA(this,obj,clazz, 1130 | methodID, args); 1131 | } 1132 | 1133 | jbyte CallNonvirtualByteMethod(jobject obj, jclass clazz, 1134 | jmethodID methodID, ...) { 1135 | va_list args; 1136 | jbyte result; 1137 | va_start(args,methodID); 1138 | result = functions->CallNonvirtualByteMethodV(this,obj,clazz, 1139 | methodID,args); 1140 | va_end(args); 1141 | return result; 1142 | } 1143 | jbyte CallNonvirtualByteMethodV(jobject obj, jclass clazz, 1144 | jmethodID methodID, va_list args) { 1145 | return functions->CallNonvirtualByteMethodV(this,obj,clazz, 1146 | methodID,args); 1147 | } 1148 | jbyte CallNonvirtualByteMethodA(jobject obj, jclass clazz, 1149 | jmethodID methodID, const jvalue * args) { 1150 | return functions->CallNonvirtualByteMethodA(this,obj,clazz, 1151 | methodID,args); 1152 | } 1153 | 1154 | jchar CallNonvirtualCharMethod(jobject obj, jclass clazz, 1155 | jmethodID methodID, ...) { 1156 | va_list args; 1157 | jchar result; 1158 | va_start(args,methodID); 1159 | result = functions->CallNonvirtualCharMethodV(this,obj,clazz, 1160 | methodID,args); 1161 | va_end(args); 1162 | return result; 1163 | } 1164 | jchar CallNonvirtualCharMethodV(jobject obj, jclass clazz, 1165 | jmethodID methodID, va_list args) { 1166 | return functions->CallNonvirtualCharMethodV(this,obj,clazz, 1167 | methodID,args); 1168 | } 1169 | jchar CallNonvirtualCharMethodA(jobject obj, jclass clazz, 1170 | jmethodID methodID, const jvalue * args) { 1171 | return functions->CallNonvirtualCharMethodA(this,obj,clazz, 1172 | methodID,args); 1173 | } 1174 | 1175 | jshort CallNonvirtualShortMethod(jobject obj, jclass clazz, 1176 | jmethodID methodID, ...) { 1177 | va_list args; 1178 | jshort result; 1179 | va_start(args,methodID); 1180 | result = functions->CallNonvirtualShortMethodV(this,obj,clazz, 1181 | methodID,args); 1182 | va_end(args); 1183 | return result; 1184 | } 1185 | jshort CallNonvirtualShortMethodV(jobject obj, jclass clazz, 1186 | jmethodID methodID, va_list args) { 1187 | return functions->CallNonvirtualShortMethodV(this,obj,clazz, 1188 | methodID,args); 1189 | } 1190 | jshort CallNonvirtualShortMethodA(jobject obj, jclass clazz, 1191 | jmethodID methodID, const jvalue * args) { 1192 | return functions->CallNonvirtualShortMethodA(this,obj,clazz, 1193 | methodID,args); 1194 | } 1195 | 1196 | jint CallNonvirtualIntMethod(jobject obj, jclass clazz, 1197 | jmethodID methodID, ...) { 1198 | va_list args; 1199 | jint result; 1200 | va_start(args,methodID); 1201 | result = functions->CallNonvirtualIntMethodV(this,obj,clazz, 1202 | methodID,args); 1203 | va_end(args); 1204 | return result; 1205 | } 1206 | jint CallNonvirtualIntMethodV(jobject obj, jclass clazz, 1207 | jmethodID methodID, va_list args) { 1208 | return functions->CallNonvirtualIntMethodV(this,obj,clazz, 1209 | methodID,args); 1210 | } 1211 | jint CallNonvirtualIntMethodA(jobject obj, jclass clazz, 1212 | jmethodID methodID, const jvalue * args) { 1213 | return functions->CallNonvirtualIntMethodA(this,obj,clazz, 1214 | methodID,args); 1215 | } 1216 | 1217 | jlong CallNonvirtualLongMethod(jobject obj, jclass clazz, 1218 | jmethodID methodID, ...) { 1219 | va_list args; 1220 | jlong result; 1221 | va_start(args,methodID); 1222 | result = functions->CallNonvirtualLongMethodV(this,obj,clazz, 1223 | methodID,args); 1224 | va_end(args); 1225 | return result; 1226 | } 1227 | jlong CallNonvirtualLongMethodV(jobject obj, jclass clazz, 1228 | jmethodID methodID, va_list args) { 1229 | return functions->CallNonvirtualLongMethodV(this,obj,clazz, 1230 | methodID,args); 1231 | } 1232 | jlong CallNonvirtualLongMethodA(jobject obj, jclass clazz, 1233 | jmethodID methodID, const jvalue * args) { 1234 | return functions->CallNonvirtualLongMethodA(this,obj,clazz, 1235 | methodID,args); 1236 | } 1237 | 1238 | jfloat CallNonvirtualFloatMethod(jobject obj, jclass clazz, 1239 | jmethodID methodID, ...) { 1240 | va_list args; 1241 | jfloat result; 1242 | va_start(args,methodID); 1243 | result = functions->CallNonvirtualFloatMethodV(this,obj,clazz, 1244 | methodID,args); 1245 | va_end(args); 1246 | return result; 1247 | } 1248 | jfloat CallNonvirtualFloatMethodV(jobject obj, jclass clazz, 1249 | jmethodID methodID, 1250 | va_list args) { 1251 | return functions->CallNonvirtualFloatMethodV(this,obj,clazz, 1252 | methodID,args); 1253 | } 1254 | jfloat CallNonvirtualFloatMethodA(jobject obj, jclass clazz, 1255 | jmethodID methodID, 1256 | const jvalue * args) { 1257 | return functions->CallNonvirtualFloatMethodA(this,obj,clazz, 1258 | methodID,args); 1259 | } 1260 | 1261 | jdouble CallNonvirtualDoubleMethod(jobject obj, jclass clazz, 1262 | jmethodID methodID, ...) { 1263 | va_list args; 1264 | jdouble result; 1265 | va_start(args,methodID); 1266 | result = functions->CallNonvirtualDoubleMethodV(this,obj,clazz, 1267 | methodID,args); 1268 | va_end(args); 1269 | return result; 1270 | } 1271 | jdouble CallNonvirtualDoubleMethodV(jobject obj, jclass clazz, 1272 | jmethodID methodID, 1273 | va_list args) { 1274 | return functions->CallNonvirtualDoubleMethodV(this,obj,clazz, 1275 | methodID,args); 1276 | } 1277 | jdouble CallNonvirtualDoubleMethodA(jobject obj, jclass clazz, 1278 | jmethodID methodID, 1279 | const jvalue * args) { 1280 | return functions->CallNonvirtualDoubleMethodA(this,obj,clazz, 1281 | methodID,args); 1282 | } 1283 | 1284 | void CallNonvirtualVoidMethod(jobject obj, jclass clazz, 1285 | jmethodID methodID, ...) { 1286 | va_list args; 1287 | va_start(args,methodID); 1288 | functions->CallNonvirtualVoidMethodV(this,obj,clazz,methodID,args); 1289 | va_end(args); 1290 | } 1291 | void CallNonvirtualVoidMethodV(jobject obj, jclass clazz, 1292 | jmethodID methodID, 1293 | va_list args) { 1294 | functions->CallNonvirtualVoidMethodV(this,obj,clazz,methodID,args); 1295 | } 1296 | void CallNonvirtualVoidMethodA(jobject obj, jclass clazz, 1297 | jmethodID methodID, 1298 | const jvalue * args) { 1299 | functions->CallNonvirtualVoidMethodA(this,obj,clazz,methodID,args); 1300 | } 1301 | 1302 | jfieldID GetFieldID(jclass clazz, const char *name, 1303 | const char *sig) { 1304 | return functions->GetFieldID(this,clazz,name,sig); 1305 | } 1306 | 1307 | jobject GetObjectField(jobject obj, jfieldID fieldID) { 1308 | return functions->GetObjectField(this,obj,fieldID); 1309 | } 1310 | jboolean GetBooleanField(jobject obj, jfieldID fieldID) { 1311 | return functions->GetBooleanField(this,obj,fieldID); 1312 | } 1313 | jbyte GetByteField(jobject obj, jfieldID fieldID) { 1314 | return functions->GetByteField(this,obj,fieldID); 1315 | } 1316 | jchar GetCharField(jobject obj, jfieldID fieldID) { 1317 | return functions->GetCharField(this,obj,fieldID); 1318 | } 1319 | jshort GetShortField(jobject obj, jfieldID fieldID) { 1320 | return functions->GetShortField(this,obj,fieldID); 1321 | } 1322 | jint GetIntField(jobject obj, jfieldID fieldID) { 1323 | return functions->GetIntField(this,obj,fieldID); 1324 | } 1325 | jlong GetLongField(jobject obj, jfieldID fieldID) { 1326 | return functions->GetLongField(this,obj,fieldID); 1327 | } 1328 | jfloat GetFloatField(jobject obj, jfieldID fieldID) { 1329 | return functions->GetFloatField(this,obj,fieldID); 1330 | } 1331 | jdouble GetDoubleField(jobject obj, jfieldID fieldID) { 1332 | return functions->GetDoubleField(this,obj,fieldID); 1333 | } 1334 | 1335 | void SetObjectField(jobject obj, jfieldID fieldID, jobject val) { 1336 | functions->SetObjectField(this,obj,fieldID,val); 1337 | } 1338 | void SetBooleanField(jobject obj, jfieldID fieldID, 1339 | jboolean val) { 1340 | functions->SetBooleanField(this,obj,fieldID,val); 1341 | } 1342 | void SetByteField(jobject obj, jfieldID fieldID, 1343 | jbyte val) { 1344 | functions->SetByteField(this,obj,fieldID,val); 1345 | } 1346 | void SetCharField(jobject obj, jfieldID fieldID, 1347 | jchar val) { 1348 | functions->SetCharField(this,obj,fieldID,val); 1349 | } 1350 | void SetShortField(jobject obj, jfieldID fieldID, 1351 | jshort val) { 1352 | functions->SetShortField(this,obj,fieldID,val); 1353 | } 1354 | void SetIntField(jobject obj, jfieldID fieldID, 1355 | jint val) { 1356 | functions->SetIntField(this,obj,fieldID,val); 1357 | } 1358 | void SetLongField(jobject obj, jfieldID fieldID, 1359 | jlong val) { 1360 | functions->SetLongField(this,obj,fieldID,val); 1361 | } 1362 | void SetFloatField(jobject obj, jfieldID fieldID, 1363 | jfloat val) { 1364 | functions->SetFloatField(this,obj,fieldID,val); 1365 | } 1366 | void SetDoubleField(jobject obj, jfieldID fieldID, 1367 | jdouble val) { 1368 | functions->SetDoubleField(this,obj,fieldID,val); 1369 | } 1370 | 1371 | jmethodID GetStaticMethodID(jclass clazz, const char *name, 1372 | const char *sig) { 1373 | return functions->GetStaticMethodID(this,clazz,name,sig); 1374 | } 1375 | 1376 | jobject CallStaticObjectMethod(jclass clazz, jmethodID methodID, 1377 | ...) { 1378 | va_list args; 1379 | jobject result; 1380 | va_start(args,methodID); 1381 | result = functions->CallStaticObjectMethodV(this,clazz,methodID,args); 1382 | va_end(args); 1383 | return result; 1384 | } 1385 | jobject CallStaticObjectMethodV(jclass clazz, jmethodID methodID, 1386 | va_list args) { 1387 | return functions->CallStaticObjectMethodV(this,clazz,methodID,args); 1388 | } 1389 | jobject CallStaticObjectMethodA(jclass clazz, jmethodID methodID, 1390 | const jvalue *args) { 1391 | return functions->CallStaticObjectMethodA(this,clazz,methodID,args); 1392 | } 1393 | 1394 | jboolean CallStaticBooleanMethod(jclass clazz, 1395 | jmethodID methodID, ...) { 1396 | va_list args; 1397 | jboolean result; 1398 | va_start(args,methodID); 1399 | result = functions->CallStaticBooleanMethodV(this,clazz,methodID,args); 1400 | va_end(args); 1401 | return result; 1402 | } 1403 | jboolean CallStaticBooleanMethodV(jclass clazz, 1404 | jmethodID methodID, va_list args) { 1405 | return functions->CallStaticBooleanMethodV(this,clazz,methodID,args); 1406 | } 1407 | jboolean CallStaticBooleanMethodA(jclass clazz, 1408 | jmethodID methodID, const jvalue *args) { 1409 | return functions->CallStaticBooleanMethodA(this,clazz,methodID,args); 1410 | } 1411 | 1412 | jbyte CallStaticByteMethod(jclass clazz, 1413 | jmethodID methodID, ...) { 1414 | va_list args; 1415 | jbyte result; 1416 | va_start(args,methodID); 1417 | result = functions->CallStaticByteMethodV(this,clazz,methodID,args); 1418 | va_end(args); 1419 | return result; 1420 | } 1421 | jbyte CallStaticByteMethodV(jclass clazz, 1422 | jmethodID methodID, va_list args) { 1423 | return functions->CallStaticByteMethodV(this,clazz,methodID,args); 1424 | } 1425 | jbyte CallStaticByteMethodA(jclass clazz, 1426 | jmethodID methodID, const jvalue *args) { 1427 | return functions->CallStaticByteMethodA(this,clazz,methodID,args); 1428 | } 1429 | 1430 | jchar CallStaticCharMethod(jclass clazz, 1431 | jmethodID methodID, ...) { 1432 | va_list args; 1433 | jchar result; 1434 | va_start(args,methodID); 1435 | result = functions->CallStaticCharMethodV(this,clazz,methodID,args); 1436 | va_end(args); 1437 | return result; 1438 | } 1439 | jchar CallStaticCharMethodV(jclass clazz, 1440 | jmethodID methodID, va_list args) { 1441 | return functions->CallStaticCharMethodV(this,clazz,methodID,args); 1442 | } 1443 | jchar CallStaticCharMethodA(jclass clazz, 1444 | jmethodID methodID, const jvalue *args) { 1445 | return functions->CallStaticCharMethodA(this,clazz,methodID,args); 1446 | } 1447 | 1448 | jshort CallStaticShortMethod(jclass clazz, 1449 | jmethodID methodID, ...) { 1450 | va_list args; 1451 | jshort result; 1452 | va_start(args,methodID); 1453 | result = functions->CallStaticShortMethodV(this,clazz,methodID,args); 1454 | va_end(args); 1455 | return result; 1456 | } 1457 | jshort CallStaticShortMethodV(jclass clazz, 1458 | jmethodID methodID, va_list args) { 1459 | return functions->CallStaticShortMethodV(this,clazz,methodID,args); 1460 | } 1461 | jshort CallStaticShortMethodA(jclass clazz, 1462 | jmethodID methodID, const jvalue *args) { 1463 | return functions->CallStaticShortMethodA(this,clazz,methodID,args); 1464 | } 1465 | 1466 | jint CallStaticIntMethod(jclass clazz, 1467 | jmethodID methodID, ...) { 1468 | va_list args; 1469 | jint result; 1470 | va_start(args,methodID); 1471 | result = functions->CallStaticIntMethodV(this,clazz,methodID,args); 1472 | va_end(args); 1473 | return result; 1474 | } 1475 | jint CallStaticIntMethodV(jclass clazz, 1476 | jmethodID methodID, va_list args) { 1477 | return functions->CallStaticIntMethodV(this,clazz,methodID,args); 1478 | } 1479 | jint CallStaticIntMethodA(jclass clazz, 1480 | jmethodID methodID, const jvalue *args) { 1481 | return functions->CallStaticIntMethodA(this,clazz,methodID,args); 1482 | } 1483 | 1484 | jlong CallStaticLongMethod(jclass clazz, 1485 | jmethodID methodID, ...) { 1486 | va_list args; 1487 | jlong result; 1488 | va_start(args,methodID); 1489 | result = functions->CallStaticLongMethodV(this,clazz,methodID,args); 1490 | va_end(args); 1491 | return result; 1492 | } 1493 | jlong CallStaticLongMethodV(jclass clazz, 1494 | jmethodID methodID, va_list args) { 1495 | return functions->CallStaticLongMethodV(this,clazz,methodID,args); 1496 | } 1497 | jlong CallStaticLongMethodA(jclass clazz, 1498 | jmethodID methodID, const jvalue *args) { 1499 | return functions->CallStaticLongMethodA(this,clazz,methodID,args); 1500 | } 1501 | 1502 | jfloat CallStaticFloatMethod(jclass clazz, 1503 | jmethodID methodID, ...) { 1504 | va_list args; 1505 | jfloat result; 1506 | va_start(args,methodID); 1507 | result = functions->CallStaticFloatMethodV(this,clazz,methodID,args); 1508 | va_end(args); 1509 | return result; 1510 | } 1511 | jfloat CallStaticFloatMethodV(jclass clazz, 1512 | jmethodID methodID, va_list args) { 1513 | return functions->CallStaticFloatMethodV(this,clazz,methodID,args); 1514 | } 1515 | jfloat CallStaticFloatMethodA(jclass clazz, 1516 | jmethodID methodID, const jvalue *args) { 1517 | return functions->CallStaticFloatMethodA(this,clazz,methodID,args); 1518 | } 1519 | 1520 | jdouble CallStaticDoubleMethod(jclass clazz, 1521 | jmethodID methodID, ...) { 1522 | va_list args; 1523 | jdouble result; 1524 | va_start(args,methodID); 1525 | result = functions->CallStaticDoubleMethodV(this,clazz,methodID,args); 1526 | va_end(args); 1527 | return result; 1528 | } 1529 | jdouble CallStaticDoubleMethodV(jclass clazz, 1530 | jmethodID methodID, va_list args) { 1531 | return functions->CallStaticDoubleMethodV(this,clazz,methodID,args); 1532 | } 1533 | jdouble CallStaticDoubleMethodA(jclass clazz, 1534 | jmethodID methodID, const jvalue *args) { 1535 | return functions->CallStaticDoubleMethodA(this,clazz,methodID,args); 1536 | } 1537 | 1538 | void CallStaticVoidMethod(jclass cls, jmethodID methodID, ...) { 1539 | va_list args; 1540 | va_start(args,methodID); 1541 | functions->CallStaticVoidMethodV(this,cls,methodID,args); 1542 | va_end(args); 1543 | } 1544 | void CallStaticVoidMethodV(jclass cls, jmethodID methodID, 1545 | va_list args) { 1546 | functions->CallStaticVoidMethodV(this,cls,methodID,args); 1547 | } 1548 | void CallStaticVoidMethodA(jclass cls, jmethodID methodID, 1549 | const jvalue * args) { 1550 | functions->CallStaticVoidMethodA(this,cls,methodID,args); 1551 | } 1552 | 1553 | jfieldID GetStaticFieldID(jclass clazz, const char *name, 1554 | const char *sig) { 1555 | return functions->GetStaticFieldID(this,clazz,name,sig); 1556 | } 1557 | jobject GetStaticObjectField(jclass clazz, jfieldID fieldID) { 1558 | return functions->GetStaticObjectField(this,clazz,fieldID); 1559 | } 1560 | jboolean GetStaticBooleanField(jclass clazz, jfieldID fieldID) { 1561 | return functions->GetStaticBooleanField(this,clazz,fieldID); 1562 | } 1563 | jbyte GetStaticByteField(jclass clazz, jfieldID fieldID) { 1564 | return functions->GetStaticByteField(this,clazz,fieldID); 1565 | } 1566 | jchar GetStaticCharField(jclass clazz, jfieldID fieldID) { 1567 | return functions->GetStaticCharField(this,clazz,fieldID); 1568 | } 1569 | jshort GetStaticShortField(jclass clazz, jfieldID fieldID) { 1570 | return functions->GetStaticShortField(this,clazz,fieldID); 1571 | } 1572 | jint GetStaticIntField(jclass clazz, jfieldID fieldID) { 1573 | return functions->GetStaticIntField(this,clazz,fieldID); 1574 | } 1575 | jlong GetStaticLongField(jclass clazz, jfieldID fieldID) { 1576 | return functions->GetStaticLongField(this,clazz,fieldID); 1577 | } 1578 | jfloat GetStaticFloatField(jclass clazz, jfieldID fieldID) { 1579 | return functions->GetStaticFloatField(this,clazz,fieldID); 1580 | } 1581 | jdouble GetStaticDoubleField(jclass clazz, jfieldID fieldID) { 1582 | return functions->GetStaticDoubleField(this,clazz,fieldID); 1583 | } 1584 | 1585 | void SetStaticObjectField(jclass clazz, jfieldID fieldID, 1586 | jobject value) { 1587 | functions->SetStaticObjectField(this,clazz,fieldID,value); 1588 | } 1589 | void SetStaticBooleanField(jclass clazz, jfieldID fieldID, 1590 | jboolean value) { 1591 | functions->SetStaticBooleanField(this,clazz,fieldID,value); 1592 | } 1593 | void SetStaticByteField(jclass clazz, jfieldID fieldID, 1594 | jbyte value) { 1595 | functions->SetStaticByteField(this,clazz,fieldID,value); 1596 | } 1597 | void SetStaticCharField(jclass clazz, jfieldID fieldID, 1598 | jchar value) { 1599 | functions->SetStaticCharField(this,clazz,fieldID,value); 1600 | } 1601 | void SetStaticShortField(jclass clazz, jfieldID fieldID, 1602 | jshort value) { 1603 | functions->SetStaticShortField(this,clazz,fieldID,value); 1604 | } 1605 | void SetStaticIntField(jclass clazz, jfieldID fieldID, 1606 | jint value) { 1607 | functions->SetStaticIntField(this,clazz,fieldID,value); 1608 | } 1609 | void SetStaticLongField(jclass clazz, jfieldID fieldID, 1610 | jlong value) { 1611 | functions->SetStaticLongField(this,clazz,fieldID,value); 1612 | } 1613 | void SetStaticFloatField(jclass clazz, jfieldID fieldID, 1614 | jfloat value) { 1615 | functions->SetStaticFloatField(this,clazz,fieldID,value); 1616 | } 1617 | void SetStaticDoubleField(jclass clazz, jfieldID fieldID, 1618 | jdouble value) { 1619 | functions->SetStaticDoubleField(this,clazz,fieldID,value); 1620 | } 1621 | 1622 | jstring NewString(const jchar *unicode, jsize len) { 1623 | return functions->NewString(this,unicode,len); 1624 | } 1625 | jsize GetStringLength(jstring str) { 1626 | return functions->GetStringLength(this,str); 1627 | } 1628 | const jchar *GetStringChars(jstring str, jboolean *isCopy) { 1629 | return functions->GetStringChars(this,str,isCopy); 1630 | } 1631 | void ReleaseStringChars(jstring str, const jchar *chars) { 1632 | functions->ReleaseStringChars(this,str,chars); 1633 | } 1634 | 1635 | jstring NewStringUTF(const char *utf) { 1636 | return functions->NewStringUTF(this,utf); 1637 | } 1638 | jsize GetStringUTFLength(jstring str) { 1639 | return functions->GetStringUTFLength(this,str); 1640 | } 1641 | const char* GetStringUTFChars(jstring str, jboolean *isCopy) { 1642 | return functions->GetStringUTFChars(this,str,isCopy); 1643 | } 1644 | void ReleaseStringUTFChars(jstring str, const char* chars) { 1645 | functions->ReleaseStringUTFChars(this,str,chars); 1646 | } 1647 | 1648 | jsize GetArrayLength(jarray array) { 1649 | return functions->GetArrayLength(this,array); 1650 | } 1651 | 1652 | jobjectArray NewObjectArray(jsize len, jclass clazz, 1653 | jobject init) { 1654 | return functions->NewObjectArray(this,len,clazz,init); 1655 | } 1656 | jobject GetObjectArrayElement(jobjectArray array, jsize index) { 1657 | return functions->GetObjectArrayElement(this,array,index); 1658 | } 1659 | void SetObjectArrayElement(jobjectArray array, jsize index, 1660 | jobject val) { 1661 | functions->SetObjectArrayElement(this,array,index,val); 1662 | } 1663 | 1664 | jbooleanArray NewBooleanArray(jsize len) { 1665 | return functions->NewBooleanArray(this,len); 1666 | } 1667 | jbyteArray NewByteArray(jsize len) { 1668 | return functions->NewByteArray(this,len); 1669 | } 1670 | jcharArray NewCharArray(jsize len) { 1671 | return functions->NewCharArray(this,len); 1672 | } 1673 | jshortArray NewShortArray(jsize len) { 1674 | return functions->NewShortArray(this,len); 1675 | } 1676 | jintArray NewIntArray(jsize len) { 1677 | return functions->NewIntArray(this,len); 1678 | } 1679 | jlongArray NewLongArray(jsize len) { 1680 | return functions->NewLongArray(this,len); 1681 | } 1682 | jfloatArray NewFloatArray(jsize len) { 1683 | return functions->NewFloatArray(this,len); 1684 | } 1685 | jdoubleArray NewDoubleArray(jsize len) { 1686 | return functions->NewDoubleArray(this,len); 1687 | } 1688 | 1689 | jboolean * GetBooleanArrayElements(jbooleanArray array, jboolean *isCopy) { 1690 | return functions->GetBooleanArrayElements(this,array,isCopy); 1691 | } 1692 | jbyte * GetByteArrayElements(jbyteArray array, jboolean *isCopy) { 1693 | return functions->GetByteArrayElements(this,array,isCopy); 1694 | } 1695 | jchar * GetCharArrayElements(jcharArray array, jboolean *isCopy) { 1696 | return functions->GetCharArrayElements(this,array,isCopy); 1697 | } 1698 | jshort * GetShortArrayElements(jshortArray array, jboolean *isCopy) { 1699 | return functions->GetShortArrayElements(this,array,isCopy); 1700 | } 1701 | jint * GetIntArrayElements(jintArray array, jboolean *isCopy) { 1702 | return functions->GetIntArrayElements(this,array,isCopy); 1703 | } 1704 | jlong * GetLongArrayElements(jlongArray array, jboolean *isCopy) { 1705 | return functions->GetLongArrayElements(this,array,isCopy); 1706 | } 1707 | jfloat * GetFloatArrayElements(jfloatArray array, jboolean *isCopy) { 1708 | return functions->GetFloatArrayElements(this,array,isCopy); 1709 | } 1710 | jdouble * GetDoubleArrayElements(jdoubleArray array, jboolean *isCopy) { 1711 | return functions->GetDoubleArrayElements(this,array,isCopy); 1712 | } 1713 | 1714 | void ReleaseBooleanArrayElements(jbooleanArray array, 1715 | jboolean *elems, 1716 | jint mode) { 1717 | functions->ReleaseBooleanArrayElements(this,array,elems,mode); 1718 | } 1719 | void ReleaseByteArrayElements(jbyteArray array, 1720 | jbyte *elems, 1721 | jint mode) { 1722 | functions->ReleaseByteArrayElements(this,array,elems,mode); 1723 | } 1724 | void ReleaseCharArrayElements(jcharArray array, 1725 | jchar *elems, 1726 | jint mode) { 1727 | functions->ReleaseCharArrayElements(this,array,elems,mode); 1728 | } 1729 | void ReleaseShortArrayElements(jshortArray array, 1730 | jshort *elems, 1731 | jint mode) { 1732 | functions->ReleaseShortArrayElements(this,array,elems,mode); 1733 | } 1734 | void ReleaseIntArrayElements(jintArray array, 1735 | jint *elems, 1736 | jint mode) { 1737 | functions->ReleaseIntArrayElements(this,array,elems,mode); 1738 | } 1739 | void ReleaseLongArrayElements(jlongArray array, 1740 | jlong *elems, 1741 | jint mode) { 1742 | functions->ReleaseLongArrayElements(this,array,elems,mode); 1743 | } 1744 | void ReleaseFloatArrayElements(jfloatArray array, 1745 | jfloat *elems, 1746 | jint mode) { 1747 | functions->ReleaseFloatArrayElements(this,array,elems,mode); 1748 | } 1749 | void ReleaseDoubleArrayElements(jdoubleArray array, 1750 | jdouble *elems, 1751 | jint mode) { 1752 | functions->ReleaseDoubleArrayElements(this,array,elems,mode); 1753 | } 1754 | 1755 | void GetBooleanArrayRegion(jbooleanArray array, 1756 | jsize start, jsize len, jboolean *buf) { 1757 | functions->GetBooleanArrayRegion(this,array,start,len,buf); 1758 | } 1759 | void GetByteArrayRegion(jbyteArray array, 1760 | jsize start, jsize len, jbyte *buf) { 1761 | functions->GetByteArrayRegion(this,array,start,len,buf); 1762 | } 1763 | void GetCharArrayRegion(jcharArray array, 1764 | jsize start, jsize len, jchar *buf) { 1765 | functions->GetCharArrayRegion(this,array,start,len,buf); 1766 | } 1767 | void GetShortArrayRegion(jshortArray array, 1768 | jsize start, jsize len, jshort *buf) { 1769 | functions->GetShortArrayRegion(this,array,start,len,buf); 1770 | } 1771 | void GetIntArrayRegion(jintArray array, 1772 | jsize start, jsize len, jint *buf) { 1773 | functions->GetIntArrayRegion(this,array,start,len,buf); 1774 | } 1775 | void GetLongArrayRegion(jlongArray array, 1776 | jsize start, jsize len, jlong *buf) { 1777 | functions->GetLongArrayRegion(this,array,start,len,buf); 1778 | } 1779 | void GetFloatArrayRegion(jfloatArray array, 1780 | jsize start, jsize len, jfloat *buf) { 1781 | functions->GetFloatArrayRegion(this,array,start,len,buf); 1782 | } 1783 | void GetDoubleArrayRegion(jdoubleArray array, 1784 | jsize start, jsize len, jdouble *buf) { 1785 | functions->GetDoubleArrayRegion(this,array,start,len,buf); 1786 | } 1787 | 1788 | void SetBooleanArrayRegion(jbooleanArray array, jsize start, jsize len, 1789 | const jboolean *buf) { 1790 | functions->SetBooleanArrayRegion(this,array,start,len,buf); 1791 | } 1792 | void SetByteArrayRegion(jbyteArray array, jsize start, jsize len, 1793 | const jbyte *buf) { 1794 | functions->SetByteArrayRegion(this,array,start,len,buf); 1795 | } 1796 | void SetCharArrayRegion(jcharArray array, jsize start, jsize len, 1797 | const jchar *buf) { 1798 | functions->SetCharArrayRegion(this,array,start,len,buf); 1799 | } 1800 | void SetShortArrayRegion(jshortArray array, jsize start, jsize len, 1801 | const jshort *buf) { 1802 | functions->SetShortArrayRegion(this,array,start,len,buf); 1803 | } 1804 | void SetIntArrayRegion(jintArray array, jsize start, jsize len, 1805 | const jint *buf) { 1806 | functions->SetIntArrayRegion(this,array,start,len,buf); 1807 | } 1808 | void SetLongArrayRegion(jlongArray array, jsize start, jsize len, 1809 | const jlong *buf) { 1810 | functions->SetLongArrayRegion(this,array,start,len,buf); 1811 | } 1812 | void SetFloatArrayRegion(jfloatArray array, jsize start, jsize len, 1813 | const jfloat *buf) { 1814 | functions->SetFloatArrayRegion(this,array,start,len,buf); 1815 | } 1816 | void SetDoubleArrayRegion(jdoubleArray array, jsize start, jsize len, 1817 | const jdouble *buf) { 1818 | functions->SetDoubleArrayRegion(this,array,start,len,buf); 1819 | } 1820 | 1821 | jint RegisterNatives(jclass clazz, const JNINativeMethod *methods, 1822 | jint nMethods) { 1823 | return functions->RegisterNatives(this,clazz,methods,nMethods); 1824 | } 1825 | jint UnregisterNatives(jclass clazz) { 1826 | return functions->UnregisterNatives(this,clazz); 1827 | } 1828 | 1829 | jint MonitorEnter(jobject obj) { 1830 | return functions->MonitorEnter(this,obj); 1831 | } 1832 | jint MonitorExit(jobject obj) { 1833 | return functions->MonitorExit(this,obj); 1834 | } 1835 | 1836 | jint GetJavaVM(JavaVM **vm) { 1837 | return functions->GetJavaVM(this,vm); 1838 | } 1839 | 1840 | void GetStringRegion(jstring str, jsize start, jsize len, jchar *buf) { 1841 | functions->GetStringRegion(this,str,start,len,buf); 1842 | } 1843 | void GetStringUTFRegion(jstring str, jsize start, jsize len, char *buf) { 1844 | functions->GetStringUTFRegion(this,str,start,len,buf); 1845 | } 1846 | 1847 | void * GetPrimitiveArrayCritical(jarray array, jboolean *isCopy) { 1848 | return functions->GetPrimitiveArrayCritical(this,array,isCopy); 1849 | } 1850 | void ReleasePrimitiveArrayCritical(jarray array, void *carray, jint mode) { 1851 | functions->ReleasePrimitiveArrayCritical(this,array,carray,mode); 1852 | } 1853 | 1854 | const jchar * GetStringCritical(jstring string, jboolean *isCopy) { 1855 | return functions->GetStringCritical(this,string,isCopy); 1856 | } 1857 | void ReleaseStringCritical(jstring string, const jchar *cstring) { 1858 | functions->ReleaseStringCritical(this,string,cstring); 1859 | } 1860 | 1861 | jweak NewWeakGlobalRef(jobject obj) { 1862 | return functions->NewWeakGlobalRef(this,obj); 1863 | } 1864 | void DeleteWeakGlobalRef(jweak ref) { 1865 | functions->DeleteWeakGlobalRef(this,ref); 1866 | } 1867 | 1868 | jboolean ExceptionCheck() { 1869 | return functions->ExceptionCheck(this); 1870 | } 1871 | 1872 | jobject NewDirectByteBuffer(void* address, jlong capacity) { 1873 | return functions->NewDirectByteBuffer(this, address, capacity); 1874 | } 1875 | void* GetDirectBufferAddress(jobject buf) { 1876 | return functions->GetDirectBufferAddress(this, buf); 1877 | } 1878 | jlong GetDirectBufferCapacity(jobject buf) { 1879 | return functions->GetDirectBufferCapacity(this, buf); 1880 | } 1881 | jobjectRefType GetObjectRefType(jobject obj) { 1882 | return functions->GetObjectRefType(this, obj); 1883 | } 1884 | 1885 | #endif /* __cplusplus */ 1886 | }; 1887 | 1888 | typedef struct JavaVMOption { 1889 | char *optionString; 1890 | void *extraInfo; 1891 | } JavaVMOption; 1892 | 1893 | typedef struct JavaVMInitArgs { 1894 | jint version; 1895 | 1896 | jint nOptions; 1897 | JavaVMOption *options; 1898 | jboolean ignoreUnrecognized; 1899 | } JavaVMInitArgs; 1900 | 1901 | typedef struct JavaVMAttachArgs { 1902 | jint version; 1903 | 1904 | char *name; 1905 | jobject group; 1906 | } JavaVMAttachArgs; 1907 | 1908 | /* These will be VM-specific. */ 1909 | 1910 | #define JDK1_2 1911 | #define JDK1_4 1912 | 1913 | /* End VM-specific. */ 1914 | 1915 | struct JNIInvokeInterface_ { 1916 | void *reserved0; 1917 | void *reserved1; 1918 | void *reserved2; 1919 | 1920 | jint (JNICALL *DestroyJavaVM)(JavaVM *vm); 1921 | 1922 | jint (JNICALL *AttachCurrentThread)(JavaVM *vm, void **penv, void *args); 1923 | 1924 | jint (JNICALL *DetachCurrentThread)(JavaVM *vm); 1925 | 1926 | jint (JNICALL *GetEnv)(JavaVM *vm, void **penv, jint version); 1927 | 1928 | jint (JNICALL *AttachCurrentThreadAsDaemon)(JavaVM *vm, void **penv, void *args); 1929 | }; 1930 | 1931 | struct JavaVM_ { 1932 | const struct JNIInvokeInterface_ *functions; 1933 | #ifdef __cplusplus 1934 | 1935 | jint DestroyJavaVM() { 1936 | return functions->DestroyJavaVM(this); 1937 | } 1938 | jint AttachCurrentThread(void **penv, void *args) { 1939 | return functions->AttachCurrentThread(this, penv, args); 1940 | } 1941 | jint DetachCurrentThread() { 1942 | return functions->DetachCurrentThread(this); 1943 | } 1944 | 1945 | jint GetEnv(void **penv, jint version) { 1946 | return functions->GetEnv(this, penv, version); 1947 | } 1948 | jint AttachCurrentThreadAsDaemon(void **penv, void *args) { 1949 | return functions->AttachCurrentThreadAsDaemon(this, penv, args); 1950 | } 1951 | #endif 1952 | }; 1953 | 1954 | #ifdef _JNI_IMPLEMENTATION_ 1955 | #define _JNI_IMPORT_OR_EXPORT_ JNIEXPORT 1956 | #else 1957 | #define _JNI_IMPORT_OR_EXPORT_ JNIIMPORT 1958 | #endif 1959 | _JNI_IMPORT_OR_EXPORT_ jint JNICALL 1960 | JNI_GetDefaultJavaVMInitArgs(void *args); 1961 | 1962 | _JNI_IMPORT_OR_EXPORT_ jint JNICALL 1963 | JNI_CreateJavaVM(JavaVM **pvm, void **penv, void *args); 1964 | 1965 | _JNI_IMPORT_OR_EXPORT_ jint JNICALL 1966 | JNI_GetCreatedJavaVMs(JavaVM **, jsize, jsize *); 1967 | 1968 | /* Defined by native libraries. */ 1969 | JNIEXPORT jint JNICALL 1970 | JNI_OnLoad(JavaVM *vm, void *reserved); 1971 | 1972 | JNIEXPORT void JNICALL 1973 | JNI_OnUnload(JavaVM *vm, void *reserved); 1974 | 1975 | #define JNI_VERSION_1_1 0x00010001 1976 | #define JNI_VERSION_1_2 0x00010002 1977 | #define JNI_VERSION_1_4 0x00010004 1978 | #define JNI_VERSION_1_6 0x00010006 1979 | #define JNI_VERSION_1_8 0x00010008 1980 | 1981 | #ifdef __cplusplus 1982 | } /* extern "C" */ 1983 | #endif /* __cplusplus */ 1984 | 1985 | #endif /* !_JAVASOFT_JNI_H_ */ 1986 | --------------------------------------------------------------------------------