import java.applet.Applet; import java.io.DataInputStream; import java.io.IOException; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLConnection; import java.util.LinkedList; import java.util.Queue; import net.runelite.mapping.Export; import net.runelite.mapping.Implements; import net.runelite.mapping.ObfuscatedName; import net.runelite.mapping.ObfuscatedSignature; import netscape.javascript.JSObject; @ObfuscatedName("cz") @Implements("UrlRequester") public class UrlRequester implements Runnable { @ObfuscatedName("c") @Export("thread") final Thread thread; @ObfuscatedName("l") @Export("isClosed") volatile boolean isClosed; @ObfuscatedName("s") @Export("requests") Queue requests; public UrlRequester() { this.requests = new LinkedList(); // L: 15 this.thread = new Thread(this); // L: 18 this.thread.setPriority(1); // L: 19 this.thread.start(); // L: 20 } @ObfuscatedName("c") @ObfuscatedSignature( descriptor = "(Ljava/net/URL;I)Lcm;", garbageValue = "-558103760" ) @Export("request") public UrlRequest request(URL var1) { UrlRequest var2 = new UrlRequest(var1); synchronized(this) { this.requests.add(var2); // L: 74 this.notify(); // L: 75 return var2; // L: 77 } } @ObfuscatedName("l") @ObfuscatedSignature( descriptor = "(B)V", garbageValue = "-124" ) @Export("close") public void close() { this.isClosed = true; try { synchronized(this) { // L: 83 this.notify(); // L: 84 } this.thread.join(); // L: 86 } catch (InterruptedException var4) { } } // L: 89 public void run() { while (!this.isClosed) { try { UrlRequest var1; synchronized(this) { var1 = (UrlRequest)this.requests.poll(); if (var1 == null) { try { this.wait(); // L: 32 } catch (InterruptedException var13) { } continue; } } DataInputStream var2 = null; URLConnection var3 = null; // L: 39 try { var3 = var1.url.openConnection(); // L: 41 var3.setConnectTimeout(5000); // L: 42 var3.setReadTimeout(5000); var3.setUseCaches(false); var3.setRequestProperty("Connection", "close"); int var7 = var3.getContentLength(); if (var7 >= 0) { byte[] var5 = new byte[var7]; var2 = new DataInputStream(var3.getInputStream()); var2.readFully(var5); var1.response0 = var5; } var1.isDone0 = true; } catch (IOException var14) { var1.isDone0 = true; } finally { if (var2 != null) { var2.close(); } if (var3 != null && var3 instanceof HttpURLConnection) { // L: 60 ((HttpURLConnection)var3).disconnect(); } } } catch (Exception var17) { FloorDecoration.RunException_sendStackTrace((String)null, var17); } } } @ObfuscatedName("l") @ObfuscatedSignature( descriptor = "([BILjava/lang/CharSequence;I)I", garbageValue = "-29911257" ) public static int method2420(byte[] var0, int var1, CharSequence var2) { int var3 = var2.length(); // L: 21 int var4 = var1; // L: 22 for (int var5 = 0; var5 < var3; ++var5) { // L: 23 char var6 = var2.charAt(var5); // L: 24 if (var6 <= 127) { // L: 25 var0[var4++] = (byte)var6; // L: 26 } else if (var6 <= 2047) { // L: 28 var0[var4++] = (byte)(192 | var6 >> 6); // L: 29 var0[var4++] = (byte)(128 | var6 & '?'); // L: 30 } else { var0[var4++] = (byte)(224 | var6 >> '\f'); // L: 33 var0[var4++] = (byte)(128 | var6 >> 6 & 63); // L: 34 var0[var4++] = (byte)(128 | var6 & '?'); // L: 35 } } return var4 - var1; // L: 38 } @ObfuscatedName("s") @ObfuscatedSignature( descriptor = "([Ljava/lang/String;[IIII)V", garbageValue = "448998366" ) public static void method2421(String[] var0, int[] var1, int var2, int var3) { if (var2 < var3) { // L: 43 int var4 = (var3 + var2) / 2; // L: 44 int var5 = var2; // L: 45 String var6 = var0[var4]; // L: 46 var0[var4] = var0[var3]; // L: 47 var0[var3] = var6; // L: 48 int var7 = var1[var4]; // L: 49 var1[var4] = var1[var3]; // L: 50 var1[var3] = var7; // L: 51 for (int var8 = var2; var8 < var3; ++var8) { // L: 52 if (var6 == null || var0[var8] != null && var0[var8].compareTo(var6) < (var8 & 1)) { // L: 53 String var9 = var0[var8]; // L: 54 var0[var8] = var0[var5]; // L: 55 var0[var5] = var9; // L: 56 int var10 = var1[var8]; // L: 57 var1[var8] = var1[var5]; // L: 58 var1[var5++] = var10; // L: 59 } } var0[var3] = var0[var5]; var0[var5] = var6; var1[var3] = var1[var5]; var1[var5] = var7; method2421(var0, var1, var2, var5 - 1); method2421(var0, var1, var5 + 1, var3); // L: 68 } } @ObfuscatedName("s") @ObfuscatedSignature( descriptor = "(Ljava/lang/String;ILjava/lang/String;B)Z", garbageValue = "72" ) static boolean method2419(String var0, int var1, String var2) { if (var1 == 0) { // L: 61 try { if (!class29.field175.startsWith("win")) { // L: 63 throw new Exception(); } else if (!var0.startsWith("http://") && !var0.startsWith("https://")) { // L: 64 throw new Exception(); } else { String var11 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789?&=,.%+-_#:/*"; // L: 65 for (int var4 = 0; var4 < var0.length(); ++var4) { // L: 66 if (var11.indexOf(var0.charAt(var4)) == -1) { // L: 67 throw new Exception(); } } Runtime.getRuntime().exec("cmd /c start \"j\" \"" + var0 + "\""); // L: 69 return true; // L: 70 } } catch (Throwable var5) { // L: 72 return false; // L: 73 } } else if (var1 == 1) { // L: 76 try { Object var10 = class27.method396(class29.field177, var2, new Object[]{(new URL(class29.field177.getCodeBase(), var0)).toString()}); // L: 78 return var10 != null; // L: 79 } catch (Throwable var6) { // L: 81 return false; // L: 82 } } else if (var1 == 2) { // L: 85 try { class29.field177.getAppletContext().showDocument(new URL(class29.field177.getCodeBase(), var0), "_blank"); // L: 87 return true; // L: 88 } catch (Exception var7) { // L: 90 return false; // L: 91 } } else if (var1 == 3) { // L: 94 try { Applet var3 = class29.field177; // L: 96 JSObject.getWindow(var3).call("loggedout", (Object[])null); // L: 99 } catch (Throwable var9) { // L: 102 } try { class29.field177.getAppletContext().showDocument(new URL(class29.field177.getCodeBase(), var0), "_top"); // L: 104 return true; // L: 105 } catch (Exception var8) { // L: 107 return false; // L: 108 } } else { throw new IllegalArgumentException(); // L: 111 } } @ObfuscatedName("e") @ObfuscatedSignature( descriptor = "(I)[Ldi;", garbageValue = "-862864907" ) static class114[] method2418() { return new class114[]{class114.field1408, class114.field1409, class114.field1410, class114.field1413, class114.field1412}; // L: 137 } }