// Path: debugoverlay-no-op/src/main/java/com/ms_square/debugoverlay/modules/CpuFreqModule.java
// public class CpuFreqModule extends OverlayModule<List<CpuFreq>> {
// 
//     public static final int DEFAULT_INTERVAL = 2000; // 2000ms
// 
//     public CpuFreqModule() {
//         super(null, null);
//     }
// 
//     public CpuFreqModule(int interval) {
//         super(null, null);
//     }
// 
//     public CpuFreqModule(int interval, int layoutResId) {
//         super(null, null);
//     }
// 
//     public CpuFreqModule(ViewModule<List<CpuFreq>> viewModule) {
//         super(null, null);
//     }
// 
//     public CpuFreqModule(int interval, ViewModule<List<CpuFreq>> viewModule) {
//         super(null, null);
//     }
// }
// 
// Path: debugoverlay-no-op/src/main/java/com/ms_square/debugoverlay/modules/CpuUsageModule.java
// public class CpuUsageModule extends OverlayModule<CpuUsage> {
// 
//     public static final int DEFAULT_INTERVAL = 1000; // 1000ms
// 
//     public CpuUsageModule() {
//         super(null, null);
//     }
// 
//     public CpuUsageModule(int interval) {
//         super(null, null);
//     }
// 
//     public CpuUsageModule(int interval, int layoutResId) {
//         super(null, null);
//     }
// 
//     public CpuUsageModule(ViewModule<CpuUsage> viewModule) {
//         super(null, null);
//     }
// 
//     public CpuUsageModule(int interval, ViewModule<CpuUsage> viewModule) {
//         super(null, null);
//     }
// }
// 
// Path: debugoverlay-no-op/src/main/java/com/ms_square/debugoverlay/modules/FpsModule.java
// public class FpsModule extends OverlayModule<Double> {
// 
//     public static final int DEFAULT_INTERVAL = 1000; // 1000ms
// 
//     public FpsModule() {
//         super(null, null);
//     }
// 
//     public FpsModule(int interval) {
//         super(null, null);
//     }
// 
//     public FpsModule(int interval, int layoutResId) {
//         super(null, null);
//     }
// 
//     public FpsModule(ViewModule<Double> viewModule) {
//         super(null, null);
//     }
// 
//     public FpsModule(int interval, ViewModule<Double> viewModule) {
//         super(null, null);
//     }
// }
// 
// Path: debugoverlay/src/main/java/com/ms_square/debugoverlay/modules/MemInfoModule.java
// public class MemInfoModule extends OverlayModule<MemInfo> {
// 
//     public static final int DEFAULT_INTERVAL = 1500; // 1500ms
// 
//     public MemInfoModule(@NonNull Context context) {
//         super(new MemInfoDataModule(context, DEFAULT_INTERVAL), new MemInfoViewModule());
//     }
// 
//     public MemInfoModule(@NonNull Context context, int interval) {
//         super(new MemInfoDataModule(context, interval), new MemInfoViewModule());
//     }
// 
//     public MemInfoModule(@NonNull Context context, int interval, @LayoutRes int layoutResId) {
//         super(new MemInfoDataModule(context, interval), new MemInfoViewModule(layoutResId));
//     }
// 
//     public MemInfoModule(@NonNull Context context, @NonNull ViewModule<MemInfo> viewModule) {
//         super(new MemInfoDataModule(context, DEFAULT_INTERVAL), viewModule);
//     }
// 
//     public MemInfoModule(@NonNull Context context, int interval, @NonNull ViewModule<MemInfo> viewModule) {
//         super(new MemInfoDataModule(context, interval), viewModule);
//     }
// }


import android.app.Activity;
import android.app.Application;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.ServiceConnection;
import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
import android.os.IBinder;
import android.os.Parcel;
import android.os.Parcelable;
import android.support.annotation.ColorInt;
import android.support.annotation.FloatRange;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.annotation.VisibleForTesting;
import android.support.v4.content.LocalBroadcastManager;
import android.util.Log;
import com.ms_square.debugoverlay.modules.CpuFreqModule;
import com.ms_square.debugoverlay.modules.CpuUsageModule;
import com.ms_square.debugoverlay.modules.FpsModule;
import com.ms_square.debugoverlay.modules.MemInfoModule;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.WeakHashMap;

        public Builder textSize(float size) {
            this.textSize = size;
            return this;
        }

        public Builder textAlpha(@FloatRange(from=0.0, to=1.0) float alpha) {
            this.textAlpha = alpha;
            return this;
        }

        public Builder allowSystemLayer(boolean allowSystemLayer) {
            this.allowSystemLayer = allowSystemLayer;
            return this;
        }

        public Builder notification(boolean show) {
            this.showNotification = show;
            return this;
        }

        public Builder notification(boolean show, @Nullable String activityName) {
            this.showNotification = show;
            this.activityName = activityName;
            return this;
        }

        public DebugOverlay build() {
            if (!allowSystemLayer) {
                if (showNotification) {
// Path: debugoverlay-no-op/src/main/java/com/ms_square/debugoverlay/modules/CpuFreqModule.java
// public class CpuFreqModule extends OverlayModule<List<CpuFreq>> {
// 
//     public static final int DEFAULT_INTERVAL = 2000; // 2000ms
// 
//     public CpuFreqModule() {
//         super(null, null);
//     }
// 
//     public CpuFreqModule(int interval) {
//         super(null, null);
//     }
// 
//     public CpuFreqModule(int interval, int layoutResId) {
//         super(null, null);
//     }
// 
//     public CpuFreqModule(ViewModule<List<CpuFreq>> viewModule) {
//         super(null, null);
//     }
// 
//     public CpuFreqModule(int interval, ViewModule<List<CpuFreq>> viewModule) {
//         super(null, null);
//     }
// }
// 
// Path: debugoverlay-no-op/src/main/java/com/ms_square/debugoverlay/modules/CpuUsageModule.java
// public class CpuUsageModule extends OverlayModule<CpuUsage> {
// 
//     public static final int DEFAULT_INTERVAL = 1000; // 1000ms
// 
//     public CpuUsageModule() {
//         super(null, null);
//     }
// 
//     public CpuUsageModule(int interval) {
//         super(null, null);
//     }
// 
//     public CpuUsageModule(int interval, int layoutResId) {
//         super(null, null);
//     }
// 
//     public CpuUsageModule(ViewModule<CpuUsage> viewModule) {
//         super(null, null);
//     }
// 
//     public CpuUsageModule(int interval, ViewModule<CpuUsage> viewModule) {
//         super(null, null);
//     }
// }
// 
// Path: debugoverlay-no-op/src/main/java/com/ms_square/debugoverlay/modules/FpsModule.java
// public class FpsModule extends OverlayModule<Double> {
// 
//     public static final int DEFAULT_INTERVAL = 1000; // 1000ms
// 
//     public FpsModule() {
//         super(null, null);
//     }
// 
//     public FpsModule(int interval) {
//         super(null, null);
//     }
// 
//     public FpsModule(int interval, int layoutResId) {
//         super(null, null);
//     }
// 
//     public FpsModule(ViewModule<Double> viewModule) {
//         super(null, null);
//     }
// 
//     public FpsModule(int interval, ViewModule<Double> viewModule) {
//         super(null, null);
//     }
// }
// 
// Path: debugoverlay/src/main/java/com/ms_square/debugoverlay/modules/MemInfoModule.java
// public class MemInfoModule extends OverlayModule<MemInfo> {
// 
//     public static final int DEFAULT_INTERVAL = 1500; // 1500ms
// 
//     public MemInfoModule(@NonNull Context context) {
//         super(new MemInfoDataModule(context, DEFAULT_INTERVAL), new MemInfoViewModule());
//     }
// 
//     public MemInfoModule(@NonNull Context context, int interval) {
//         super(new MemInfoDataModule(context, interval), new MemInfoViewModule());
//     }
// 
//     public MemInfoModule(@NonNull Context context, int interval, @LayoutRes int layoutResId) {
//         super(new MemInfoDataModule(context, interval), new MemInfoViewModule(layoutResId));
//     }
// 
//     public MemInfoModule(@NonNull Context context, @NonNull ViewModule<MemInfo> viewModule) {
//         super(new MemInfoDataModule(context, DEFAULT_INTERVAL), viewModule);
//     }
// 
//     public MemInfoModule(@NonNull Context context, int interval, @NonNull ViewModule<MemInfo> viewModule) {
//         super(new MemInfoDataModule(context, interval), viewModule);
//     }
// }


// Path: debugoverlay/src/main/java/com/ms_square/debugoverlay/DebugOverlay.java
import android.app.Activity;
import android.app.Application;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.ServiceConnection;
import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
import android.os.IBinder;
import android.os.Parcel;
import android.os.Parcelable;
import android.support.annotation.ColorInt;
import android.support.annotation.FloatRange;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.annotation.VisibleForTesting;
import android.support.v4.content.LocalBroadcastManager;
import android.util.Log;
import com.ms_square.debugoverlay.modules.CpuFreqModule;
import com.ms_square.debugoverlay.modules.CpuUsageModule;
import com.ms_square.debugoverlay.modules.FpsModule;
import com.ms_square.debugoverlay.modules.MemInfoModule;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.WeakHashMap;


        public Builder textSize(float size) {
            this.textSize = size;
            return this;
        }

        public Builder textAlpha(@FloatRange(from=0.0, to=1.0) float alpha) {
            this.textAlpha = alpha;
            return this;
        }

        public Builder allowSystemLayer(boolean allowSystemLayer) {
            this.allowSystemLayer = allowSystemLayer;
            return this;
        }

        public Builder notification(boolean show) {
            this.showNotification = show;
            return this;
        }

        public Builder notification(boolean show, @Nullable String activityName) {
            this.showNotification = show;
            this.activityName = activityName;
            return this;
        }

        public DebugOverlay build() {
            if (!allowSystemLayer) {
                if (showNotification) {
                    Log.w(TAG, "if systemLayer is not allowed, notification is not supported; thus don't show notification.");