// Path: src/main/java/com/upnext/blekit/util/L.java
// public class L {
// 
//     /**
//      * Set to true if you want to see debug messages associated with this library
//      */
//     public static final boolean DEBUG_ENABLED = false;
// 
//     private static final String APP_NAME = "BLEKIT";
// 
//     public static void d( String msg ) {
//         debug(  msg );
//     }
// 
//     public static void d( Object obj ) {
//         if( obj != null )
//             debug( obj.toString() );
//     }
// 
//     public static void e( String msg ) {
//         Log.e(APP_NAME, msg);
//     }
// 
//     public static void e( String msg, Exception e ) {
//         Log.e( APP_NAME, msg, e );
//     }
// 
//     private static void debug( String msg ) {
//         if( DEBUG_ENABLED ) {
//             StackTraceElement[] els = Thread.currentThread().getStackTrace();
//             String className = els[4].getClassName();
//             className = className.substring( className.lastIndexOf( "." )+1 );
//             Log.d( APP_NAME, "[" + className + "." + els[4].getMethodName() + "] " + msg );
//         }
//     }
// 
// }


import com.upnext.blekit.util.L;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.Parcel;
import android.os.Parcelable;
    public void setMonitoredBeaconIDs(List<String> monitoredBeaconIDs) {
        this.monitoredBeaconIDs = new HashSet<String>();
        for( String id : monitoredBeaconIDs ) {
            this.monitoredBeaconIDs.add(id);
        }
    }

    /**
     * Sends an intent with beacon event to the application.
     *
     * @param context context
     * @param event beacon event
     * @param beaconId beacon that triggered the event
     */
    public void call(Context context, BeaconEvent event, String beaconId) {
        L.d(". " + event + " " + beaconId);
        final Intent intent = prepareIntent();
        intent.putExtra(BLEKit.Extra.EXTRA_BEACON_EVENT, event.name());
        intent.putExtra(BLEKit.Extra.EXTRA_BEACON_ID, beaconId);
        context.startService(intent);
    }

    /**
     * Sends an intent with event to the application.
     *
     * @param context context
     * @param dataName name of extra passed in intent
     * @param data data passed in intent extra
     */
    public void call(Context context, String dataName, Parcelable data) {
// Path: src/main/java/com/upnext/blekit/util/L.java
// public class L {
// 
//     /**
//      * Set to true if you want to see debug messages associated with this library
//      */
//     public static final boolean DEBUG_ENABLED = false;
// 
//     private static final String APP_NAME = "BLEKIT";
// 
//     public static void d( String msg ) {
//         debug(  msg );
//     }
// 
//     public static void d( Object obj ) {
//         if( obj != null )
//             debug( obj.toString() );
//     }
// 
//     public static void e( String msg ) {
//         Log.e(APP_NAME, msg);
//     }
// 
//     public static void e( String msg, Exception e ) {
//         Log.e( APP_NAME, msg, e );
//     }
// 
//     private static void debug( String msg ) {
//         if( DEBUG_ENABLED ) {
//             StackTraceElement[] els = Thread.currentThread().getStackTrace();
//             String className = els[4].getClassName();
//             className = className.substring( className.lastIndexOf( "." )+1 );
//             Log.d( APP_NAME, "[" + className + "." + els[4].getMethodName() + "] " + msg );
//         }
//     }
// 
// }


// Path: src/main/java/com/upnext/blekit/BLEKitClient.java
import com.upnext.blekit.util.L;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.Parcel;
import android.os.Parcelable;

    public void setMonitoredBeaconIDs(List<String> monitoredBeaconIDs) {
        this.monitoredBeaconIDs = new HashSet<String>();
        for( String id : monitoredBeaconIDs ) {
            this.monitoredBeaconIDs.add(id);
        }
    }

    /**
     * Sends an intent with beacon event to the application.
     *
     * @param context context
     * @param event beacon event
     * @param beaconId beacon that triggered the event
     */
    public void call(Context context, BeaconEvent event, String beaconId) {
        L.d(". " + event + " " + beaconId);
        final Intent intent = prepareIntent();
        intent.putExtra(BLEKit.Extra.EXTRA_BEACON_EVENT, event.name());
        intent.putExtra(BLEKit.Extra.EXTRA_BEACON_ID, beaconId);
        context.startService(intent);
    }

    /**
     * Sends an intent with event to the application.
     *
     * @param context context
     * @param dataName name of extra passed in intent
     * @param data data passed in intent extra
     */
    public void call(Context context, String dataName, Parcelable data) {
        final Intent intent = prepareIntent();