// Path: hoko/src/main/java/com/hokolinks/activity/HokoActivity.java
// @SuppressLint("Registered")
// public class HokoActivity extends Activity implements SmartlinkResolveListener {
// 
//     @Override
//     protected void onCreate(Bundle savedInstanceState) {
//         super.onCreate(savedInstanceState);
//         String urlString = getIntent().getData().toString();
//         if (urlString.startsWith("http")) {
//             Hoko.deeplinking().openSmartlink(urlString, this);
//         } else {
//             Hoko.deeplinking().openURL(urlString);
//         }
//     }
// 
//     @Override
//     public void onLinkResolved(String deeplink, JSONObject metadata) {
//         finish();
//     }
// 
//     @Override
//     public void onError(Exception e) {
//         finish();
//         Hoko.deeplinking().openURL(null);
//     }
// 
// }
// 
// Path: hoko/src/main/java/com/hokolinks/activity/HokoAppLinksActivity.java
// @SuppressLint("Registered")
// public class HokoAppLinksActivity extends Activity implements SmartlinkResolveListener {
// 
//     @Override
//     protected void onCreate(Bundle savedInstanceState) {
//         super.onCreate(savedInstanceState);
//         String urlString = getIntent().getData().toString();
//         if (urlString.startsWith("http")) {
//             Hoko.deeplinking().openSmartlink(urlString, this);
//         } else {
//             Hoko.deeplinking().openURL(urlString);
//         }
//     }
// 
//     @Override
//     public void onLinkResolved(String deeplink, JSONObject metadata) {
//         finish();
//     }
// 
//     @Override
//     public void onError(Exception e) {
//         finish();
//         Hoko.deeplinking().openURL(null);
//     }
// 
// }
// 
// Path: hoko/src/main/java/com/hokolinks/utils/log/HokoLog.java
// public class HokoLog {
//     /**
//      * The Log TAG
//      */
//     public static final String TAG = "HOKO";
// 
//     /**
//      * Verbose is false by default
//      */
//     private static boolean sVerbose = false;
// 
//     /**
//      * Prints a debug message.
//      *
//      * @param message The message.
//      */
//     public static void d(String message) {
//         if (sVerbose) {
//             android.util.Log.d(TAG, message);
//         }
//     }
// 
//     /**
//      * Prints a debug exception.
//      *
//      * @param exception The exception.
//      */
//     public static void d(Exception exception) {
//         if (sVerbose) {
//             android.util.Log.d(TAG, exception.getMessage(), exception);
//         }
//     }
// 
//     /**
//      * Prints a message as an error.
//      *
//      * @param message The message.
//      */
//     public static void e(String message) {
//         android.util.Log.e(TAG, message);
//     }
// 
//     /**
//      * Prints an exception as an error.
//      *
//      * @param exception The exception.
//      */
//     public static void e(Exception exception) {
//         android.util.Log.e(TAG, exception.getMessage(), exception);
//     }
// 
//     /**
//      * Prints an error.
//      *
//      * @param error The exception.
//      */
//     public static void e(Error error) {
//         android.util.Log.e(TAG, error.getMessage(), error);
//     }
// 
//     public static boolean isVerbose() {
//         return sVerbose;
//     }
// 
//     public static void setVerbose(boolean verbose) {
//         HokoLog.sVerbose = verbose;
//     }
// 
// }


import android.app.Activity;
import android.app.Application;
import android.content.Context;
import android.os.Bundle;
import com.hokolinks.activity.HokoActivity;
import com.hokolinks.activity.HokoAppLinksActivity;
import com.hokolinks.utils.log.HokoLog;
import java.util.ArrayList;
import java.util.List;
package com.hokolinks.utils.lifecycle;




/**
 * A small wrapper around activity life cycles to provide actual Application lifecycle status with
 * callbacks on background/foreground changes.
 */
public class ApplicationLifecycle {

    /**
     * Static instance to handle static callback registration
     */
    private static ApplicationLifecycle sInstance;
    private HokoApplicationStatus mApplicationStatus;
    private List<ApplicationLifecycleCallback> mCallbacks;

    /**
     * Private initializer, starting on FOREGROUND since it is what actually makes sense.
     *
     * @param context A context.
     */
    private ApplicationLifecycle(Context context) {
        mCallbacks = new ArrayList<>();
        mApplicationStatus = HokoApplicationStatus.FOREGROUND;
        try {
            registerActivityLifecycle(context);
        } catch (NullPointerException e) {
// Path: hoko/src/main/java/com/hokolinks/activity/HokoActivity.java
// @SuppressLint("Registered")
// public class HokoActivity extends Activity implements SmartlinkResolveListener {
// 
//     @Override
//     protected void onCreate(Bundle savedInstanceState) {
//         super.onCreate(savedInstanceState);
//         String urlString = getIntent().getData().toString();
//         if (urlString.startsWith("http")) {
//             Hoko.deeplinking().openSmartlink(urlString, this);
//         } else {
//             Hoko.deeplinking().openURL(urlString);
//         }
//     }
// 
//     @Override
//     public void onLinkResolved(String deeplink, JSONObject metadata) {
//         finish();
//     }
// 
//     @Override
//     public void onError(Exception e) {
//         finish();
//         Hoko.deeplinking().openURL(null);
//     }
// 
// }
// 
// Path: hoko/src/main/java/com/hokolinks/activity/HokoAppLinksActivity.java
// @SuppressLint("Registered")
// public class HokoAppLinksActivity extends Activity implements SmartlinkResolveListener {
// 
//     @Override
//     protected void onCreate(Bundle savedInstanceState) {
//         super.onCreate(savedInstanceState);
//         String urlString = getIntent().getData().toString();
//         if (urlString.startsWith("http")) {
//             Hoko.deeplinking().openSmartlink(urlString, this);
//         } else {
//             Hoko.deeplinking().openURL(urlString);
//         }
//     }
// 
//     @Override
//     public void onLinkResolved(String deeplink, JSONObject metadata) {
//         finish();
//     }
// 
//     @Override
//     public void onError(Exception e) {
//         finish();
//         Hoko.deeplinking().openURL(null);
//     }
// 
// }
// 
// Path: hoko/src/main/java/com/hokolinks/utils/log/HokoLog.java
// public class HokoLog {
//     /**
//      * The Log TAG
//      */
//     public static final String TAG = "HOKO";
// 
//     /**
//      * Verbose is false by default
//      */
//     private static boolean sVerbose = false;
// 
//     /**
//      * Prints a debug message.
//      *
//      * @param message The message.
//      */
//     public static void d(String message) {
//         if (sVerbose) {
//             android.util.Log.d(TAG, message);
//         }
//     }
// 
//     /**
//      * Prints a debug exception.
//      *
//      * @param exception The exception.
//      */
//     public static void d(Exception exception) {
//         if (sVerbose) {
//             android.util.Log.d(TAG, exception.getMessage(), exception);
//         }
//     }
// 
//     /**
//      * Prints a message as an error.
//      *
//      * @param message The message.
//      */
//     public static void e(String message) {
//         android.util.Log.e(TAG, message);
//     }
// 
//     /**
//      * Prints an exception as an error.
//      *
//      * @param exception The exception.
//      */
//     public static void e(Exception exception) {
//         android.util.Log.e(TAG, exception.getMessage(), exception);
//     }
// 
//     /**
//      * Prints an error.
//      *
//      * @param error The exception.
//      */
//     public static void e(Error error) {
//         android.util.Log.e(TAG, error.getMessage(), error);
//     }
// 
//     public static boolean isVerbose() {
//         return sVerbose;
//     }
// 
//     public static void setVerbose(boolean verbose) {
//         HokoLog.sVerbose = verbose;
//     }
// 
// }


// Path: hoko/src/main/java/com/hokolinks/utils/lifecycle/ApplicationLifecycle.java
import android.app.Activity;
import android.app.Application;
import android.content.Context;
import android.os.Bundle;
import com.hokolinks.activity.HokoActivity;
import com.hokolinks.activity.HokoAppLinksActivity;
import com.hokolinks.utils.log.HokoLog;
import java.util.ArrayList;
import java.util.List;

package com.hokolinks.utils.lifecycle;




/**
 * A small wrapper around activity life cycles to provide actual Application lifecycle status with
 * callbacks on background/foreground changes.
 */
public class ApplicationLifecycle {

    /**
     * Static instance to handle static callback registration
     */
    private static ApplicationLifecycle sInstance;
    private HokoApplicationStatus mApplicationStatus;
    private List<ApplicationLifecycleCallback> mCallbacks;

    /**
     * Private initializer, starting on FOREGROUND since it is what actually makes sense.
     *
     * @param context A context.
     */
    private ApplicationLifecycle(Context context) {
        mCallbacks = new ArrayList<>();
        mApplicationStatus = HokoApplicationStatus.FOREGROUND;
        try {
            registerActivityLifecycle(context);
        } catch (NullPointerException e) {
            HokoLog.e(e);