Initial Commit (without the client token...) Bandori stickers in

Discord~
master
sigonasr2 6 years ago
commit f527d1b049
  1. 7
      BandoriBot/.classpath
  2. 1
      BandoriBot/.gitignore
  3. 17
      BandoriBot/.project
  4. 11
      BandoriBot/.settings/org.eclipse.jdt.core.prefs
  5. BIN
      BandoriBot/BandoriBot.jar
  6. 143
      BandoriBot/src/sig/BandoriBot.java
  7. 306
      BandoriBot/src/sig/FileUtils.java
  8. 5
      BandoriBot/src/sig/MessageListener.java
  9. BIN
      BandoriBot/stamps/ako_areyouokay.png
  10. BIN
      BandoriBot/stamps/ako_onemoretime.png
  11. BIN
      BandoriBot/stamps/arisa_doki.png
  12. BIN
      BandoriBot/stamps/arisa_huh.png
  13. BIN
      BandoriBot/stamps/aya_fever.png
  14. BIN
      BandoriBot/stamps/chisato_planned.png
  15. BIN
      BandoriBot/stamps/chisato_thisissomuchfun.png
  16. BIN
      BandoriBot/stamps/eve_bushido.png
  17. BIN
      BandoriBot/stamps/eve_marchintobattle.png
  18. BIN
      BandoriBot/stamps/hagumi_smileyay.png
  19. BIN
      BandoriBot/stamps/himari_heyheyhoh.png
  20. BIN
      BandoriBot/stamps/hina_fullcombo.png
  21. BIN
      BandoriBot/stamps/hina_nowwereboppin.png
  22. BIN
      BandoriBot/stamps/kanon_fuee.png
  23. BIN
      BandoriBot/stamps/kaoru_fleeting.png
  24. BIN
      BandoriBot/stamps/kaoru_suchalovelyevening.png
  25. BIN
      BandoriBot/stamps/kaoru_takemyhand.png
  26. BIN
      BandoriBot/stamps/kasumi_gogo.png
  27. BIN
      BandoriBot/stamps/kokoro_happylucky.png
  28. BIN
      BandoriBot/stamps/kokoro_letsmaketheworldsmile.png
  29. BIN
      BandoriBot/stamps/kokoro_moremore.png
  30. BIN
      BandoriBot/stamps/lisa_imsohappy.png
  31. BIN
      BandoriBot/stamps/lisa_nextonelastone.png
  32. BIN
      BandoriBot/stamps/marina_yeahyeah.png
  33. BIN
      BandoriBot/stamps/maya_huhehe.png
  34. BIN
      BandoriBot/stamps/misaki_ready.png
  35. BIN
      BandoriBot/stamps/moca_thisisgettinginteresting.png
  36. BIN
      BandoriBot/stamps/moca_youdidit.png
  37. BIN
      BandoriBot/stamps/ran_same.png
  38. BIN
      BandoriBot/stamps/ran_somethingbigiscoming.png
  39. BIN
      BandoriBot/stamps/rimi_choco.png
  40. BIN
      BandoriBot/stamps/rimi_congrats.png
  41. BIN
      BandoriBot/stamps/rinko_jam.png
  42. BIN
      BandoriBot/stamps/rinko_theresnoway.png
  43. BIN
      BandoriBot/stamps/saya_bread.png
  44. BIN
      BandoriBot/stamps/saya_illtry.png
  45. BIN
      BandoriBot/stamps/sayo_goodwork.png
  46. BIN
      BandoriBot/stamps/sayo_ohwell.png
  47. BIN
      BandoriBot/stamps/tae_fufusocute.png
  48. BIN
      BandoriBot/stamps/tae_letsplay.png
  49. BIN
      BandoriBot/stamps/tae_thisisgreat.png
  50. BIN
      BandoriBot/stamps/tomoe_letsdothis.png
  51. BIN
      BandoriBot/stamps/tsugumi_comeon.png
  52. BIN
      BandoriBot/stamps/tsugumi_wecandoit.png
  53. BIN
      BandoriBot/stamps/yukina_followmylead.png
  54. BIN
      BandoriBot/stamps/yukina_notbad.png

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry kind="lib" path="D:/Downloads/JDA-3.8.0_423-withDependencies.jar" sourcepath="D:/Downloads/JDA-3.8.0_423-sources.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>

@ -0,0 +1 @@
/bin/

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>BandoriBot</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>

@ -0,0 +1,11 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.source=1.8

Binary file not shown.

@ -0,0 +1,143 @@
package sig;
import java.io.File;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import javax.security.auth.login.LoginException;
import net.dv8tion.jda.core.JDA;
import net.dv8tion.jda.core.JDABuilder;
import net.dv8tion.jda.core.entities.Channel;
import net.dv8tion.jda.core.entities.ChannelType;
import net.dv8tion.jda.core.entities.Member;
import net.dv8tion.jda.core.entities.MessageChannel;
import net.dv8tion.jda.core.events.Event;
import net.dv8tion.jda.core.events.ReadyEvent;
import net.dv8tion.jda.core.events.message.MessageReceivedEvent;
import net.dv8tion.jda.core.hooks.ListenerAdapter;
public class BandoriBot extends ListenerAdapter{
final public static String BASEDIR = "./";
public static HashMap<String,List<String>> stamp_map = new HashMap<String,List<String>>();
public static void main(String[] arguments) {
populateStampMap();
String[] filedata = FileUtils.readFromFile(BASEDIR+"clientToken.txt");
try {
JDA bot = new JDABuilder(filedata[0])
.addEventListener(new BandoriBot()).build();
bot.awaitReady();
} catch (LoginException | InterruptedException e) {
e.printStackTrace();
}
}
public static void populateStampMap() {
stamp_map.put("kasumi_gogo",Arrays.asList("gogo"));
stamp_map.put("tae_letsplay",Arrays.asList("playtogether","wanttoplay","multilive","letsplay"));
stamp_map.put("rimi_choco",Arrays.asList("choco","cornet"));
stamp_map.put("saya_bread",Arrays.asList("bread"));
stamp_map.put("arisa_doki",Arrays.asList("doki"));
stamp_map.put("ran_same",Arrays.asList("sameasalways","alwayssame","alwaysthesame"));
stamp_map.put("moca_youdidit",Arrays.asList("youdidit","congratulations","buns","mocatastic"));
stamp_map.put("himari_heyheyhoh",Arrays.asList("heyo","heyhey","hihi","hiyo"));
stamp_map.put("tomoe_letsdothis",Arrays.asList("letsdothis","letsdoit"));
stamp_map.put("tsugumi_wecandoit",Arrays.asList("wegotthis","wegotit","wecan"));
stamp_map.put("kokoro_happylucky",Arrays.asList("happy!","lucky"));
stamp_map.put("kaoru_fleeting",Arrays.asList("fleeting"));
stamp_map.put("aya_fever",Arrays.asList("fever","ayay"));
stamp_map.put("hagumi_smileyay",Arrays.asList("smileyay","yay"));
stamp_map.put("kanon_fuee",Arrays.asList("fue","waa","reee"));
stamp_map.put("misaki_ready",Arrays.asList("amready","beenready","ready!"));
stamp_map.put("hina_fullcombo",Arrays.asList("fcd","fullcombo","nomiss","allperfect","notasinglemiss","thefc","anfc","fullperfect"));
stamp_map.put("chisato_planned",Arrays.asList("justasplanned","allplanned","calculated","thatcoming"));
stamp_map.put("maya_huhehe",Arrays.asList("hehe","huehe","huehue"));
stamp_map.put("eve_bushido",Arrays.asList("bushido"));
stamp_map.put("yukina_notbad",Arrays.asList("notbad","veryclose"));
stamp_map.put("sayo_goodwork",Arrays.asList("goodwork","goodjob","nicejob","welldone","greatwork","greatjob"));
stamp_map.put("lisa_nextonelastone",Arrays.asList("lastone","mylast"));
stamp_map.put("ako_onemoretime",Arrays.asList("onemore","goagain","keepgoing","dontstop"));
stamp_map.put("rinko_jam",Arrays.asList("lovethissong","jam"));
stamp_map.put("marina_yeahyeah",Arrays.asList("yeahyeah","letsgo"));
stamp_map.put("kokoro_moremore",Arrays.asList("moremore","iwantmore"));
stamp_map.put("arisa_huh",Arrays.asList("huh?","hh?","yy?","aat?","aa?","tt?","nani","nand"));
stamp_map.put("yukina_followmylead",Arrays.asList("followmylead","takethelead","guideyou","fullydevoted"));
stamp_map.put("kaoru_suchalovelyevening",Arrays.asList("goodevening","lovelyevening","beautifulnight","grandnight","wonderfulevening"));
stamp_map.put("rimi_congrats",Arrays.asList("grats"));
stamp_map.put("ran_somethingbigiscoming",Arrays.asList("somethingbig","iscoming"));
stamp_map.put("tsugumi_comeon",Arrays.asList("comeon","dontbeafraid","dontbeshy","tsugurific"));
stamp_map.put("tae_fufusocute",Arrays.asList("socute","kawaii","fufu","adorable","cute"));
stamp_map.put("eve_marchintobattle",Arrays.asList("marchintobattle","chargeintobattle"));
stamp_map.put("saya_illtry",Arrays.asList("illtry","itachance","itatry","atleastonce"));
stamp_map.put("lisa_imsohappy",Arrays.asList("ecstatic","sohappy","toohappy"));
stamp_map.put("sayo_ohwell",Arrays.asList("ohwell","ahwell","youtried"));
stamp_map.put("ako_areyouokay",Arrays.asList("youok","beok","daijo"));
stamp_map.put("chisato_thisissomuchfun",Arrays.asList("muchfun","veryfun","reallyfun","extremelyfun","offun"));
stamp_map.put("rinko_theresnoway",Arrays.asList("noway"));
stamp_map.put("tae_thisisgreat",Arrays.asList("thisisgreat","thisisawesome","thisiswonderful"));
stamp_map.put("moca_thisisgettinginteresting",Arrays.asList("gettinginteresting","thingsaregetting","thisisgetting"));
stamp_map.put("kaoru_takemyhand",Arrays.asList("takemyhand","allowmeto","demonstrate","romeo"));
stamp_map.put("kokoro_letsmaketheworldsmile",Arrays.asList("hhw","happyworld","hellohappy","worldsmile"));
stamp_map.put("hina_nowwereboppin",Arrays.asList("bop","nowwere"));
}
public static void checkForStamp(MessageChannel channel, String user,String message) {
boolean foundmatch = false;
message = message.toLowerCase().replaceAll("[ ]", "");
for (String key : stamp_map.keySet()) {
for (String message_search : stamp_map.get(key)) {
String filteredmessage = message;
filteredmessage = filteredmessage.replaceAll("[^A-Za-z0-9]","");
System.out.println(filteredmessage);
if (message_search.contains("?") || message_search.contains("!")) {
if (message.contains(message_search)) {
foundmatch = true;
CreateStamp(channel,key);
System.out.println("Stamp "+key+" created by user "+user+" MESSAGE:"+message+".");
break;
}
} else {
if (filteredmessage.contains(message_search)) {
foundmatch=true;
CreateStamp(channel,key);
System.out.println("Stamp "+key+" created by user "+user+" MESSAGE:"+message+".");
break;
}
}
}
if (foundmatch) {
return;
}
}
}
public static void CreateStamp(MessageChannel channel, String stamp_name) {
channel.sendFile(new File(BASEDIR+"stamps/"+stamp_name+".png")).queue();
}
@Override
public void onMessageReceived(MessageReceivedEvent ev) {
JDA bot = ev.getJDA();
String message = ev.getMessage().getContentDisplay();
MessageChannel messaging_channel = ev.getChannel();
if (ev.isFromType(ChannelType.TEXT)) {
Channel channel = ev.getTextChannel();
Member user = ev.getMember();
System.out.println("Channel "+channel+": "+user+" - "+message);
if (user.getUser().getId().equalsIgnoreCase("494666451765035009")) {
return;
}
if (channel.getId().equalsIgnoreCase("485297375665979414")) {
System.out.println("Detected in Bandori Channel....");
checkForStamp(messaging_channel,user.getNickname(),message);
}
}
}
}

@ -0,0 +1,306 @@
package sig;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.Reader;
import java.net.URL;
import java.nio.channels.FileChannel;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import sig.sigIRC;
import sig.modules.ChatLog.ChatLogMessage;
public class FileUtils {
public static String[] readFromFile(String filename) {
File file = new File(filename);
//System.out.println(file.getAbsolutePath());
List<String> contents= new ArrayList<String>();
if (file.exists()) {
try(
FileReader fw = new FileReader(filename);
BufferedReader bw = new BufferedReader(fw);)
{
String readline = bw.readLine();
do {
if (readline!=null) {
//System.out.println(readline);
contents.add(readline);
readline = bw.readLine();
}} while (readline!=null);
fw.close();
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return contents.toArray(new String[contents.size()]);
}
private static String readAll(Reader rd) throws IOException {
StringBuilder sb = new StringBuilder();
int cp;
while ((cp = rd.read()) != -1) {
sb.append((char) cp);
}
return sb.toString();
}
private static String readFilter(Reader rd, HashMap<Long,String> channel_ids) throws IOException {
StringBuilder sb = new StringBuilder();
boolean allowed=false;
boolean quotation_mark=false;
boolean endquotation_mark=false;
boolean foundChannel=false;
boolean nextBrace=false;
boolean outputStuff=false;
String numb = "";
int braceCount=0;
int channelCount=0;
int vals=0;
int cp;
while ((cp = rd.read()) != -1) {
if (braceCount==0) {
allowed=true;
} else
if (braceCount==1 && !quotation_mark){
quotation_mark=true;
numb="";
allowed=false;
} else
if (!endquotation_mark) {
if ((char)cp >= '0' &&
(char)cp <= '9') {
allowed=false;
numb+=(char)cp;
} else {
allowed=false;
endquotation_mark=true;
try {
if (channel_ids.containsKey(Long.parseLong(numb))) {
if (channelCount>=1) {
sb.append(",");
}
sb.append("\""+numb+"\"");
foundChannel=true;
System.out.println("Found channel "+numb);
outputStuff=true;
}
} catch (NumberFormatException e) {
}
}
} else
if (!nextBrace && foundChannel) {
allowed=true;
if ((char)cp == '{') {
nextBrace=true;
}
} else
if (foundChannel) {
allowed=true;
if (braceCount==1) {
allowed=false;
channelCount++;
quotation_mark=false;
endquotation_mark=false;
foundChannel=false;
nextBrace=false;
}
} else {
allowed=false;
if (braceCount==1) {
allowed=false;
quotation_mark=false;
endquotation_mark=false;
foundChannel=false;
nextBrace=false;
}
}
/*if (outputStuff && vals++<1000) {
System.out.print((char)cp);
}*/
if ((char)cp == '{') {
braceCount++;
//System.out.println("Brace count is "+braceCount+".");
} else
if ((char)cp == '}') {
braceCount--;
//System.out.println("Brace count is "+braceCount+".");
}
if (allowed) {
sb.append((char) cp);
}
}
sb.append("}");
//System.out.println("=============");
//System.out.println(sb.toString());
return sb.toString();
}
public static JSONObject readJsonFromUrlWithFilter(String url, HashMap<Long,String> filter) throws IOException, JSONException {
return readJsonFromUrlWithFilter(url,filter,null,false);
}
public static JSONObject readJsonFromFileWithFilter(String file, HashMap<Long,String> filter) throws IOException, JSONException {
InputStream is = new FileInputStream(new File(file));
try {
BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")));
String jsonText = readFilter(rd,filter);
JSONObject json = new JSONObject(jsonText);
jsonText=null;
return json;
} finally {
is.close();
}
}
public static JSONObject readJsonFromUrlWithFilter(String url, HashMap<Long,String> filter, String file, boolean writeToFile) throws IOException, JSONException {
InputStream is = new URL(url).openStream();
try {
BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")));
String jsonText = readFilter(rd,filter);
if (writeToFile) {
writetoFile(new String[]{jsonText},file);
}
JSONObject json = new JSONObject(jsonText);
return json;
} finally {
is.close();
}
}
public static JSONObject readJsonFromUrl(String url) throws IOException, JSONException {
return readJsonFromUrl(url,null,false);
}
public static JSONArray readJsonArrayFromUrl(String url) throws IOException, JSONException {
return readJsonArrayFromUrl(url,null,false);
}
public static JSONObject readJsonFromFile(String file) throws IOException, JSONException {
InputStream is = new FileInputStream(new File(file));
try {
BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")));
String jsonText = readAll(rd);
JSONObject json = new JSONObject(jsonText);
jsonText=null;
return json;
} finally {
is.close();
}
}
public static JSONObject readJsonFromUrl(String url, String file, boolean writeToFile) throws IOException, JSONException {
InputStream is = new URL(url).openStream();
try {
BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")));
String jsonText = readAll(rd);
if (writeToFile) {
writetoFile(new String[]{jsonText},file);
}
JSONObject json = new JSONObject(jsonText);
return json;
} finally {
is.close();
}
}
public static JSONArray readJsonArrayFromUrl(String url, String file, boolean writeToFile) throws IOException, JSONException {
InputStream is = new URL(url).openStream();
try {
BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")));
String jsonText = readAll(rd);
if (writeToFile) {
writetoFile(new String[]{jsonText},file);
}
JSONArray json = new JSONArray(jsonText);
return json;
} finally {
is.close();
}
}
public static void logToFile(String message, String filename) {
logToFile(message,filename,false);
}
public static void logToFile(String message, String filename, boolean outputToChatLog) {
File file = new File(filename);
try {
if (!file.exists()) {
file.createNewFile();
}
FileWriter fw = new FileWriter(file, true);
PrintWriter pw = new PrintWriter(fw);
pw.println(message);
pw.flush();
pw.close();
} catch (IOException e) {
e.printStackTrace();
}
if (outputToChatLog && sigIRC.chatlogmodule_enabled) {
ChatLogMessage.importMessages(message);
}
}
public static void writetoFile(String[] data, String filename) {
File file = new File(filename);
try {
if (!file.exists()) {
file.createNewFile();
}
FileWriter fw = new FileWriter(file,false);
PrintWriter pw = new PrintWriter(fw);
for (String s : data) {
pw.println(s);
}
pw.flush();
pw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void copyFile(File source, File dest) throws IOException {
FileChannel sourceChannel = null;
FileChannel destChannel = null;
try {
sourceChannel = new FileInputStream(source).getChannel();
destChannel = new FileOutputStream(dest).getChannel();
destChannel.transferFrom(sourceChannel, 0, sourceChannel.size());
}finally{
sourceChannel.close();
destChannel.close();
}
}
public static void deleteFile(String filename) {
File file = new File(filename);
if (file.exists()) {
file.delete();
}
}
}

@ -0,0 +1,5 @@
package sig;
public class MessageListener {
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Loading…
Cancel
Save