// Path: src/com/beerbong/zipinst/core/plugins/update/Updater.java
// public interface Updater extends URLStringReaderListener, HttpStringReaderListener {
// 
//     public class RomInfo {
// 
//         public int id;
//         public String filename;
//         public String path;
//         public String folder;
//         public String md5;
//         public String type;
//         public String description;
//         public int is_flashable;
//         public long modified;
//         public int downloads;
//         public int status;
//         public String additional_info;
//         public String short_url;
//         public int developer_id;
//         public String developerid;
//         public String board;
//         public String rom;
//         public long version;
//         public int gapps_package;
//         public int incremental_file;
//     }
// 
//     public static final String PROPERTY_DEVICE = "ro.product.device";
// 
//     public static interface UpdaterListener {
// 
//         public void versionFound(RomInfo info);
//         public void versionError(String error);
//     }
// 
//     public String getRomName();
// 
//     public int getRomVersion();
// 
//     public void searchVersion();
// 
//     public boolean isScanning();
// }
// 
// Path: src/com/beerbong/zipinst/http/URLStringReader.java
// public class URLStringReader extends AsyncTask<String, Void, Void> {
// 
//     public static interface URLStringReaderListener {
// 
//         public void onReadEnd(String buffer);
//         public void onReadError(Exception ex);
//     };
// 
//     private URLStringReaderListener mListener;
//     private String mBuffer;
//     private Exception mException;
//     
//     public URLStringReader(URLStringReaderListener listener) {
//         mListener = listener;
//     }
// 
//     @Override
//     protected Void doInBackground(String... params) {
//         try {
//             mBuffer = readString(params[0]);
//             return null;
//         } catch (Exception ex) {
//             ex.printStackTrace();
//             mException = ex;
//         }
//         return null;
//     }
// 
//     @Override
//     protected void onPostExecute(Void result) {
//         if (mListener != null) {
//             if (mException != null) {
//                 mListener.onReadError(mException);
//             } else {
//                 mListener.onReadEnd(mBuffer);
//             }
//         }
//     }
// 
//     private String readString(String urlStr) throws Exception {
//         URL url = new URL(urlStr);
//         URLConnection yc = url.openConnection();
//         BufferedReader in = null;
//         StringBuffer sb = new StringBuffer();
//         try {
//             in = new BufferedReader(new InputStreamReader(yc.getInputStream()));
//             String inputLine;
//             while ((inputLine = in.readLine()) != null)
//                 sb.append(inputLine);
//         } finally {
//             if (in != null)
//                 in.close();
//         }
//         return sb.toString();
//     }
// }
// 
// Path: src/com/beerbong/zipinst/io/SystemProperties.java
// public class SystemProperties {
// 
//     private static final int ALARM_ID = 122303221;
// 
//     public static String getProperty(String prop) {
//         try {
//             Process p = Runtime.getRuntime().exec("getprop " + prop);
//             p.waitFor();
//             BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
//             String line = input.readLine();
//             return "".equals(line) ? null : line;
//         } catch (Exception e) {
//             e.printStackTrace();
//             return null;
//         }
//     }
//     
//     public static boolean isNetworkAvailable(Context context) {
//         ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
//         NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
//         return activeNetworkInfo != null && activeNetworkInfo.isConnected();
//     }
//     
//     public static void setAlarm(Context context, long time, boolean trigger) {
// 
//         Intent i = new Intent(context, NotificationAlarm.class);
//         i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// 
//         PendingIntent pi = PendingIntent
//                 .getBroadcast(context, ALARM_ID, i, PendingIntent.FLAG_UPDATE_CURRENT);
// 
//         AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
//         am.cancel(pi);
//         if (time > 0) {
//             am.setInexactRepeating(AlarmManager.RTC_WAKEUP, trigger ? 0 : time, time, pi);
//         }
//     }
// 
//     public static boolean alarmExists(Context context) {
//         return (PendingIntent.getBroadcast(context, ALARM_ID, new Intent(context,
//                 NotificationAlarm.class), PendingIntent.FLAG_NO_CREATE) != null);
//     }
// }


import java.util.ArrayList;
import java.util.List;
import org.json.JSONArray;
import org.json.JSONObject;
import org.json.JSONTokener;
import com.beerbong.zipinst.core.plugins.update.Updater;
import com.beerbong.zipinst.http.URLStringReader;
import com.beerbong.zipinst.io.SystemProperties;
    public String getRomName() {
        return SystemProperties.getProperty(PROPERTY_GOO_ROM);
    }

    @Override
    public int getRomVersion() {
        String version = SystemProperties.getProperty(PROPERTY_GOO_VERSION);
        if (version != null) {
            try {
                return Integer.parseInt(version);
            } catch (NumberFormatException ex) {
            }
        }
        return -1;
    }

    @Override
    public void searchVersion() {
        mScanning = 0;
        mFoundRoms = new ArrayList<RomInfo>();
        searchGoo("/devs/" + getDeveloperId());
    }

    @Override
    public boolean isScanning() {
        return mScanning > 0;
    }

    private void searchGoo(String path) {
        mScanning++;
// Path: src/com/beerbong/zipinst/core/plugins/update/Updater.java
// public interface Updater extends URLStringReaderListener, HttpStringReaderListener {
// 
//     public class RomInfo {
// 
//         public int id;
//         public String filename;
//         public String path;
//         public String folder;
//         public String md5;
//         public String type;
//         public String description;
//         public int is_flashable;
//         public long modified;
//         public int downloads;
//         public int status;
//         public String additional_info;
//         public String short_url;
//         public int developer_id;
//         public String developerid;
//         public String board;
//         public String rom;
//         public long version;
//         public int gapps_package;
//         public int incremental_file;
//     }
// 
//     public static final String PROPERTY_DEVICE = "ro.product.device";
// 
//     public static interface UpdaterListener {
// 
//         public void versionFound(RomInfo info);
//         public void versionError(String error);
//     }
// 
//     public String getRomName();
// 
//     public int getRomVersion();
// 
//     public void searchVersion();
// 
//     public boolean isScanning();
// }
// 
// Path: src/com/beerbong/zipinst/http/URLStringReader.java
// public class URLStringReader extends AsyncTask<String, Void, Void> {
// 
//     public static interface URLStringReaderListener {
// 
//         public void onReadEnd(String buffer);
//         public void onReadError(Exception ex);
//     };
// 
//     private URLStringReaderListener mListener;
//     private String mBuffer;
//     private Exception mException;
//     
//     public URLStringReader(URLStringReaderListener listener) {
//         mListener = listener;
//     }
// 
//     @Override
//     protected Void doInBackground(String... params) {
//         try {
//             mBuffer = readString(params[0]);
//             return null;
//         } catch (Exception ex) {
//             ex.printStackTrace();
//             mException = ex;
//         }
//         return null;
//     }
// 
//     @Override
//     protected void onPostExecute(Void result) {
//         if (mListener != null) {
//             if (mException != null) {
//                 mListener.onReadError(mException);
//             } else {
//                 mListener.onReadEnd(mBuffer);
//             }
//         }
//     }
// 
//     private String readString(String urlStr) throws Exception {
//         URL url = new URL(urlStr);
//         URLConnection yc = url.openConnection();
//         BufferedReader in = null;
//         StringBuffer sb = new StringBuffer();
//         try {
//             in = new BufferedReader(new InputStreamReader(yc.getInputStream()));
//             String inputLine;
//             while ((inputLine = in.readLine()) != null)
//                 sb.append(inputLine);
//         } finally {
//             if (in != null)
//                 in.close();
//         }
//         return sb.toString();
//     }
// }
// 
// Path: src/com/beerbong/zipinst/io/SystemProperties.java
// public class SystemProperties {
// 
//     private static final int ALARM_ID = 122303221;
// 
//     public static String getProperty(String prop) {
//         try {
//             Process p = Runtime.getRuntime().exec("getprop " + prop);
//             p.waitFor();
//             BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
//             String line = input.readLine();
//             return "".equals(line) ? null : line;
//         } catch (Exception e) {
//             e.printStackTrace();
//             return null;
//         }
//     }
//     
//     public static boolean isNetworkAvailable(Context context) {
//         ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
//         NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
//         return activeNetworkInfo != null && activeNetworkInfo.isConnected();
//     }
//     
//     public static void setAlarm(Context context, long time, boolean trigger) {
// 
//         Intent i = new Intent(context, NotificationAlarm.class);
//         i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// 
//         PendingIntent pi = PendingIntent
//                 .getBroadcast(context, ALARM_ID, i, PendingIntent.FLAG_UPDATE_CURRENT);
// 
//         AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
//         am.cancel(pi);
//         if (time > 0) {
//             am.setInexactRepeating(AlarmManager.RTC_WAKEUP, trigger ? 0 : time, time, pi);
//         }
//     }
// 
//     public static boolean alarmExists(Context context) {
//         return (PendingIntent.getBroadcast(context, ALARM_ID, new Intent(context,
//                 NotificationAlarm.class), PendingIntent.FLAG_NO_CREATE) != null);
//     }
// }


// Path: src/com/beerbong/zipinst/core/plugins/update/impl/GooUpdater.java
import java.util.ArrayList;
import java.util.List;
import org.json.JSONArray;
import org.json.JSONObject;
import org.json.JSONTokener;
import com.beerbong.zipinst.core.plugins.update.Updater;
import com.beerbong.zipinst.http.URLStringReader;
import com.beerbong.zipinst.io.SystemProperties;

    public String getRomName() {
        return SystemProperties.getProperty(PROPERTY_GOO_ROM);
    }

    @Override
    public int getRomVersion() {
        String version = SystemProperties.getProperty(PROPERTY_GOO_VERSION);
        if (version != null) {
            try {
                return Integer.parseInt(version);
            } catch (NumberFormatException ex) {
            }
        }
        return -1;
    }

    @Override
    public void searchVersion() {
        mScanning = 0;
        mFoundRoms = new ArrayList<RomInfo>();
        searchGoo("/devs/" + getDeveloperId());
    }

    @Override
    public boolean isScanning() {
        return mScanning > 0;
    }

    private void searchGoo(String path) {
        mScanning++;
        new URLStringReader(this).execute("http://goo.im/json2&path=" + path + "&ro_board="