package com.worklight.common;

import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.content.pm.PackageManager;
import android.content.pm.Signature;
import android.os.Build;
import android.os.Build.VERSION;
import android.util.Log;
import com.worklight.common.internal.JULHandler;
import com.worklight.common.security.WLDeviceAuthManager;
import com.worklight.wlclient.WLRequest;
import com.worklight.wlclient.WLRequestListener;
import com.worklight.wlclient.api.WLClient;
import com.worklight.wlclient.api.WLFailResponse;
import com.worklight.wlclient.api.WLRequestOptions;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
import java.util.Timer;
import java.util.TimerTask;
import java.util.WeakHashMap;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.Callable;
import java.util.concurrent.Future;
import java.util.concurrent.RejectedExecutionHandler;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.logging.FileHandler;
import java.util.logging.Formatter;
import java.util.logging.Handler;
import java.util.logging.Level;
import java.util.logging.LogManager;
import java.util.logging.LogRecord;
import javax.security.auth.x500.X500Principal;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

public final class Logger
{
  public static final String ANALYTICS_FILENAME = "analytics.log";
  private static final String CONTEXT_NULL_MSG;
  public static final boolean DEFAULT_analyticsCapture = true;
  public static final boolean DEFAULT_capture = true;
  protected static final int DEFAULT_logFileMaxSize = 100000;
  public static final String FILENAME = "wl.log";
  private static final String HEADER_APP_NAME = "appname";
  private static final String HEADER_APP_VERSION = "appversion";
  private static final String HEADER_DEVICE_ID = "deviceId";
  private static final String HEADER_ENVIRONMENT = "env";
  private static final String HEADER_MODEL = "model";
  private static final String HEADER_OS_VERSION = "osversion";
  private static final String HEADER_PREFIX = "x-wl-clientlog-";
  private static final String LOG_TAG;
  public static final int MAX_NUM_LOG_FILES = 2;
  public static final String SHARED_PREF_KEY;
  public static final String SHARED_PREF_KEY_CRASH_DETECTED = "crashDetected";
  protected static final String SHARED_PREF_KEY_autoSendLogs = "autoSendLogs";
  protected static final String SHARED_PREF_KEY_autoUpdateConfig = "autoUpdateConfig";
  public static final String SHARED_PREF_KEY_filters = "filters";
  public static final String SHARED_PREF_KEY_filters_from_server = "filtersFromServer";
  public static final String SHARED_PREF_KEY_level = "level";
  public static final String SHARED_PREF_KEY_level_from_server = "levelFromServer";
  protected static final String SHARED_PREF_KEY_logFileMaxSize = "logFileMaxSize";
  public static final String SHARED_PREF_KEY_logPersistence = "logPersistence";
  public static final String SHARED_PREF_KEY_logPersistence_from_server = "logPersistenceFromServer";
  private static final ThreadPoolExecutor ThreadPoolWorkQueue;
  public static final Object WAIT_LOCK = new Object();
  private static Boolean analyticsCapture;
  private static Boolean autoSendLogs;
  private static Boolean autoUpdateConfig;
  private static Boolean capture;
  private static Context context;
  private static boolean context_null_msg_already_printed;
  private static FileLoggerInterface fileLoggerInstance;
  private static HashMap<String, LEVEL> filters;
  private static WeakHashMap<String, Logger> instances;
  private static JULHandler julHandler;
  private static LEVEL level;
  private static Integer logFileMaxSize;
  private static long priorAutoTriggerTime;
  private static Timer timer;
  private static UncaughtExceptionHandler uncaughtExceptionHandler;
  private final String tag;

  static
  {
    LOG_TAG = Logger.class.getName();
    CONTEXT_NULL_MSG = Logger.class.getName() + ".setContext(Context) must be called to fully enable debug log capture.  Currently, the 'capture' flag is set but the 'context' field is not.  This warning will only be printed once.";
    context_null_msg_already_printed = false;
    SHARED_PREF_KEY = Logger.class.getName();
    priorAutoTriggerTime = 0L;
    capture = null;
    analyticsCapture = null;
    logFileMaxSize = null;
    level = null;
    julHandler = new JULHandler();
    filters = new HashMap();
    uncaughtExceptionHandler = null;
    instances = new WeakHashMap();
    ThreadPoolWorkQueue = new ThreadPoolExecutor(1, 1, 100L, TimeUnit.MILLISECONDS, new ArrayBlockingQueue(1000));
    ThreadPoolWorkQueue.setRejectedExecutionHandler(new RejectedExecutionHandler()
    {
      public void rejectedExecution(Runnable paramAnonymousRunnable, ThreadPoolExecutor paramAnonymousThreadPoolExecutor)
      {
        try
        {
          paramAnonymousThreadPoolExecutor.getQueue().put(paramAnonymousRunnable);
          return;
        }
        catch (InterruptedException localInterruptedException)
        {
        }
      }
    });
  }

  private Logger(String paramString)
  {
    if (fileLoggerInstance == null)
      fileLoggerInstance = FileLogger.getInstance();
    if ((paramString == null) || (paramString.trim().equals("")));
    for (String str = "NONE"; ; str = paramString.trim())
    {
      this.tag = str;
      return;
    }
  }

  public static JSONObject HashMapToJSONObject(HashMap<String, LEVEL> paramHashMap)
  {
    JSONObject localJSONObject;
    if (paramHashMap == null)
      localJSONObject = new JSONObject();
    while (true)
    {
      return localJSONObject;
      Set localSet = paramHashMap.keySet();
      localJSONObject = new JSONObject();
      Iterator localIterator = localSet.iterator();
      while (localIterator.hasNext())
      {
        String str = (String)localIterator.next();
        try
        {
          localJSONObject.put(str, ((LEVEL)paramHashMap.get(str)).toString());
        }
        catch (JSONException localJSONException)
        {
        }
      }
    }
  }

  public static HashMap<String, LEVEL> JSONObjectToHashMap(JSONObject paramJSONObject)
  {
    HashMap localHashMap = new HashMap();
    Iterator localIterator = paramJSONObject.keys();
    while (localIterator.hasNext())
    {
      String str = (String)localIterator.next();
      try
      {
        localHashMap.put(str, LEVEL.valueOf(paramJSONObject.getString(str).toUpperCase()));
      }
      catch (JSONException localJSONException)
      {
      }
    }
    return localHashMap;
  }

  private static JSONObject appendFullStackTrace(JSONObject paramJSONObject, Throwable paramThrowable)
  {
    JSONArray localJSONArray = new JSONArray();
    StackTraceElement[] arrayOfStackTraceElement = paramThrowable.getStackTrace();
    for (int i = 0; i < arrayOfStackTraceElement.length; i++)
      localJSONArray.put(arrayOfStackTraceElement[i].toString());
    if (paramJSONObject == null);
    try
    {
      paramJSONObject = new JSONObject();
      paramJSONObject.put("$stacktrace", localJSONArray);
      paramJSONObject.put("$exceptionMessage", paramThrowable.getLocalizedMessage());
      paramJSONObject.put("$exceptionClass", paramThrowable.getClass().getName());
      return paramJSONObject;
    }
    catch (JSONException localJSONException)
    {
    }
    return paramJSONObject;
  }

  private JSONObject appendStackMetadata(JSONObject paramJSONObject)
  {
    if (paramJSONObject != null);
    try
    {
      boolean bool1 = paramJSONObject.has("$src");
      if (bool1)
        try
        {
          String str = paramJSONObject.getString("$src");
          if (str != null)
          {
            boolean bool2 = str.equals("js");
            if (bool2)
              return paramJSONObject;
          }
        }
        catch (JSONException localJSONException)
        {
        }
      StackTraceElement[] arrayOfStackTraceElement = new Exception().getStackTrace();
      for (i = 0; !arrayOfStackTraceElement[i].getClassName().equals(Logger.class.getName()); i++);
      if ((!arrayOfStackTraceElement[i].getClassName().equals(Logger.class.getName())) && (!arrayOfStackTraceElement[i].getClassName().startsWith(JULHandler.class.getName())) && (!arrayOfStackTraceElement[i].getClassName().startsWith(java.util.logging.Logger.class.getName())) && (!arrayOfStackTraceElement[i].getClassName().startsWith(WLAnalytics.class.getName())))
      {
        if (paramJSONObject == null)
          paramJSONObject = new JSONObject();
        if (!paramJSONObject.has("$class"))
          paramJSONObject.put("$class", arrayOfStackTraceElement[i].getClassName());
        if (!paramJSONObject.has("$file"))
          paramJSONObject.put("$file", arrayOfStackTraceElement[i].getFileName());
        if (!paramJSONObject.has("$method"))
          paramJSONObject.put("$method", arrayOfStackTraceElement[i].getMethodName());
        if (!paramJSONObject.has("$line"))
          paramJSONObject.put("$line", arrayOfStackTraceElement[i].getLineNumber());
        if (!paramJSONObject.has("$src"))
          paramJSONObject.put("$src", "java");
        return paramJSONObject;
      }
    }
    catch (Exception localException)
    {
      while (true)
      {
        int i;
        Log.e(LOG_TAG, "Could not generate jsonMetadata object.", localException);
        continue;
        i++;
      }
    }
  }

  private static void captureToFile(JSONObject paramJSONObject, LEVEL paramLEVEL)
  {
    while (true)
    {
      boolean bool1;
      try
      {
        bool1 = getCaptureSync();
        boolean bool2 = getAnalyticsCaptureSync();
        if (context == null)
        {
          if (!context_null_msg_already_printed)
          {
            Log.w(LOG_TAG, CONTEXT_NULL_MSG);
            context_null_msg_already_printed = true;
          }
          return;
        }
        int i = paramJSONObject.length();
        if (i == 0)
          continue;
        if (bool2)
        {
          try
          {
            if (!paramLEVEL.equals(LEVEL.ANALYTICS))
              break label103;
            fileLoggerInstance.log(paramJSONObject, "analytics.log");
          }
          catch (Exception localException)
          {
            Log.e(LOG_TAG, "An error occurred capturing data to file.", localException);
          }
          continue;
        }
      }
      finally
      {
      }
      label103: if (bool1)
        fileLoggerInstance.log(paramJSONObject, "wl.log");
    }
  }

  private static JSONObject createJSONObject(LEVEL paramLEVEL, String paramString1, String paramString2, long paramLong, JSONObject paramJSONObject, Throwable paramThrowable)
  {
    JSONObject localJSONObject = new JSONObject();
    String str = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss:S").format(Long.valueOf(paramLong));
    try
    {
      localJSONObject.put("timestamp", str);
      localJSONObject.put("level", paramLEVEL.toString());
      localJSONObject.put("pkg", paramString1);
      localJSONObject.put("msg", paramString2);
      localJSONObject.put("threadid", Thread.currentThread().getId());
      if (paramJSONObject != null)
        localJSONObject.put("metadata", paramJSONObject);
      if (paramThrowable != null)
        localJSONObject.put("metadata", appendFullStackTrace(paramJSONObject, paramThrowable));
      return localJSONObject;
    }
    catch (JSONException localJSONException)
    {
      Log.e(LOG_TAG, "Error adding JSONObject key/value pairs", localJSONException);
    }
    return localJSONObject;
  }

  public static boolean getAnalyticsCapture()
  {
    Future localFuture = ThreadPoolWorkQueue.submit(new Callable()
    {
      public Boolean call()
      {
        return Boolean.valueOf(Logger.access$1200());
      }
    });
    try
    {
      boolean bool = ((Boolean)localFuture.get()).booleanValue();
      return bool;
    }
    catch (Exception localException)
    {
    }
    return getAnalyticsCaptureSync();
  }

  private static boolean getAnalyticsCaptureSync()
  {
    try
    {
      Boolean localBoolean = analyticsCapture;
      if (localBoolean == null);
      boolean bool1;
      for (boolean bool2 = true; ; bool2 = bool1)
      {
        return bool2;
        bool1 = analyticsCapture.booleanValue();
      }
    }
    finally
    {
    }
  }

  public static byte[] getByteArrayFromFile(File paramFile)
    throws UnsupportedEncodingException
  {
    if (fileLoggerInstance == null)
      return new byte[0];
    return fileLoggerInstance.getFileContentsAsByteArray(paramFile);
  }

  public static boolean getCapture()
  {
    Future localFuture = ThreadPoolWorkQueue.submit(new Callable()
    {
      public Boolean call()
      {
        return Boolean.valueOf(Logger.access$1000());
      }
    });
    try
    {
      boolean bool = ((Boolean)localFuture.get()).booleanValue();
      return bool;
    }
    catch (Exception localException)
    {
    }
    return getCaptureSync();
  }

  private static boolean getCaptureSync()
  {
    try
    {
      if (capture == null);
      boolean bool3;
      for (boolean bool1 = true; ; bool1 = bool3)
      {
        if (context != null)
        {
          boolean bool2 = context.getSharedPreferences(SHARED_PREF_KEY, 0).getBoolean("logPersistenceFromServer", bool1);
          bool1 = bool2;
        }
        return bool1;
        bool3 = capture.booleanValue();
      }
    }
    finally
    {
    }
  }

  public static HashMap<String, LEVEL> getFilters()
  {
    Future localFuture = ThreadPoolWorkQueue.submit(new Callable()
    {
      public HashMap<String, Logger.LEVEL> call()
      {
        return Logger.access$1400();
      }
    });
    try
    {
      HashMap localHashMap = (HashMap)localFuture.get();
      return localHashMap;
    }
    catch (Exception localException)
    {
    }
    return getFiltersSync();
  }

  // ERROR //
  private static HashMap<String, LEVEL> getFiltersSync()
  {
    // Byte code:
    //   0: ldc 2
    //   2: monitorenter
    //   3: getstatic 155	com/worklight/common/Logger:filters	Ljava/util/HashMap;
    //   6: astore_1
    //   7: getstatic 321	com/worklight/common/Logger:context	Landroid/content/Context;
    //   10: ifnull +44 -> 54
    //   13: getstatic 321	com/worklight/common/Logger:context	Landroid/content/Context;
    //   16: getstatic 135	com/worklight/common/Logger:SHARED_PREF_KEY	Ljava/lang/String;
    //   19: iconst_0
    //   20: invokevirtual 524	android/content/Context:getSharedPreferences	(Ljava/lang/String;I)Landroid/content/SharedPreferences;
    //   23: astore_2
    //   24: new 219	org/json/JSONObject
    //   27: dup
    //   28: aload_2
    //   29: ldc 59
    //   31: aload_1
    //   32: invokestatic 536	com/worklight/common/Logger:HashMapToJSONObject	(Ljava/util/HashMap;)Lorg/json/JSONObject;
    //   35: invokevirtual 537	org/json/JSONObject:toString	()Ljava/lang/String;
    //   38: invokeinterface 540 3 0
    //   43: invokespecial 541	org/json/JSONObject:<init>	(Ljava/lang/String;)V
    //   46: invokestatic 543	com/worklight/common/Logger:JSONObjectToHashMap	(Lorg/json/JSONObject;)Ljava/util/HashMap;
    //   49: astore 4
    //   51: aload 4
    //   53: astore_1
    //   54: ldc 2
    //   56: monitorexit
    //   57: aload_1
    //   58: areturn
    //   59: astore_0
    //   60: ldc 2
    //   62: monitorexit
    //   63: aload_0
    //   64: athrow
    //   65: astore_3
    //   66: goto -12 -> 54
    //
    // Exception table:
    //   from	to	target	type
    //   3	24	59	finally
    //   24	51	59	finally
    //   24	51	65	org/json/JSONException
  }

  public static Logger getInstance(String paramString)
  {
    try
    {
      Logger localLogger = (Logger)instances.get(paramString);
      if (localLogger == null)
      {
        localLogger = new Logger(paramString);
        instances.put(paramString, localLogger);
      }
      return localLogger;
    }
    finally
    {
    }
  }

  public static LEVEL getLevel()
  {
    Future localFuture = ThreadPoolWorkQueue.submit(new Callable()
    {
      public Logger.LEVEL call()
      {
        return Logger.access$100();
      }
    });
    try
    {
      LEVEL localLEVEL = (LEVEL)localFuture.get();
      return localLEVEL;
    }
    catch (Exception localException)
    {
    }
    return getLevelSync();
  }

  public static LEVEL getLevelDefault()
  {
    if (context == null)
      return LEVEL.DEBUG;
    X500Principal localX500Principal = new X500Principal("CN=Android Debug,O=Android,C=US");
    PackageManager localPackageManager = context.getPackageManager();
    try
    {
      Signature localSignature = localPackageManager.getPackageInfo(context.getPackageName(), 64).signatures[0];
      boolean bool2 = ((X509Certificate)CertificateFactory.getInstance("X.509").generateCertificate(new ByteArrayInputStream(localSignature.toByteArray()))).getSubjectX500Principal().equals(localX500Principal);
      bool1 = bool2;
      if (bool1)
        return LEVEL.DEBUG;
    }
    catch (Exception localException)
    {
      while (true)
        boolean bool1 = false;
    }
    return LEVEL.FATAL;
  }

  private static LEVEL getLevelSync()
  {
    try
    {
      if (level == null);
      for (Object localObject2 = getLevelDefault(); ; localObject2 = level)
      {
        if (context != null)
        {
          LEVEL localLEVEL = LEVEL.fromString(context.getSharedPreferences(SHARED_PREF_KEY, 0).getString("levelFromServer", ((LEVEL)localObject2).toString()));
          localObject2 = localLEVEL;
        }
        return localObject2;
      }
    }
    finally
    {
    }
  }

  public static int getMaxFileSize()
  {
    if (logFileMaxSize == null)
      return 100000;
    return logFileMaxSize.intValue();
  }

  public static boolean isUnCaughtExceptionDetected()
  {
    if (context == null)
    {
      if (!context_null_msg_already_printed)
      {
        Log.w(LOG_TAG, CONTEXT_NULL_MSG);
        context_null_msg_already_printed = true;
      }
      return false;
    }
    return context.getSharedPreferences(SHARED_PREF_KEY, 0).getBoolean("crashDetected", false);
  }

  private static String prependMetadata(String paramString, JSONObject paramJSONObject)
  {
    String str1;
    String str2;
    String str3;
    String str4;
    if (paramJSONObject != null)
    {
      str1 = "";
      str2 = "";
      str3 = "";
      str4 = "";
    }
    try
    {
      if (paramJSONObject.has("$class"))
      {
        String str6 = paramJSONObject.getString("$class");
        str1 = str6.substring(1 + str6.lastIndexOf('.'), str6.length());
      }
      if (paramJSONObject.has("$method"))
        str2 = paramJSONObject.getString("$method");
      if (paramJSONObject.has("$file"))
        str3 = paramJSONObject.getString("$file");
      if (paramJSONObject.has("$line"))
        str4 = paramJSONObject.getString("$line");
      if (!(str1 + str2 + str3 + str4).equals(""))
      {
        String str5 = str1 + "." + str2 + " in " + str3 + ":" + str4 + " :: " + paramString;
        paramString = str5;
      }
      return paramString;
    }
    catch (Exception localException)
    {
    }
    return paramString;
  }

  public static void processAutomaticTrigger()
  {
    if (Long.valueOf(new Date().getTime()).longValue() - priorAutoTriggerTime >= 60000L)
    {
      if (timer != null)
        timer.cancel();
      timer = new Timer("trigger timer");
      timer.schedule(new TimerTask()
      {
        public void run()
        {
          if ((Logger.autoUpdateConfig == null) || (Logger.autoUpdateConfig.booleanValue()))
            Logger.updateConfigFromServer();
          if ((Logger.autoSendLogs == null) || (Logger.autoSendLogs.booleanValue()))
          {
            Logger.send();
            Logger.sendAnalytics();
          }
        }
      }
      , 50L);
      priorAutoTriggerTime = new Date().getTime();
    }
  }

  public static void send()
  {
    sendFiles("wl.log");
  }

  public static void sendAnalytics()
  {
    sendFiles("analytics.log");
  }

  // ERROR //
  private static void sendFiles(String paramString)
  {
    // Byte code:
    //   0: ldc 2
    //   2: monitorenter
    //   3: getstatic 321	com/worklight/common/Logger:context	Landroid/content/Context;
    //   6: astore_2
    //   7: aload_2
    //   8: ifnonnull +7 -> 15
    //   11: ldc 2
    //   13: monitorexit
    //   14: return
    //   15: iconst_1
    //   16: istore_3
    //   17: iload_3
    //   18: iconst_m1
    //   19: if_icmple -8 -> 11
    //   22: new 680	java/io/File
    //   25: dup
    //   26: getstatic 321	com/worklight/common/Logger:context	Landroid/content/Context;
    //   29: invokevirtual 684	android/content/Context:getFilesDir	()Ljava/io/File;
    //   32: new 119	java/lang/StringBuilder
    //   35: dup
    //   36: invokespecial 120	java/lang/StringBuilder:<init>	()V
    //   39: aload_0
    //   40: invokevirtual 124	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   43: ldc_w 634
    //   46: invokevirtual 124	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   49: iload_3
    //   50: invokevirtual 687	java/lang/StringBuilder:append	(I)Ljava/lang/StringBuilder;
    //   53: invokevirtual 129	java/lang/StringBuilder:toString	()Ljava/lang/String;
    //   56: invokespecial 690	java/io/File:<init>	(Ljava/io/File;Ljava/lang/String;)V
    //   59: astore 4
    //   61: aload 4
    //   63: invokevirtual 692	java/io/File:length	()J
    //   66: lconst_0
    //   67: lcmp
    //   68: ifle +258 -> 326
    //   71: new 680	java/io/File
    //   74: dup
    //   75: new 119	java/lang/StringBuilder
    //   78: dup
    //   79: invokespecial 120	java/lang/StringBuilder:<init>	()V
    //   82: aload 4
    //   84: invokevirtual 695	java/lang/StringBuilder:append	(Ljava/lang/Object;)Ljava/lang/StringBuilder;
    //   87: ldc_w 697
    //   90: invokevirtual 124	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   93: invokevirtual 129	java/lang/StringBuilder:toString	()Ljava/lang/String;
    //   96: invokespecial 698	java/io/File:<init>	(Ljava/lang/String;)V
    //   99: astore 5
    //   101: aload 5
    //   103: invokevirtual 701	java/io/File:exists	()Z
    //   106: ifne +52 -> 158
    //   109: getstatic 117	com/worklight/common/Logger:LOG_TAG	Ljava/lang/String;
    //   112: invokestatic 703	com/worklight/common/Logger:getInstance	(Ljava/lang/String;)Lcom/worklight/common/Logger;
    //   115: new 119	java/lang/StringBuilder
    //   118: dup
    //   119: invokespecial 120	java/lang/StringBuilder:<init>	()V
    //   122: ldc_w 705
    //   125: invokevirtual 124	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   128: aload 4
    //   130: invokevirtual 695	java/lang/StringBuilder:append	(Ljava/lang/Object;)Ljava/lang/StringBuilder;
    //   133: ldc_w 707
    //   136: invokevirtual 124	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   139: aload 5
    //   141: invokevirtual 695	java/lang/StringBuilder:append	(Ljava/lang/Object;)Ljava/lang/StringBuilder;
    //   144: invokevirtual 129	java/lang/StringBuilder:toString	()Ljava/lang/String;
    //   147: invokevirtual 710	com/worklight/common/Logger:trace	(Ljava/lang/String;)V
    //   150: aload 4
    //   152: aload 5
    //   154: invokevirtual 714	java/io/File:renameTo	(Ljava/io/File;)Z
    //   157: pop
    //   158: new 716	com/worklight/common/Logger$SendLogsRequestListener
    //   161: dup
    //   162: aload 5
    //   164: invokespecial 719	com/worklight/common/Logger$SendLogsRequestListener:<init>	(Ljava/io/File;)V
    //   167: astore 6
    //   169: new 721	com/worklight/wlclient/api/WLRequestOptions
    //   172: dup
    //   173: invokespecial 722	com/worklight/wlclient/api/WLRequestOptions:<init>	()V
    //   176: astore 7
    //   178: ldc_w 724
    //   181: astore 8
    //   183: invokestatic 729	com/worklight/common/security/WLDeviceAuthManager:getInstance	()Lcom/worklight/common/security/WLDeviceAuthManager;
    //   186: getstatic 321	com/worklight/common/Logger:context	Landroid/content/Context;
    //   189: invokevirtual 733	com/worklight/common/security/WLDeviceAuthManager:getDeviceUUID	(Landroid/content/Context;)Ljava/lang/String;
    //   192: astore 12
    //   194: aload 12
    //   196: astore 8
    //   198: aload 7
    //   200: ldc_w 735
    //   203: aload 8
    //   205: invokevirtual 739	com/worklight/wlclient/api/WLRequestOptions:addHeader	(Ljava/lang/String;Ljava/lang/String;)V
    //   208: aload 7
    //   210: ldc_w 741
    //   213: invokestatic 746	com/worklight/common/WLConfig:getInstance	()Lcom/worklight/common/WLConfig;
    //   216: invokevirtual 749	com/worklight/common/WLConfig:getAppId	()Ljava/lang/String;
    //   219: invokevirtual 739	com/worklight/wlclient/api/WLRequestOptions:addHeader	(Ljava/lang/String;Ljava/lang/String;)V
    //   222: aload 7
    //   224: ldc_w 751
    //   227: invokestatic 746	com/worklight/common/WLConfig:getInstance	()Lcom/worklight/common/WLConfig;
    //   230: invokevirtual 754	com/worklight/common/WLConfig:getApplicationVersion	()Ljava/lang/String;
    //   233: invokevirtual 739	com/worklight/wlclient/api/WLRequestOptions:addHeader	(Ljava/lang/String;Ljava/lang/String;)V
    //   236: aload 7
    //   238: ldc_w 756
    //   241: getstatic 761	android/os/Build$VERSION:RELEASE	Ljava/lang/String;
    //   244: invokevirtual 739	com/worklight/wlclient/api/WLRequestOptions:addHeader	(Ljava/lang/String;Ljava/lang/String;)V
    //   247: aload 7
    //   249: ldc_w 763
    //   252: ldc_w 765
    //   255: invokevirtual 739	com/worklight/wlclient/api/WLRequestOptions:addHeader	(Ljava/lang/String;Ljava/lang/String;)V
    //   258: aload 7
    //   260: ldc_w 767
    //   263: getstatic 772	android/os/Build:MODEL	Ljava/lang/String;
    //   266: invokevirtual 739	com/worklight/wlclient/api/WLRequestOptions:addHeader	(Ljava/lang/String;Ljava/lang/String;)V
    //   269: aload 5
    //   271: invokestatic 774	com/worklight/common/Logger:getByteArrayFromFile	(Ljava/io/File;)[B
    //   274: astore 11
    //   276: aload 11
    //   278: arraylength
    //   279: ifeq -268 -> 11
    //   282: aload 7
    //   284: ldc_w 776
    //   287: new 200	java/lang/String
    //   290: dup
    //   291: aload 11
    //   293: ldc_w 778
    //   296: invokespecial 781	java/lang/String:<init>	([BLjava/lang/String;)V
    //   299: invokevirtual 784	com/worklight/wlclient/api/WLRequestOptions:addParameter	(Ljava/lang/String;Ljava/lang/String;)V
    //   302: new 786	com/worklight/wlclient/WLRequest
    //   305: dup
    //   306: aload 6
    //   308: aload 7
    //   310: invokestatic 746	com/worklight/common/WLConfig:getInstance	()Lcom/worklight/common/WLConfig;
    //   313: getstatic 321	com/worklight/common/Logger:context	Landroid/content/Context;
    //   316: invokespecial 789	com/worklight/wlclient/WLRequest:<init>	(Lcom/worklight/wlclient/WLRequestListener;Lcom/worklight/wlclient/api/WLRequestOptions;Lcom/worklight/common/WLConfig;Landroid/content/Context;)V
    //   319: ldc_w 791
    //   322: iconst_1
    //   323: invokevirtual 795	com/worklight/wlclient/WLRequest:makeRequest	(Ljava/lang/String;Z)V
    //   326: iinc 3 255
    //   329: goto -312 -> 17
    //   332: astore 9
    //   334: getstatic 117	com/worklight/common/Logger:LOG_TAG	Ljava/lang/String;
    //   337: invokestatic 703	com/worklight/common/Logger:getInstance	(Ljava/lang/String;)Lcom/worklight/common/Logger;
    //   340: ldc_w 797
    //   343: aload 9
    //   345: invokevirtual 801	com/worklight/common/Logger:error	(Ljava/lang/String;Ljava/lang/Throwable;)V
    //   348: goto -150 -> 198
    //   351: astore_1
    //   352: ldc 2
    //   354: monitorexit
    //   355: aload_1
    //   356: athrow
    //   357: astore 10
    //   359: getstatic 117	com/worklight/common/Logger:LOG_TAG	Ljava/lang/String;
    //   362: invokestatic 703	com/worklight/common/Logger:getInstance	(Ljava/lang/String;)Lcom/worklight/common/Logger;
    //   365: ldc_w 803
    //   368: aload 10
    //   370: invokevirtual 801	com/worklight/common/Logger:error	(Ljava/lang/String;Ljava/lang/Throwable;)V
    //   373: goto -47 -> 326
    //
    // Exception table:
    //   from	to	target	type
    //   183	194	332	java/lang/Exception
    //   3	7	351	finally
    //   22	158	351	finally
    //   158	178	351	finally
    //   183	194	351	finally
    //   198	269	351	finally
    //   269	326	351	finally
    //   334	348	351	finally
    //   359	373	351	finally
    //   269	326	357	java/io/IOException
  }

  @Deprecated
  public static void sendIfUnCaughtExceptionDetected(Context paramContext)
  {
    try
    {
      setContext(paramContext);
      int i = 0;
      if (paramContext == null);
      while (true)
      {
        if (i != 0)
          send();
        return;
        boolean bool = paramContext.getSharedPreferences(SHARED_PREF_KEY, 0).getBoolean("crashDetected", false);
        i = bool;
      }
    }
    finally
    {
    }
  }

  public static void setAnalyticsCapture(boolean paramBoolean)
  {
    ThreadPoolWorkQueue.execute(new Runnable()
    {
      public void run()
      {
        Logger.setAnalyticsCaptureSync(this.val$_capture);
        synchronized (Logger.WAIT_LOCK)
        {
          Logger.WAIT_LOCK.notifyAll();
          return;
        }
      }
    });
  }

  private static void setAnalyticsCaptureSync(boolean paramBoolean)
  {
    try
    {
      analyticsCapture = Boolean.valueOf(paramBoolean);
      return;
    }
    finally
    {
      localObject = finally;
      throw localObject;
    }
  }

  public static void setAutoSendLogs(boolean paramBoolean)
  {
    ThreadPoolWorkQueue.execute(new Runnable()
    {
      public void run()
      {
        Logger.setAutoSendLogsSync(this.val$_autoSendLogs);
        synchronized (Logger.WAIT_LOCK)
        {
          Logger.WAIT_LOCK.notifyAll();
          return;
        }
      }
    });
  }

  private static void setAutoSendLogsSync(boolean paramBoolean)
  {
    try
    {
      autoSendLogs = Boolean.valueOf(paramBoolean);
      if (context != null)
        context.getSharedPreferences(SHARED_PREF_KEY, 0).edit().putBoolean("autoSendLogs", autoSendLogs.booleanValue()).commit();
      return;
    }
    finally
    {
      localObject = finally;
      throw localObject;
    }
  }

  public static void setAutoUpdateConfig(boolean paramBoolean)
  {
    ThreadPoolWorkQueue.execute(new Runnable()
    {
      public void run()
      {
        Logger.setAutoUpdateConfigSync(this.val$_autoUpdateConfig);
        synchronized (Logger.WAIT_LOCK)
        {
          Logger.WAIT_LOCK.notifyAll();
          return;
        }
      }
    });
  }

  private static void setAutoUpdateConfigSync(boolean paramBoolean)
  {
    try
    {
      autoUpdateConfig = Boolean.valueOf(paramBoolean);
      if (context != null)
        context.getSharedPreferences(SHARED_PREF_KEY, 0).edit().putBoolean("autoUpdateConfig", autoUpdateConfig.booleanValue()).commit();
      return;
    }
    finally
    {
      localObject = finally;
      throw localObject;
    }
  }

  public static void setCapture(boolean paramBoolean)
  {
    ThreadPoolWorkQueue.execute(new Runnable()
    {
      public void run()
      {
        Logger.setCaptureSync(this.val$_capture);
        synchronized (Logger.WAIT_LOCK)
        {
          Logger.WAIT_LOCK.notifyAll();
          return;
        }
      }
    });
  }

  private static void setCaptureSync(boolean paramBoolean)
  {
    try
    {
      capture = Boolean.valueOf(paramBoolean);
      if (context != null)
      {
        SharedPreferences localSharedPreferences = context.getSharedPreferences(SHARED_PREF_KEY, 0);
        localSharedPreferences.edit().putBoolean("logPersistence", capture.booleanValue()).commit();
        capture = Boolean.valueOf(localSharedPreferences.getBoolean("logPersistenceFromServer", capture.booleanValue()));
      }
      return;
    }
    finally
    {
      localObject = finally;
      throw localObject;
    }
  }

  public static void setContext(Context paramContext)
  {
    if (context == null)
    {
      LogManager.getLogManager().getLogger("").addHandler(julHandler);
      java.util.logging.Logger.getLogger("").setLevel(Level.ALL);
      context = paramContext;
      if ((fileLoggerInstance == null) || ((fileLoggerInstance instanceof FileLogger)))
        fileLoggerInstance = FileLogger.getInstance();
    }
    try
    {
      WLClient.getInstance();
      localSharedPreferences = context.getSharedPreferences(SHARED_PREF_KEY, 0);
      if (level != null)
      {
        setLevelSync(level);
        if (logFileMaxSize == null)
          break label207;
        setMaxFileSize(logFileMaxSize.intValue());
        if (capture == null)
          break label223;
        setCaptureSync(capture.booleanValue());
        if (autoSendLogs == null)
          break label238;
        setAutoSendLogsSync(autoSendLogs.booleanValue());
        if (autoUpdateConfig == null)
          break label253;
        setAutoUpdateConfigSync(autoUpdateConfig.booleanValue());
        if (filters == null)
          break label268;
        setFiltersSync(filters);
        uncaughtExceptionHandler = new UncaughtExceptionHandler(null);
        Thread.setDefaultUncaughtExceptionHandler(uncaughtExceptionHandler);
      }
    }
    catch (RuntimeException localRuntimeException)
    {
      while (true)
      {
        SharedPreferences localSharedPreferences;
        WLClient.createInstance(context);
        continue;
        setLevelSync(LEVEL.fromString(localSharedPreferences.getString("level", getLevelDefault().toString())));
        continue;
        label207: setMaxFileSize(localSharedPreferences.getInt("logFileMaxSize", 100000));
        continue;
        label223: setCaptureSync(localSharedPreferences.getBoolean("logPersistence", true));
        continue;
        label238: setAutoSendLogsSync(localSharedPreferences.getBoolean("autoSendLogs", true));
        continue;
        label253: setAutoUpdateConfigSync(localSharedPreferences.getBoolean("autoUpdateConfig", true));
        continue;
        try
        {
          label268: setFiltersSync(JSONObjectToHashMap(new JSONObject(localSharedPreferences.getString("filters", "{}"))));
        }
        catch (JSONException localJSONException)
        {
        }
      }
    }
  }

  public static void setFilters(HashMap<String, LEVEL> paramHashMap)
  {
    ThreadPoolWorkQueue.execute(new Runnable()
    {
      public void run()
      {
        Logger.setFiltersSync(this.val$_filters);
        synchronized (Logger.WAIT_LOCK)
        {
          Logger.WAIT_LOCK.notifyAll();
          return;
        }
      }
    });
  }

  private static void setFiltersSync(HashMap<String, LEVEL> paramHashMap)
  {
    filters = paramHashMap;
    SharedPreferences localSharedPreferences;
    if (context != null)
    {
      localSharedPreferences = context.getSharedPreferences(SHARED_PREF_KEY, 0);
      localSharedPreferences.edit().putString("filters", HashMapToJSONObject(filters).toString()).commit();
    }
    try
    {
      filters = JSONObjectToHashMap(new JSONObject(localSharedPreferences.getString("filtersFromServer", HashMapToJSONObject(filters).toString())));
      return;
    }
    catch (JSONException localJSONException)
    {
    }
  }

  public static void setLevel(LEVEL paramLEVEL)
  {
    ThreadPoolWorkQueue.execute(new Runnable()
    {
      public void run()
      {
        Logger.setLevelSync(this.val$desiredLevel);
        synchronized (Logger.WAIT_LOCK)
        {
          Logger.WAIT_LOCK.notifyAll();
          return;
        }
      }
    });
  }

  private static void setLevelSync(LEVEL paramLEVEL)
  {
    if (paramLEVEL == null);
    while (true)
    {
      return;
      try
      {
        level = paramLEVEL;
        if (context == null)
          continue;
        SharedPreferences localSharedPreferences = context.getSharedPreferences(SHARED_PREF_KEY, 0);
        localSharedPreferences.edit().putString("level", level.toString()).commit();
        level = LEVEL.fromString(localSharedPreferences.getString("levelFromServer", level.toString()));
      }
      finally
      {
      }
    }
  }

  public static void setMaxFileSize(int paramInt)
  {
    if (paramInt >= 10000)
      logFileMaxSize = Integer.valueOf(paramInt);
    if (context != null)
      context.getSharedPreferences(SHARED_PREF_KEY, 0).edit().putInt("logFileMaxSize", logFileMaxSize.intValue()).commit();
  }

  protected static void unsetContext()
  {
    instances.clear();
    context = null;
    capture = null;
    analyticsCapture = null;
    logFileMaxSize = null;
    level = null;
    filters = null;
    uncaughtExceptionHandler = null;
    fileLoggerInstance = null;
    autoSendLogs = null;
    autoUpdateConfig = null;
    LogManager.getLogManager().getLogger("").removeHandler(julHandler);
  }

  public static void updateConfigFromServer()
  {
    try
    {
      WLRequestListener local12 = new WLRequestListener()
      {
        public void onFailure(WLFailResponse paramAnonymousWLFailResponse)
        {
          synchronized (Logger.WAIT_LOCK)
          {
            Logger.WAIT_LOCK.notifyAll();
            return;
          }
        }

        // ERROR //
        public void onSuccess(com.worklight.wlclient.api.WLResponse paramAnonymousWLResponse)
        {
          // Byte code:
          //   0: invokestatic 31	com/worklight/common/Logger:access$200	()Landroid/content/Context;
          //   3: astore 5
          //   5: aload 5
          //   7: ifnonnull +29 -> 36
          //   10: getstatic 20	com/worklight/common/Logger:WAIT_LOCK	Ljava/lang/Object;
          //   13: astore 28
          //   15: aload 28
          //   17: monitorenter
          //   18: getstatic 20	com/worklight/common/Logger:WAIT_LOCK	Ljava/lang/Object;
          //   21: invokevirtual 23	java/lang/Object:notifyAll	()V
          //   24: aload 28
          //   26: monitorexit
          //   27: return
          //   28: astore 29
          //   30: aload 28
          //   32: monitorexit
          //   33: aload 29
          //   35: athrow
          //   36: aload_1
          //   37: invokevirtual 37	com/worklight/wlclient/api/WLResponse:getStatus	()I
          //   40: sipush 200
          //   43: if_icmpne +383 -> 426
          //   46: aload_1
          //   47: invokevirtual 41	com/worklight/wlclient/api/WLResponse:getResponseJSON	()Lorg/json/JSONObject;
          //   50: astore 15
          //   52: aload 15
          //   54: ifnonnull +40 -> 94
          //   57: invokestatic 45	com/worklight/common/Logger:access$400	()Ljava/lang/String;
          //   60: invokestatic 49	com/worklight/common/Logger:getInstance	(Ljava/lang/String;)Lcom/worklight/common/Logger;
          //   63: ldc 51
          //   65: invokevirtual 55	com/worklight/common/Logger:error	(Ljava/lang/String;)V
          //   68: getstatic 20	com/worklight/common/Logger:WAIT_LOCK	Ljava/lang/Object;
          //   71: astore 16
          //   73: aload 16
          //   75: monitorenter
          //   76: getstatic 20	com/worklight/common/Logger:WAIT_LOCK	Ljava/lang/Object;
          //   79: invokevirtual 23	java/lang/Object:notifyAll	()V
          //   82: aload 16
          //   84: monitorexit
          //   85: return
          //   86: astore 17
          //   88: aload 16
          //   90: monitorexit
          //   91: aload 17
          //   93: athrow
          //   94: invokestatic 45	com/worklight/common/Logger:access$400	()Ljava/lang/String;
          //   97: invokestatic 49	com/worklight/common/Logger:getInstance	(Ljava/lang/String;)Lcom/worklight/common/Logger;
          //   100: new 57	java/lang/StringBuilder
          //   103: dup
          //   104: invokespecial 58	java/lang/StringBuilder:<init>	()V
          //   107: ldc 60
          //   109: invokevirtual 64	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
          //   112: aload 15
          //   114: invokevirtual 69	org/json/JSONObject:toString	()Ljava/lang/String;
          //   117: invokevirtual 64	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
          //   120: invokevirtual 70	java/lang/StringBuilder:toString	()Ljava/lang/String;
          //   123: invokevirtual 73	com/worklight/common/Logger:trace	(Ljava/lang/String;)V
          //   126: aload 15
          //   128: ldc 75
          //   130: invokevirtual 79	org/json/JSONObject:has	(Ljava/lang/String;)Z
          //   133: istore 18
          //   135: iload 18
          //   137: ifeq +164 -> 301
          //   140: aload 15
          //   142: ldc 75
          //   144: invokevirtual 83	org/json/JSONObject:getJSONObject	(Ljava/lang/String;)Lorg/json/JSONObject;
          //   147: astore 20
          //   149: aload 20
          //   151: ldc 85
          //   153: invokevirtual 79	org/json/JSONObject:has	(Ljava/lang/String;)Z
          //   156: ifeq +38 -> 194
          //   159: invokestatic 31	com/worklight/common/Logger:access$200	()Landroid/content/Context;
          //   162: getstatic 89	com/worklight/common/Logger:SHARED_PREF_KEY	Ljava/lang/String;
          //   165: iconst_0
          //   166: invokevirtual 95	android/content/Context:getSharedPreferences	(Ljava/lang/String;I)Landroid/content/SharedPreferences;
          //   169: invokeinterface 101 1 0
          //   174: ldc 103
          //   176: aload 20
          //   178: ldc 85
          //   180: invokevirtual 106	org/json/JSONObject:getBoolean	(Ljava/lang/String;)Z
          //   183: invokeinterface 112 3 0
          //   188: invokeinterface 116 1 0
          //   193: pop
          //   194: aload 20
          //   196: ldc 118
          //   198: invokevirtual 79	org/json/JSONObject:has	(Ljava/lang/String;)Z
          //   201: ifeq +38 -> 239
          //   204: invokestatic 31	com/worklight/common/Logger:access$200	()Landroid/content/Context;
          //   207: getstatic 89	com/worklight/common/Logger:SHARED_PREF_KEY	Ljava/lang/String;
          //   210: iconst_0
          //   211: invokevirtual 95	android/content/Context:getSharedPreferences	(Ljava/lang/String;I)Landroid/content/SharedPreferences;
          //   214: invokeinterface 101 1 0
          //   219: ldc 120
          //   221: aload 20
          //   223: ldc 118
          //   225: invokevirtual 124	org/json/JSONObject:getString	(Ljava/lang/String;)Ljava/lang/String;
          //   228: invokeinterface 128 3 0
          //   233: invokeinterface 116 1 0
          //   238: pop
          //   239: aload 20
          //   241: ldc 130
          //   243: invokevirtual 79	org/json/JSONObject:has	(Ljava/lang/String;)Z
          //   246: ifeq +91 -> 337
          //   249: aload 20
          //   251: ldc 130
          //   253: invokevirtual 83	org/json/JSONObject:getJSONObject	(Ljava/lang/String;)Lorg/json/JSONObject;
          //   256: astore 22
          //   258: invokestatic 31	com/worklight/common/Logger:access$200	()Landroid/content/Context;
          //   261: getstatic 89	com/worklight/common/Logger:SHARED_PREF_KEY	Ljava/lang/String;
          //   264: iconst_0
          //   265: invokevirtual 95	android/content/Context:getSharedPreferences	(Ljava/lang/String;I)Landroid/content/SharedPreferences;
          //   268: invokeinterface 101 1 0
          //   273: astore 23
          //   275: aload 22
          //   277: ifnonnull +50 -> 327
          //   280: ldc 132
          //   282: astore 24
          //   284: aload 23
          //   286: ldc 134
          //   288: aload 24
          //   290: invokeinterface 128 3 0
          //   295: invokeinterface 116 1 0
          //   300: pop
          //   301: getstatic 20	com/worklight/common/Logger:WAIT_LOCK	Ljava/lang/Object;
          //   304: astore 13
          //   306: aload 13
          //   308: monitorenter
          //   309: getstatic 20	com/worklight/common/Logger:WAIT_LOCK	Ljava/lang/Object;
          //   312: invokevirtual 23	java/lang/Object:notifyAll	()V
          //   315: aload 13
          //   317: monitorexit
          //   318: return
          //   319: astore 14
          //   321: aload 13
          //   323: monitorexit
          //   324: aload 14
          //   326: athrow
          //   327: aload 22
          //   329: invokevirtual 69	org/json/JSONObject:toString	()Ljava/lang/String;
          //   332: astore 24
          //   334: goto -50 -> 284
          //   337: invokestatic 31	com/worklight/common/Logger:access$200	()Landroid/content/Context;
          //   340: getstatic 89	com/worklight/common/Logger:SHARED_PREF_KEY	Ljava/lang/String;
          //   343: iconst_0
          //   344: invokevirtual 95	android/content/Context:getSharedPreferences	(Ljava/lang/String;I)Landroid/content/SharedPreferences;
          //   347: invokeinterface 101 1 0
          //   352: ldc 134
          //   354: ldc 132
          //   356: invokeinterface 128 3 0
          //   361: invokeinterface 116 1 0
          //   366: pop
          //   367: goto -66 -> 301
          //   370: astore 19
          //   372: invokestatic 45	com/worklight/common/Logger:access$400	()Ljava/lang/String;
          //   375: invokestatic 49	com/worklight/common/Logger:getInstance	(Ljava/lang/String;)Lcom/worklight/common/Logger;
          //   378: new 57	java/lang/StringBuilder
          //   381: dup
          //   382: invokespecial 58	java/lang/StringBuilder:<init>	()V
          //   385: ldc 136
          //   387: invokevirtual 64	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
          //   390: aload 15
          //   392: invokevirtual 69	org/json/JSONObject:toString	()Ljava/lang/String;
          //   395: invokevirtual 64	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
          //   398: invokevirtual 70	java/lang/StringBuilder:toString	()Ljava/lang/String;
          //   401: aload 19
          //   403: invokevirtual 139	com/worklight/common/Logger:error	(Ljava/lang/String;Ljava/lang/Throwable;)V
          //   406: goto -105 -> 301
          //   409: astore_2
          //   410: getstatic 20	com/worklight/common/Logger:WAIT_LOCK	Ljava/lang/Object;
          //   413: astore_3
          //   414: aload_3
          //   415: monitorenter
          //   416: getstatic 20	com/worklight/common/Logger:WAIT_LOCK	Ljava/lang/Object;
          //   419: invokevirtual 23	java/lang/Object:notifyAll	()V
          //   422: aload_3
          //   423: monitorexit
          //   424: aload_2
          //   425: athrow
          //   426: aload_1
          //   427: invokevirtual 37	com/worklight/wlclient/api/WLResponse:getStatus	()I
          //   430: sipush 204
          //   433: if_icmpne -132 -> 301
          //   436: invokestatic 45	com/worklight/common/Logger:access$400	()Ljava/lang/String;
          //   439: invokestatic 49	com/worklight/common/Logger:getInstance	(Ljava/lang/String;)Lcom/worklight/common/Logger;
          //   442: ldc 141
          //   444: invokevirtual 73	com/worklight/common/Logger:trace	(Ljava/lang/String;)V
          //   447: invokestatic 31	com/worklight/common/Logger:access$200	()Landroid/content/Context;
          //   450: getstatic 89	com/worklight/common/Logger:SHARED_PREF_KEY	Ljava/lang/String;
          //   453: iconst_0
          //   454: invokevirtual 95	android/content/Context:getSharedPreferences	(Ljava/lang/String;I)Landroid/content/SharedPreferences;
          //   457: astore 6
          //   459: aload 6
          //   461: invokeinterface 101 1 0
          //   466: astore 7
          //   468: aload 7
          //   470: ldc 103
          //   472: invokeinterface 145 2 0
          //   477: pop
          //   478: aload 7
          //   480: ldc 120
          //   482: invokeinterface 145 2 0
          //   487: pop
          //   488: aload 7
          //   490: ldc 134
          //   492: invokeinterface 145 2 0
          //   497: pop
          //   498: aload 7
          //   500: invokeinterface 116 1 0
          //   505: pop
          //   506: aload 6
          //   508: ldc 118
          //   510: invokestatic 149	com/worklight/common/Logger:getLevelDefault	()Lcom/worklight/common/Logger$LEVEL;
          //   513: invokevirtual 152	com/worklight/common/Logger$LEVEL:toString	()Ljava/lang/String;
          //   516: invokeinterface 155 3 0
          //   521: invokestatic 159	com/worklight/common/Logger$LEVEL:fromString	(Ljava/lang/String;)Lcom/worklight/common/Logger$LEVEL;
          //   524: invokestatic 163	com/worklight/common/Logger:setLevel	(Lcom/worklight/common/Logger$LEVEL;)V
          //   527: aload 6
          //   529: ldc 165
          //   531: iconst_1
          //   532: invokeinterface 168 3 0
          //   537: invokestatic 172	com/worklight/common/Logger:setCapture	(Z)V
          //   540: new 66	org/json/JSONObject
          //   543: dup
          //   544: aload 6
          //   546: ldc 130
          //   548: ldc 132
          //   550: invokeinterface 155 3 0
          //   555: invokespecial 174	org/json/JSONObject:<init>	(Ljava/lang/String;)V
          //   558: invokestatic 178	com/worklight/common/Logger:JSONObjectToHashMap	(Lorg/json/JSONObject;)Ljava/util/HashMap;
          //   561: invokestatic 182	com/worklight/common/Logger:setFilters	(Ljava/util/HashMap;)V
          //   564: goto -263 -> 301
          //   567: astore 12
          //   569: goto -268 -> 301
          //   572: astore 4
          //   574: aload_3
          //   575: monitorexit
          //   576: aload 4
          //   578: athrow
          //
          // Exception table:
          //   from	to	target	type
          //   18	27	28	finally
          //   30	33	28	finally
          //   76	85	86	finally
          //   88	91	86	finally
          //   309	318	319	finally
          //   321	324	319	finally
          //   140	194	370	org/json/JSONException
          //   194	239	370	org/json/JSONException
          //   239	275	370	org/json/JSONException
          //   284	301	370	org/json/JSONException
          //   327	334	370	org/json/JSONException
          //   337	367	370	org/json/JSONException
          //   0	5	409	finally
          //   36	52	409	finally
          //   57	68	409	finally
          //   94	135	409	finally
          //   140	194	409	finally
          //   194	239	409	finally
          //   239	275	409	finally
          //   284	301	409	finally
          //   327	334	409	finally
          //   337	367	409	finally
          //   372	406	409	finally
          //   426	540	409	finally
          //   540	564	409	finally
          //   540	564	567	org/json/JSONException
          //   416	424	572	finally
          //   574	576	572	finally
        }
      };
      WLRequestOptions localWLRequestOptions = new WLRequestOptions();
      Object localObject1 = "UNKNOWN";
      try
      {
        String str = WLDeviceAuthManager.getInstance().getDeviceUUID(context);
        localObject1 = str;
        localWLRequestOptions.addHeader("x-wl-clientlog-deviceId", (String)localObject1);
        localWLRequestOptions.addHeader("x-wl-clientlog-appname", WLConfig.getInstance().getAppId());
        localWLRequestOptions.addHeader("x-wl-clientlog-appversion", WLConfig.getInstance().getApplicationVersion());
        localWLRequestOptions.addHeader("x-wl-clientlog-osversion", Build.VERSION.RELEASE);
        localWLRequestOptions.addHeader("x-wl-clientlog-env", "Android");
        localWLRequestOptions.addHeader("x-wl-clientlog-model", Build.MODEL);
        new WLRequest(local12, localWLRequestOptions, WLConfig.getInstance(), context).makeRequest("apps/services/configprofile", true);
        return;
      }
      catch (Exception localException)
      {
        while (true)
          getInstance(LOG_TAG).error("Could not get device id from WLDeviceAuthManager; using value '" + (String)localObject1 + "' instead.", localException);
      }
    }
    finally
    {
    }
  }

  public void analytics(String paramString, JSONObject paramJSONObject)
  {
    doLog(LEVEL.ANALYTICS, paramString, new Date().getTime(), paramJSONObject, null);
  }

  public void debug(String paramString)
  {
    debug(paramString, null, null);
  }

  public void debug(String paramString, Throwable paramThrowable)
  {
    debug(paramString, null, paramThrowable);
  }

  public void debug(String paramString, JSONObject paramJSONObject)
  {
    debug(paramString, paramJSONObject, null);
  }

  public void debug(String paramString, JSONObject paramJSONObject, Throwable paramThrowable)
  {
    doLog(LEVEL.DEBUG, paramString, new Date().getTime(), paramJSONObject, paramThrowable);
  }

  public void doLog(LEVEL paramLEVEL, String paramString, long paramLong, JSONObject paramJSONObject, Throwable paramThrowable)
  {
    JSONObject localJSONObject = appendStackMetadata(paramJSONObject);
    ThreadPoolWorkQueue.execute(new DoLogRunnable(paramLEVEL, paramString, paramLong, localJSONObject, paramThrowable, this));
  }

  public void error(String paramString)
  {
    error(paramString, null, null);
  }

  public void error(String paramString, Throwable paramThrowable)
  {
    error(paramString, null, paramThrowable);
  }

  public void error(String paramString, JSONObject paramJSONObject)
  {
    error(paramString, paramJSONObject, null);
  }

  public void error(String paramString, JSONObject paramJSONObject, Throwable paramThrowable)
  {
    doLog(LEVEL.ERROR, paramString, new Date().getTime(), paramJSONObject, paramThrowable);
  }

  public void fatal(String paramString, JSONObject paramJSONObject, Throwable paramThrowable)
  {
    doLog(LEVEL.FATAL, paramString, new Date().getTime(), paramJSONObject, paramThrowable);
  }

  public void info(String paramString)
  {
    info(paramString, null);
  }

  public void info(String paramString, JSONObject paramJSONObject)
  {
    doLog(LEVEL.INFO, paramString, new Date().getTime(), paramJSONObject, null);
  }

  public void log(String paramString)
  {
    log(paramString, null);
  }

  public void log(String paramString, JSONObject paramJSONObject)
  {
    doLog(LEVEL.LOG, paramString, new Date().getTime(), paramJSONObject, null);
  }

  public void trace(String paramString)
  {
    trace(paramString, null);
  }

  public void trace(String paramString, JSONObject paramJSONObject)
  {
    doLog(LEVEL.TRACE, paramString, new Date().getTime(), paramJSONObject, null);
  }

  public void warn(String paramString)
  {
    warn(paramString, null, null);
  }

  public void warn(String paramString, Throwable paramThrowable)
  {
    warn(paramString, null, paramThrowable);
  }

  public void warn(String paramString, JSONObject paramJSONObject)
  {
    warn(paramString, paramJSONObject, null);
  }

  public void warn(String paramString, JSONObject paramJSONObject, Throwable paramThrowable)
  {
    doLog(LEVEL.WARN, paramString, new Date().getTime(), paramJSONObject, paramThrowable);
  }

  private static class DoLogRunnable
    implements Runnable
  {
    private JSONObject additionalMetadata;
    private Logger.LEVEL calledLevel;
    private Logger logger;
    private String message;
    private Throwable t;
    private long timestamp;

    public DoLogRunnable(Logger.LEVEL paramLEVEL, String paramString, long paramLong, JSONObject paramJSONObject, Throwable paramThrowable, Logger paramLogger)
    {
      this.calledLevel = paramLEVEL;
      this.message = paramString;
      this.timestamp = paramLong;
      this.additionalMetadata = paramJSONObject;
      this.t = paramThrowable;
      this.logger = paramLogger;
    }

    public void run()
    {
      HashMap localHashMap = Logger.access$1400();
      int i;
      if ((localHashMap != null) && (localHashMap.size() > 0))
        if (localHashMap.containsKey(this.logger.tag))
          if (this.calledLevel.getLevelValue() <= ((Logger.LEVEL)localHashMap.get(this.logger.tag)).getLevelValue())
            i = 1;
      while (true)
      {
        String str;
        if ((i != 0) || (this.calledLevel == Logger.LEVEL.ANALYTICS))
        {
          Logger.captureToFile(Logger.access$1800(this.calledLevel, this.logger.tag, this.message, this.timestamp, this.additionalMetadata, this.t), this.calledLevel);
          if (this.message != null)
            break label249;
          str = "(null)";
          label119: this.message = str;
          this.message = Logger.prependMetadata(this.message, this.additionalMetadata);
          switch (Logger.14.$SwitchMap$com$worklight$common$Logger$LEVEL[this.calledLevel.ordinal()])
          {
          default:
          case 1:
          case 2:
          case 3:
          case 4:
          case 5:
          case 6:
          case 7:
          }
        }
        synchronized (this.logger)
        {
          while (true)
          {
            this.logger.notifyAll();
            return;
            i = 0;
            break;
            i = 0;
            break;
            if ((this.calledLevel != null) && (this.calledLevel.isLoggable()));
            for (i = 1; ; i = 0)
              break;
            label249: str = this.message;
            break label119;
            if (this.t == null)
            {
              Log.e(this.logger.tag, this.message);
            }
            else
            {
              Log.e(this.logger.tag, this.message, this.t);
              continue;
              if (this.t == null)
              {
                Log.w(this.logger.tag, this.message);
              }
              else
              {
                Log.w(this.logger.tag, this.message, this.t);
                continue;
                if (this.t == null)
                {
                  Log.i(this.logger.tag, this.message);
                }
                else
                {
                  Log.i(this.logger.tag, this.message, this.t);
                  continue;
                  if (this.t == null)
                  {
                    Log.v(this.logger.tag, this.message);
                  }
                  else
                  {
                    Log.v(this.logger.tag, this.message, this.t);
                    continue;
                    if (this.t != null)
                      break label470;
                    Log.d(this.logger.tag, this.message);
                  }
                }
              }
            }
          }
          label470: Log.d(this.logger.tag, this.message, this.t);
        }
      }
    }
  }

  private static class FileLogger extends Logger.FileLoggerInterface
  {
    private static String filePath;
    private static ClientLogFormatter formatter;
    private static FileLogger noopSingleton = new FileLogger(null, null);
    private static FileLogger singleton;

    private FileLogger(String paramString1, String paramString2)
    {
      super(paramString2);
    }

    private static void copyStream(InputStream paramInputStream, OutputStream paramOutputStream)
      throws IOException
    {
      byte[] arrayOfByte = new byte[1024];
      while (true)
      {
        int i = paramInputStream.read(arrayOfByte, 0, 1024);
        if (i == -1)
        {
          paramInputStream.close();
          return;
        }
        paramOutputStream.write(arrayOfByte, 0, i);
      }
    }

    private byte[] getByteArrayFromFile(String paramString)
      throws UnsupportedEncodingException
    {
      File localFile = new File(Logger.context.getFilesDir(), paramString);
      if (localFile.exists())
        try
        {
          FileInputStream localFileInputStream = new FileInputStream(localFile);
          ByteArrayOutputStream localByteArrayOutputStream = new ByteArrayOutputStream((int)localFile.length());
          copyStream(localFileInputStream, localByteArrayOutputStream);
          byte[] arrayOfByte = localByteArrayOutputStream.toByteArray();
          return arrayOfByte;
        }
        catch (IOException localIOException)
        {
          Log.e(Logger.LOG_TAG, "problem reading file " + localFile.toString(), localIOException);
        }
      return "".getBytes("UTF-8");
    }

    public static FileLogger getInstance()
    {
      if ((singleton == null) && (Logger.context != null))
      {
        singleton = new FileLogger(null, null);
        filePath = Logger.context.getFilesDir() + System.getProperty("file.separator") + "wl.log";
        formatter = new ClientLogFormatter(null);
        singleton.setLevel(Level.ALL);
        return singleton;
      }
      return noopSingleton;
    }

    public byte[] getFileContentsAsByteArray(File paramFile)
      throws UnsupportedEncodingException
    {
      return getByteArrayFromFile(paramFile.getName());
    }

    public void log(JSONObject paramJSONObject, String paramString)
      throws SecurityException, IOException
    {
      try
      {
        if (singleton != null)
        {
          filePath = Logger.context.getFilesDir() + System.getProperty("file.separator") + paramString;
          FileHandler localFileHandler = new FileHandler(filePath, Logger.getMaxFileSize(), 2, true);
          localFileHandler.setFormatter(formatter);
          singleton.addHandler(localFileHandler);
          singleton.log(Level.FINEST, paramJSONObject.toString() + ",");
          singleton.getHandlers()[0].close();
          singleton.removeHandler(localFileHandler);
        }
        return;
      }
      finally
      {
        localObject = finally;
        throw localObject;
      }
    }

    private static class ClientLogFormatter extends Formatter
    {
      public String format(LogRecord paramLogRecord)
      {
        return paramLogRecord.getMessage();
      }
    }
  }

  protected static abstract class FileLoggerInterface extends java.util.logging.Logger
  {
    protected FileLoggerInterface(String paramString1, String paramString2)
    {
      super(paramString2);
    }

    public abstract byte[] getFileContentsAsByteArray(File paramFile)
      throws UnsupportedEncodingException;

    public abstract void log(JSONObject paramJSONObject, String paramString)
      throws SecurityException, IOException;
  }

  public static abstract enum LEVEL
  {
    static
    {
      // Byte code:
      //   0: new 20	com/worklight/common/Logger$LEVEL$1
      //   3: dup
      //   4: ldc 21
      //   6: iconst_0
      //   7: invokespecial 25	com/worklight/common/Logger$LEVEL$1:<init>	(Ljava/lang/String;I)V
      //   10: putstatic 27	com/worklight/common/Logger$LEVEL:ANALYTICS	Lcom/worklight/common/Logger$LEVEL;
      //   13: new 29	com/worklight/common/Logger$LEVEL$2
      //   16: dup
      //   17: ldc 30
      //   19: iconst_1
      //   20: invokespecial 31	com/worklight/common/Logger$LEVEL$2:<init>	(Ljava/lang/String;I)V
      //   23: putstatic 33	com/worklight/common/Logger$LEVEL:FATAL	Lcom/worklight/common/Logger$LEVEL;
      //   26: new 35	com/worklight/common/Logger$LEVEL$3
      //   29: dup
      //   30: ldc 36
      //   32: iconst_2
      //   33: invokespecial 37	com/worklight/common/Logger$LEVEL$3:<init>	(Ljava/lang/String;I)V
      //   36: putstatic 39	com/worklight/common/Logger$LEVEL:ERROR	Lcom/worklight/common/Logger$LEVEL;
      //   39: new 41	com/worklight/common/Logger$LEVEL$4
      //   42: dup
      //   43: ldc 42
      //   45: iconst_3
      //   46: invokespecial 43	com/worklight/common/Logger$LEVEL$4:<init>	(Ljava/lang/String;I)V
      //   49: putstatic 45	com/worklight/common/Logger$LEVEL:WARN	Lcom/worklight/common/Logger$LEVEL;
      //   52: new 47	com/worklight/common/Logger$LEVEL$5
      //   55: dup
      //   56: ldc 48
      //   58: iconst_4
      //   59: invokespecial 49	com/worklight/common/Logger$LEVEL$5:<init>	(Ljava/lang/String;I)V
      //   62: putstatic 51	com/worklight/common/Logger$LEVEL:INFO	Lcom/worklight/common/Logger$LEVEL;
      //   65: new 53	com/worklight/common/Logger$LEVEL$6
      //   68: dup
      //   69: ldc 54
      //   71: iconst_5
      //   72: invokespecial 55	com/worklight/common/Logger$LEVEL$6:<init>	(Ljava/lang/String;I)V
      //   75: putstatic 57	com/worklight/common/Logger$LEVEL:LOG	Lcom/worklight/common/Logger$LEVEL;
      //   78: new 59	com/worklight/common/Logger$LEVEL$7
      //   81: dup
      //   82: ldc 60
      //   84: bipush 6
      //   86: invokespecial 61	com/worklight/common/Logger$LEVEL$7:<init>	(Ljava/lang/String;I)V
      //   89: putstatic 63	com/worklight/common/Logger$LEVEL:DEBUG	Lcom/worklight/common/Logger$LEVEL;
      //   92: new 65	com/worklight/common/Logger$LEVEL$8
      //   95: dup
      //   96: ldc 66
      //   98: bipush 7
      //   100: invokespecial 67	com/worklight/common/Logger$LEVEL$8:<init>	(Ljava/lang/String;I)V
      //   103: putstatic 69	com/worklight/common/Logger$LEVEL:TRACE	Lcom/worklight/common/Logger$LEVEL;
      //   106: bipush 8
      //   108: anewarray 2	com/worklight/common/Logger$LEVEL
      //   111: astore_0
      //   112: aload_0
      //   113: iconst_0
      //   114: getstatic 27	com/worklight/common/Logger$LEVEL:ANALYTICS	Lcom/worklight/common/Logger$LEVEL;
      //   117: aastore
      //   118: aload_0
      //   119: iconst_1
      //   120: getstatic 33	com/worklight/common/Logger$LEVEL:FATAL	Lcom/worklight/common/Logger$LEVEL;
      //   123: aastore
      //   124: aload_0
      //   125: iconst_2
      //   126: getstatic 39	com/worklight/common/Logger$LEVEL:ERROR	Lcom/worklight/common/Logger$LEVEL;
      //   129: aastore
      //   130: aload_0
      //   131: iconst_3
      //   132: getstatic 45	com/worklight/common/Logger$LEVEL:WARN	Lcom/worklight/common/Logger$LEVEL;
      //   135: aastore
      //   136: aload_0
      //   137: iconst_4
      //   138: getstatic 51	com/worklight/common/Logger$LEVEL:INFO	Lcom/worklight/common/Logger$LEVEL;
      //   141: aastore
      //   142: aload_0
      //   143: iconst_5
      //   144: getstatic 57	com/worklight/common/Logger$LEVEL:LOG	Lcom/worklight/common/Logger$LEVEL;
      //   147: aastore
      //   148: aload_0
      //   149: bipush 6
      //   151: getstatic 63	com/worklight/common/Logger$LEVEL:DEBUG	Lcom/worklight/common/Logger$LEVEL;
      //   154: aastore
      //   155: aload_0
      //   156: bipush 7
      //   158: getstatic 69	com/worklight/common/Logger$LEVEL:TRACE	Lcom/worklight/common/Logger$LEVEL;
      //   161: aastore
      //   162: aload_0
      //   163: putstatic 71	com/worklight/common/Logger$LEVEL:$VALUES	[Lcom/worklight/common/Logger$LEVEL;
      //   166: return
    }

    public static LEVEL fromString(String paramString)
    {
      try
      {
        LEVEL localLEVEL = valueOf(paramString.toUpperCase());
        return localLEVEL;
      }
      catch (Exception localException)
      {
      }
      return null;
    }

    protected abstract int getLevelValue();

    protected boolean isLoggable()
    {
      LEVEL localLEVEL = Logger.access$100();
      return (localLEVEL != null) && (localLEVEL.getLevelValue() >= getLevelValue());
    }
  }

  static class SendLogsRequestListener
    implements WLRequestListener
  {
    private static final Logger logger = Logger.getInstance(SendLogsRequestListener.class.getName());
    private final File file;

    public SendLogsRequestListener(File paramFile)
    {
      this.file = paramFile;
    }

    public void onFailure(WLFailResponse paramWLFailResponse)
    {
      synchronized (Logger.WAIT_LOCK)
      {
        Logger.WAIT_LOCK.notifyAll();
        return;
      }
    }

    // ERROR //
    public void onSuccess(com.worklight.wlclient.api.WLResponse paramWLResponse)
    {
      // Byte code:
      //   0: aload_1
      //   1: invokevirtual 49	com/worklight/wlclient/api/WLResponse:getStatus	()I
      //   4: sipush 201
      //   7: if_icmpne +108 -> 115
      //   10: getstatic 26	com/worklight/common/Logger$SendLogsRequestListener:logger	Lcom/worklight/common/Logger;
      //   13: new 51	java/lang/StringBuilder
      //   16: dup
      //   17: invokespecial 52	java/lang/StringBuilder:<init>	()V
      //   20: ldc 54
      //   22: invokevirtual 58	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
      //   25: aload_0
      //   26: getfield 32	com/worklight/common/Logger$SendLogsRequestListener:file	Ljava/io/File;
      //   29: invokevirtual 61	java/lang/StringBuilder:append	(Ljava/lang/Object;)Ljava/lang/StringBuilder;
      //   32: ldc 63
      //   34: invokevirtual 58	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
      //   37: ldc 65
      //   39: invokevirtual 58	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
      //   42: ldc 67
      //   44: invokevirtual 58	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
      //   47: aload_1
      //   48: invokevirtual 49	com/worklight/wlclient/api/WLResponse:getStatus	()I
      //   51: invokevirtual 70	java/lang/StringBuilder:append	(I)Ljava/lang/StringBuilder;
      //   54: invokevirtual 73	java/lang/StringBuilder:toString	()Ljava/lang/String;
      //   57: invokevirtual 77	com/worklight/common/Logger:trace	(Ljava/lang/String;)V
      //   60: aload_0
      //   61: getfield 32	com/worklight/common/Logger$SendLogsRequestListener:file	Ljava/io/File;
      //   64: invokevirtual 83	java/io/File:delete	()Z
      //   67: pop
      //   68: invokestatic 87	com/worklight/common/Logger:access$200	()Landroid/content/Context;
      //   71: getstatic 91	com/worklight/common/Logger:SHARED_PREF_KEY	Ljava/lang/String;
      //   74: iconst_0
      //   75: invokevirtual 97	android/content/Context:getSharedPreferences	(Ljava/lang/String;I)Landroid/content/SharedPreferences;
      //   78: invokeinterface 103 1 0
      //   83: ldc 105
      //   85: iconst_0
      //   86: invokeinterface 111 3 0
      //   91: invokeinterface 114 1 0
      //   96: pop
      //   97: getstatic 38	com/worklight/common/Logger:WAIT_LOCK	Ljava/lang/Object;
      //   100: astore 7
      //   102: aload 7
      //   104: monitorenter
      //   105: getstatic 38	com/worklight/common/Logger:WAIT_LOCK	Ljava/lang/Object;
      //   108: invokevirtual 41	java/lang/Object:notifyAll	()V
      //   111: aload 7
      //   113: monitorexit
      //   114: return
      //   115: getstatic 26	com/worklight/common/Logger$SendLogsRequestListener:logger	Lcom/worklight/common/Logger;
      //   118: new 51	java/lang/StringBuilder
      //   121: dup
      //   122: invokespecial 52	java/lang/StringBuilder:<init>	()V
      //   125: ldc 116
      //   127: invokevirtual 58	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
      //   130: aload_0
      //   131: getfield 32	com/worklight/common/Logger$SendLogsRequestListener:file	Ljava/io/File;
      //   134: invokevirtual 61	java/lang/StringBuilder:append	(Ljava/lang/Object;)Ljava/lang/StringBuilder;
      //   137: ldc 118
      //   139: invokevirtual 58	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
      //   142: aload_1
      //   143: invokevirtual 49	com/worklight/wlclient/api/WLResponse:getStatus	()I
      //   146: invokevirtual 70	java/lang/StringBuilder:append	(I)Ljava/lang/StringBuilder;
      //   149: invokevirtual 73	java/lang/StringBuilder:toString	()Ljava/lang/String;
      //   152: invokevirtual 121	com/worklight/common/Logger:error	(Ljava/lang/String;)V
      //   155: goto -95 -> 60
      //   158: astore_2
      //   159: getstatic 38	com/worklight/common/Logger:WAIT_LOCK	Ljava/lang/Object;
      //   162: astore_3
      //   163: aload_3
      //   164: monitorenter
      //   165: getstatic 38	com/worklight/common/Logger:WAIT_LOCK	Ljava/lang/Object;
      //   168: invokevirtual 41	java/lang/Object:notifyAll	()V
      //   171: aload_3
      //   172: monitorexit
      //   173: aload_2
      //   174: athrow
      //   175: astore 8
      //   177: aload 7
      //   179: monitorexit
      //   180: aload 8
      //   182: athrow
      //   183: astore 4
      //   185: aload_3
      //   186: monitorexit
      //   187: aload 4
      //   189: athrow
      //
      // Exception table:
      //   from	to	target	type
      //   0	60	158	finally
      //   60	97	158	finally
      //   115	155	158	finally
      //   105	114	175	finally
      //   177	180	175	finally
      //   165	173	183	finally
      //   185	187	183	finally
    }
  }

  private static class UncaughtExceptionHandler
    implements Thread.UncaughtExceptionHandler
  {
    private final Thread.UncaughtExceptionHandler defaultUEH = Thread.getDefaultUncaughtExceptionHandler();

    public final void uncaughtException(Thread paramThread, Throwable paramThrowable)
    {
      if (Logger.context != null)
        Logger.context.getSharedPreferences(Logger.SHARED_PREF_KEY, 0).edit().putBoolean("crashDetected", true).commit();
      Logger.getInstance(getClass().getName()).fatal("Uncaught Exception", new JSONObject(), paramThrowable);
      this.defaultUEH.uncaughtException(paramThread, paramThrowable);
    }
  }
}

/* Location:           C:\Documents and Settings\Cesar Cabello Cea\Mis documentos\Downloads\apk-downloader\com.ikea.kompis-6_dex2jar.jar
 * Qualified Name:     com.worklight.common.Logger
 * JD-Core Version:    0.6.2
 */