text:
.class final Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;
.super Ljava/lang/Object;
.source "HtcWakeLockMonitor.java"

# interfaces
.implements Ljava/lang/Comparable;

# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
    value = Lcom/android/server/power/HtcWakeLockMonitor;
.end annotation

.annotation system Ldalvik/annotation/InnerClass;
    accessFlags = 0x12
    name = "WakeLockRecord"
.end annotation

.annotation system Ldalvik/annotation/Signature;
    value = {
        "Ljava/lang/Object;",
        "Ljava/lang/Comparable",
        "<",
        "Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;",
        ">;"
    }
.end annotation

# instance fields
.field private abnormal_count:I

.field private binderList:Ljava/util/ArrayList;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/ArrayList",
            "<",
            "Landroid/os/IBinder;",
            ">;"
        }
    .end annotation
.end field

.field private final flags:I

.field private heldBeginTime:J

.field private heldDuration:[J

.field private final pid:I

.field private pkgName:Ljava/lang/String;

.field private pkgSize:I

.field private pkgVersion:Ljava/lang/String;

.field private final tag:Ljava/lang/String;

.field final synthetic this$0:Lcom/android/server/power/HtcWakeLockMonitor;

.field private total_time:J

.field private final uid:I

.field private update_time:J

# direct methods
.method constructor <init>(Lcom/android/server/power/HtcWakeLockMonitor;ILjava/lang/String;IILandroid/os/IBinder;)V
    .locals 6
    .param p2, "_flags"    # I
    .param p3, "_tag"    # Ljava/lang/String;
    .param p4, "_uid"    # I
    .param p5, "_pid"    # I
    .param p6, "_binder"    # Landroid/os/IBinder;

    .prologue
    const-wide/16 v4, 0x0

    const/4 v2, 0x0

    const/4 v1, 0x0

    .line 661
    iput-object p1, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->this$0:Lcom/android/server/power/HtcWakeLockMonitor;

    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    .line 649
    new-instance v0, Ljava/util/ArrayList;

    invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V

    iput-object v0, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->binderList:Ljava/util/ArrayList;

    .line 651
    iput-wide v4, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->total_time:J

    .line 653
    iput-wide v4, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->heldBeginTime:J

    .line 656
    iput v1, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->abnormal_count:I

    .line 657
    iput-object v2, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->pkgName:Ljava/lang/String;

    .line 658
    iput-object v2, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->pkgVersion:Ljava/lang/String;

    .line 659
    iput v1, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->pkgSize:I

    .line 662
    iput p2, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->flags:I

    .line 663
    iput-object p3, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->tag:Ljava/lang/String;

    .line 664
    # getter for: Lcom/android/server/power/HtcWakeLockMonitor;->MY_UID:I
    invoke-static {p1}, Lcom/android/server/power/HtcWakeLockMonitor;->access$2000(Lcom/android/server/power/HtcWakeLockMonitor;)I

    move-result v0

    if-ne p4, v0, :cond_0

    const/16 p4, 0x3e8

    .end local p4    # "_uid":I
    :cond_0
    iput p4, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->uid:I

    .line 665
    iput p5, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->pid:I

    .line 666
    invoke-static {}, Landroid/os/SystemClock;->elapsedRealtime()J

    move-result-wide v0

    iput-wide v0, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->update_time:J

    .line 667
    iget-object v0, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->binderList:Ljava/util/ArrayList;

    invoke-virtual {v0, p6}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z

    .line 668
    return-void
.end method

.method static synthetic access$1300(Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;)[J
    .locals 1
    .param p0, "x0"    # Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;

    .prologue
    .line 644
    iget-object v0, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->heldDuration:[J

    return-object v0
.end method

.method static synthetic access$1302(Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;[J)[J
    .locals 0
    .param p0, "x0"    # Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;
    .param p1, "x1"    # [J

    .prologue
    .line 644
    iput-object p1, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->heldDuration:[J

    return-object p1
.end method

.method static synthetic access$1500(Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;)I
    .locals 1
    .param p0, "x0"    # Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;

    .prologue
    .line 644
    iget v0, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->uid:I

    return v0
.end method

.method static synthetic access$1602(Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;I)I
    .locals 0
    .param p0, "x0"    # Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;
    .param p1, "x1"    # I

    .prologue
    .line 644
    iput p1, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->abnormal_count:I

    return p1
.end method

.method static synthetic access$1608(Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;)I
    .locals 2
    .param p0, "x0"    # Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;

    .prologue
    .line 644
    iget v0, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->abnormal_count:I

    add-int/lit8 v1, v0, 0x1

    iput v1, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->abnormal_count:I

    return v0
.end method

.method static synthetic access$1700(Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;)I
    .locals 1
    .param p0, "x0"    # Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;

    .prologue
    .line 644
    iget v0, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->pid:I

    return v0
.end method

.method static synthetic access$1800(Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;)Ljava/lang/String;
    .locals 1
    .param p0, "x0"    # Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;

    .prologue
    .line 644
    iget-object v0, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->pkgName:Ljava/lang/String;

    return-object v0
.end method

.method static synthetic access$1900(Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;)Ljava/lang/String;
    .locals 1
    .param p0, "x0"    # Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;

    .prologue
    .line 644
    iget-object v0, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->tag:Ljava/lang/String;

    return-object v0
.end method

.method static synthetic access$2800(Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;)V
    .locals 0
    .param p0, "x0"    # Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;

    .prologue
    .line 644
    invoke-direct {p0}, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->update()V

    return-void
.end method

.method static synthetic access$2900(Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;)V
    .locals 0
    .param p0, "x0"    # Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;

    .prologue
    .line 644
    invoke-direct {p0}, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->saveHeldDuration()V

    return-void
.end method

.method static synthetic access$3000(Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;Landroid/os/IBinder;)V
    .locals 0
    .param p0, "x0"    # Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;
    .param p1, "x1"    # Landroid/os/IBinder;

    .prologue
    .line 644
    invoke-direct {p0, p1}, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->start(Landroid/os/IBinder;)V

    return-void
.end method

.method static synthetic access$3200(Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;Landroid/os/IBinder;)V
    .locals 0
    .param p0, "x0"    # Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;
    .param p1, "x1"    # Landroid/os/IBinder;

    .prologue
    .line 644
    invoke-direct {p0, p1}, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->stop(Landroid/os/IBinder;)V

    return-void
.end method

.method static synthetic access$3600(Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;)Ljava/lang/String;
    .locals 1
    .param p0, "x0"    # Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;

    .prologue
    .line 644
    invoke-direct {p0}, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->info()Ljava/lang/String;

    move-result-object v0

    return-object v0
.end method

.method static synthetic access$3800(Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;)Z
    .locals 1
    .param p0, "x0"    # Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;

    .prologue
    .line 644
    invoke-direct {p0}, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->shouldMonitor()Z

    move-result v0

    return v0
.end method

.method static synthetic access$3900(Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;)Z
    .locals 1
    .param p0, "x0"    # Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;

    .prologue
    .line 644
    invoke-direct {p0}, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->isAbnormal()Z

    move-result v0

    return v0
.end method

.method static synthetic access$4000(Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;)V
    .locals 0
    .param p0, "x0"    # Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;

    .prologue
    .line 644
    invoke-direct {p0}, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->getPackageName()V

    return-void
.end method

.method static synthetic access$4500(Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;)Z
    .locals 1
    .param p0, "x0"    # Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;

    .prologue
    .line 644
    invoke-direct {p0}, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->isStart()Z

    move-result v0

    return v0
.end method

.method private getPackageName()V
    .locals 5

    .prologue
    const/4 v4, 0x0

    .line 784
    iget-object v2, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->pkgName:Ljava/lang/String;

    if-nez v2, :cond_0

    iget-object v2, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->this$0:Lcom/android/server/power/HtcWakeLockMonitor;

    # invokes: Lcom/android/server/power/HtcWakeLockMonitor;->getPackageManager()Landroid/content/pm/PackageManager;
    invoke-static {v2}, Lcom/android/server/power/HtcWakeLockMonitor;->access$1400(Lcom/android/server/power/HtcWakeLockMonitor;)Landroid/content/pm/PackageManager;

    move-result-object v2

    if-eqz v2, :cond_0

    .line 785
    iget-object v2, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->this$0:Lcom/android/server/power/HtcWakeLockMonitor;

    # invokes: Lcom/android/server/power/HtcWakeLockMonitor;->getPackageManager()Landroid/content/pm/PackageManager;
    invoke-static {v2}, Lcom/android/server/power/HtcWakeLockMonitor;->access$1400(Lcom/android/server/power/HtcWakeLockMonitor;)Landroid/content/pm/PackageManager;

    move-result-object v2

    iget v3, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->uid:I

    invoke-virtual {v2, v3}, Landroid/content/pm/PackageManager;->getPackagesForUid(I)[Ljava/lang/String;

    move-result-object v1

    .line 786
    .local v1, "packages":[Ljava/lang/String;
    if-eqz v1, :cond_0

    array-length v2, v1

    if-lez v2, :cond_0

    .line 787
    aget-object v2, v1, v4

    iput-object v2, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->pkgName:Ljava/lang/String;

    .line 788
    array-length v2, v1

    iput v2, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->pkgSize:I

    .line 791
    :try_start_0
    iget-object v2, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->this$0:Lcom/android/server/power/HtcWakeLockMonitor;

    # invokes: Lcom/android/server/power/HtcWakeLockMonitor;->getPackageManager()Landroid/content/pm/PackageManager;
    invoke-static {v2}, Lcom/android/server/power/HtcWakeLockMonitor;->access$1400(Lcom/android/server/power/HtcWakeLockMonitor;)Landroid/content/pm/PackageManager;

    move-result-object v2

    iget-object v3, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->pkgName:Ljava/lang/String;

    const/4 v4, 0x0

    invoke-virtual {v2, v3, v4}, Landroid/content/pm/PackageManager;->getPackageInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo;

    move-result-object v2

    iget-object v2, v2, Landroid/content/pm/PackageInfo;->versionName:Ljava/lang/String;

    iput-object v2, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->pkgVersion:Ljava/lang/String;
    :try_end_0
    .catch Landroid/content/pm/PackageManager$NameNotFoundException; {:try_start_0 .. :try_end_0} :catch_0

    .line 797
    .end local v1    # "packages":[Ljava/lang/String;
    :cond_0
    :goto_0
    return-void

    .line 792
    .restart local v1    # "packages":[Ljava/lang/String;
    :catch_0
    move-exception v0

    .line 793
    .local v0, "e":Landroid/content/pm/PackageManager$NameNotFoundException;
    const-string v2, "N/A"

    iput-object v2, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->pkgVersion:Ljava/lang/String;

    goto :goto_0
.end method

.method private info()Ljava/lang/String;
    .locals 5

    .prologue
    .line 800
    new-instance v0, Ljava/lang/StringBuffer;

    iget-object v1, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->tag:Ljava/lang/String;

    invoke-direct {v0, v1}, Ljava/lang/StringBuffer;-><init>(Ljava/lang/String;)V

    .line 801
    .local v0, "sb":Ljava/lang/StringBuffer;
    const-string v1, ", type: "

    invoke-virtual {v0, v1}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;

    .line 802
    iget-object v1, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->this$0:Lcom/android/server/power/HtcWakeLockMonitor;

    # getter for: Lcom/android/server/power/HtcWakeLockMonitor;->mCallbacks:Landroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks;
    invoke-static {v1}, Lcom/android/server/power/HtcWakeLockMonitor;->access$2700(Lcom/android/server/power/HtcWakeLockMonitor;)Landroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks;

    move-result-object v1

    iget v2, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->flags:I

    invoke-interface {v1, v2}, Landroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks;->lockType(I)Ljava/lang/String;

    move-result-object v1

    invoke-virtual {v1}, Ljava/lang/String;->trim()Ljava/lang/String;

    move-result-object v1

    invoke-virtual {v0, v1}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;

    .line 803
    iget-object v1, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->this$0:Lcom/android/server/power/HtcWakeLockMonitor;

    # getter for: Lcom/android/server/power/HtcWakeLockMonitor;->mCallbacks:Landroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks;
    invoke-static {v1}, Lcom/android/server/power/HtcWakeLockMonitor;->access$2700(Lcom/android/server/power/HtcWakeLockMonitor;)Landroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks;

    move-result-object v1

    iget v2, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->flags:I

    invoke-interface {v1, v2}, Landroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks;->lockType(I)Ljava/lang/String;

    move-result-object v1

    invoke-virtual {v1}, Ljava/lang/String;->trim()Ljava/lang/String;

    move-result-object v1

    const-string v2, "???"

    invoke-virtual {v1, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v1

    if-eqz v1, :cond_0

    .line 804
    const-string v1, "(0x"

    invoke-virtual {v0, v1}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;

    .line 805
    const-string v1, "%08x"

    const/4 v2, 0x1

    new-array v2, v2, [Ljava/lang/Object;

    const/4 v3, 0x0

    iget v4, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->flags:I

    invoke-static {v4}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v4

    aput-object v4, v2, v3

    invoke-static {v1, v2}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;

    move-result-object v1

    invoke-virtual {v0, v1}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;

    .line 806
    const-string v1, ")"

    invoke-virtual {v0, v1}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;

    .line 808
    :cond_0
    new-instance v1, Ljava/lang/StringBuilder;

    invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V

    const-string v2, ", acq_count: "

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v1

    iget-object v2, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->binderList:Ljava/util/ArrayList;

    invoke-virtual {v2}, Ljava/util/ArrayList;->size()I

    move-result v2

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    move-result-object v1

    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v1

    invoke-virtual {v0, v1}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;

    .line 809
    new-instance v1, Ljava/lang/StringBuilder;

    invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V

    const-string v2, ", totaltime: "

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v1

    iget-wide v2, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->total_time:J

    invoke-virtual {v1, v2, v3}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;

    move-result-object v1

    const-string v2, "ms"

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v1

    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v1

    invoke-virtual {v0, v1}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;

    .line 810
    new-instance v1, Ljava/lang/StringBuilder;

    invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V

    const-string v2, " (uid: "

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v1

    iget v2, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->uid:I

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    move-result-object v1

    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v1

    invoke-virtual {v0, v1}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;

    .line 811
    new-instance v1, Ljava/lang/StringBuilder;

    invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V

    const-string v2, " pid: "

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v1

    iget v2, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->pid:I

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    move-result-object v1

    const-string v2, ")"

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v1

    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v1

    invoke-virtual {v0, v1}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;

    .line 813
    invoke-direct {p0}, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->shouldMonitor()Z

    move-result v1

    if-eqz v1, :cond_1

    .line 814
    new-instance v1, Ljava/lang/StringBuilder;

    invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V

    const-string v2, ", abnormal_count: "

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v1

    iget v2, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->abnormal_count:I

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    move-result-object v1

    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v1

    invoke-virtual {v0, v1}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;

    .line 815
    iget-object v1, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->pkgName:Ljava/lang/String;

    if-eqz v1, :cond_1

    .line 816
    new-instance v1, Ljava/lang/StringBuilder;

    invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V

    const-string v2, " pkg("

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v1

    iget v2, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->pkgSize:I

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    move-result-object v1

    const-string v2, "): "

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v1

    iget-object v2, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->pkgName:Ljava/lang/String;

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v1

    const-string v2, " ver:"

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v1

    iget-object v2, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->pkgVersion:Ljava/lang/String;

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v1

    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v1

    invoke-virtual {v0, v1}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;

    .line 820
    :cond_1
    invoke-virtual {v0}, Ljava/lang/StringBuffer;->toString()Ljava/lang/String;

    move-result-object v1

    return-object v1
.end method

.method private isAbnormal()Z
    .locals 2

    .prologue
    .line 689
    iget v0, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->abnormal_count:I

    iget-object v1, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->this$0:Lcom/android/server/power/HtcWakeLockMonitor;

    # getter for: Lcom/android/server/power/HtcWakeLockMonitor;->ABNORMAL_COUNT:I
    invoke-static {v1}, Lcom/android/server/power/HtcWakeLockMonitor;->access$2100(Lcom/android/server/power/HtcWakeLockMonitor;)I

    move-result v1

    if-lt v0, v1, :cond_0

    const/4 v0, 0x1

    :goto_0
    return v0

    :cond_0
    const/4 v0, 0x0

    goto :goto_0
.end method

.method private isStart()Z
    .locals 1

    .prologue
    .line 685
    iget-object v0, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->binderList:Ljava/util/ArrayList;

    invoke-virtual {v0}, Ljava/util/ArrayList;->size()I

    move-result v0

    if-lez v0, :cond_0

    const/4 v0, 0x1

    :goto_0
    return v0

    :cond_0
    const/4 v0, 0x0

    goto :goto_0
.end method

.method private saveHeldDuration()V
    .locals 10

    .prologue
    const-wide/16 v8, 0x0

    .line 699
    iget-object v5, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->this$0:Lcom/android/server/power/HtcWakeLockMonitor;

    # getter for: Lcom/android/server/power/HtcWakeLockMonitor;->ENABLE_MONITOR:Z
    invoke-static {v5}, Lcom/android/server/power/HtcWakeLockMonitor;->access$1000(Lcom/android/server/power/HtcWakeLockMonitor;)Z

    move-result v5

    if-eqz v5, :cond_0

    invoke-direct {p0}, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->shouldMonitor()Z

    move-result v5

    if-eqz v5, :cond_0

    invoke-direct {p0}, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->isAbnormal()Z

    move-result v5

    if-eqz v5, :cond_1

    .line 743
    :cond_0
    :goto_0
    return-void

    .line 704
    :cond_1
    :try_start_0
    iget-object v5, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->heldDuration:[J

    if-nez v5, :cond_2

    .line 705
    iget-object v5, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->this$0:Lcom/android/server/power/HtcWakeLockMonitor;

    # getter for: Lcom/android/server/power/HtcWakeLockMonitor;->MAX_SCREEN_OFF_COUNT:I
    invoke-static {v5}, Lcom/android/server/power/HtcWakeLockMonitor;->access$2300(Lcom/android/server/power/HtcWakeLockMonitor;)I

    move-result v5

    new-array v5, v5, [J

    iput-object v5, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->heldDuration:[J

    .line 708
    :cond_2
    invoke-static {}, Landroid/os/SystemClock;->elapsedRealtime()J

    move-result-wide v2

    .line 711
    .local v2, "NOW":J
    invoke-direct {p0}, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->isStart()Z

    move-result v5

    if-eqz v5, :cond_3

    iget-object v5, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->this$0:Lcom/android/server/power/HtcWakeLockMonitor;

    # getter for: Lcom/android/server/power/HtcWakeLockMonitor;->mScreenState:Z
    invoke-static {v5}, Lcom/android/server/power/HtcWakeLockMonitor;->access$2400(Lcom/android/server/power/HtcWakeLockMonitor;)Z

    move-result v5

    if-nez v5, :cond_3

    iget-wide v6, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->heldBeginTime:J

    cmp-long v5, v6, v8

    if-nez v5, :cond_3

    iget-object v5, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->this$0:Lcom/android/server/power/HtcWakeLockMonitor;

    # getter for: Lcom/android/server/power/HtcWakeLockMonitor;->mLockRecordList:Lcom/android/server/power/HtcWakeLockMonitor$LockRecordList;
    invoke-static {v5}, Lcom/android/server/power/HtcWakeLockMonitor;->access$2500(Lcom/android/server/power/HtcWakeLockMonitor;)Lcom/android/server/power/HtcWakeLockMonitor$LockRecordList;

    move-result-object v5

    # invokes: Lcom/android/server/power/HtcWakeLockMonitor$LockRecordList;->shouldSkipAll()Z
    invoke-static {v5}, Lcom/android/server/power/HtcWakeLockMonitor$LockRecordList;->access$400(Lcom/android/server/power/HtcWakeLockMonitor$LockRecordList;)Z

    move-result v5

    if-nez v5, :cond_3

    .line 712
    iput-wide v2, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->heldBeginTime:J

    .line 713
    iget-object v5, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->this$0:Lcom/android/server/power/HtcWakeLockMonitor;

    # getter for: Lcom/android/server/power/HtcWakeLockMonitor;->DEBUG_ON:Z
    invoke-static {v5}, Lcom/android/server/power/HtcWakeLockMonitor;->access$1100(Lcom/android/server/power/HtcWakeLockMonitor;)Z

    move-result v5

    if-eqz v5, :cond_0

    .line 714
    const-string v5, "HtcWLM"

    new-instance v6, Ljava/lang/StringBuilder;

    invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V

    const-string v7, "saveHeldDuration:("

    invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v6

    iget-wide v8, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->heldBeginTime:J

    invoke-virtual {v6, v8, v9}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;

    move-result-object v6

    const-string v7, ","

    invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v6

    iget-object v7, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->tag:Ljava/lang/String;

    invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v6

    const-string v7, ")"

    invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v6

    invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v6

    invoke-static {v5, v6}, Landroid/util/Slog;->d(Ljava/lang/String;Ljava/lang/String;)I
    :try_end_0
    .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0

    goto :goto_0

    .line 734
    .end local v2    # "NOW":J
    :catch_0
    move-exception v4

    .line 735
    .local v4, "e":Ljava/lang/Exception;
    iget-object v5, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->this$0:Lcom/android/server/power/HtcWakeLockMonitor;

    # getter for: Lcom/android/server/power/HtcWakeLockMonitor;->DEBUG_ON:Z
    invoke-static {v5}, Lcom/android/server/power/HtcWakeLockMonitor;->access$1100(Lcom/android/server/power/HtcWakeLockMonitor;)Z

    move-result v5

    if-eqz v5, :cond_0

    .line 736
    const-string v5, "HtcWLM"

    new-instance v6, Ljava/lang/StringBuilder;

    invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V

    const-string v7, "saveHeldDuration: held="

    invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v6

    invoke-direct {p0}, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->isStart()Z

    move-result v7

    invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;

    move-result-object v6

    const-string v7, ", mScreenState="

    invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v6

    iget-object v7, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->this$0:Lcom/android/server/power/HtcWakeLockMonitor;

    # getter for: Lcom/android/server/power/HtcWakeLockMonitor;->mScreenState:Z
    invoke-static {v7}, Lcom/android/server/power/HtcWakeLockMonitor;->access$2400(Lcom/android/server/power/HtcWakeLockMonitor;)Z

    move-result v7

    invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;

    move-result-object v6

    const-string v7, ", tag="

    invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v6

    iget-object v7, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->tag:Ljava/lang/String;

    invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v6

    const-string v7, " "

    invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v6

    invoke-virtual {v6, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    move-result-object v6

    invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v6

    invoke-static {v5, v6}, Landroid/util/Slog;->d(Ljava/lang/String;Ljava/lang/String;)I

    goto/16 :goto_0

    .line 719
    .end local v4    # "e":Ljava/lang/Exception;
    .restart local v2    # "NOW":J
    :cond_3
    :try_start_1
    iget-wide v6, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->heldBeginTime:J

    cmp-long v5, v6, v8

    if-eqz v5, :cond_0

    invoke-direct {p0}, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->isStart()Z

    move-result v5

    if-eqz v5, :cond_4

    iget-object v5, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->this$0:Lcom/android/server/power/HtcWakeLockMonitor;

    # getter for: Lcom/android/server/power/HtcWakeLockMonitor;->mScreenState:Z
    invoke-static {v5}, Lcom/android/server/power/HtcWakeLockMonitor;->access$2400(Lcom/android/server/power/HtcWakeLockMonitor;)Z

    move-result v5

    if-nez v5, :cond_4

    iget-object v5, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->this$0:Lcom/android/server/power/HtcWakeLockMonitor;

    # getter for: Lcom/android/server/power/HtcWakeLockMonitor;->mLockRecordList:Lcom/android/server/power/HtcWakeLockMonitor$LockRecordList;
    invoke-static {v5}, Lcom/android/server/power/HtcWakeLockMonitor;->access$2500(Lcom/android/server/power/HtcWakeLockMonitor;)Lcom/android/server/power/HtcWakeLockMonitor$LockRecordList;

    move-result-object v5

    # invokes: Lcom/android/server/power/HtcWakeLockMonitor$LockRecordList;->shouldSkipAll()Z
    invoke-static {v5}, Lcom/android/server/power/HtcWakeLockMonitor$LockRecordList;->access$400(Lcom/android/server/power/HtcWakeLockMonitor$LockRecordList;)Z

    move-result v5

    if-eqz v5, :cond_0

    .line 720
    :cond_4
    iget-wide v6, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->heldBeginTime:J

    sub-long v0, v2, v6

    .line 721
    .local v0, "HELD_DURATION":J
    const-wide/16 v6, 0x0

    iput-wide v6, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->heldBeginTime:J

    .line 724
    iget-object v5, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->heldDuration:[J

    iget-object v6, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->this$0:Lcom/android/server/power/HtcWakeLockMonitor;

    # getter for: Lcom/android/server/power/HtcWakeLockMonitor;->mScreenTimeStampIndex:I
    invoke-static {v6}, Lcom/android/server/power/HtcWakeLockMonitor;->access$2600(Lcom/android/server/power/HtcWakeLockMonitor;)I

    move-result v6

    aget-wide v8, v5, v6

    add-long/2addr v8, v0

    aput-wide v8, v5, v6

    .line 726
    iget-object v5, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->this$0:Lcom/android/server/power/HtcWakeLockMonitor;

    # getter for: Lcom/android/server/power/HtcWakeLockMonitor;->DEBUG_ON:Z
    invoke-static {v5}, Lcom/android/server/power/HtcWakeLockMonitor;->access$1100(Lcom/android/server/power/HtcWakeLockMonitor;)Z

    move-result v5

    if-eqz v5, :cond_0

    .line 727
    const-string v5, "HtcWLM"

    new-instance v6, Ljava/lang/StringBuilder;

    invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V

    const-string v7, "saveHeldDuration: HELD_DURATION="

    invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v6

    invoke-virtual {v6, v0, v1}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;

    move-result-object v6

    const-string v7, "ms"

    invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v6

    const-string v7, ", heldDuration["

    invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v6

    iget-object v7, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->this$0:Lcom/android/server/power/HtcWakeLockMonitor;

    # getter for: Lcom/android/server/power/HtcWakeLockMonitor;->mScreenTimeStampIndex:I
    invoke-static {v7}, Lcom/android/server/power/HtcWakeLockMonitor;->access$2600(Lcom/android/server/power/HtcWakeLockMonitor;)I

    move-result v7

    invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    move-result-object v6

    const-string v7, "]="

    invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v6

    iget-object v7, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->heldDuration:[J

    iget-object v8, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->this$0:Lcom/android/server/power/HtcWakeLockMonitor;

    # getter for: Lcom/android/server/power/HtcWakeLockMonitor;->mScreenTimeStampIndex:I
    invoke-static {v8}, Lcom/android/server/power/HtcWakeLockMonitor;->access$2600(Lcom/android/server/power/HtcWakeLockMonitor;)I

    move-result v8

    aget-wide v8, v7, v8

    invoke-virtual {v6, v8, v9}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;

    move-result-object v6

    const-string v7, "ms"

    invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v6

    const-string v7, ", NOW="

    invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v6

    invoke-virtual {v6, v2, v3}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;

    move-result-object v6

    const-string v7, ", tag="

    invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v6

    iget-object v7, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->tag:Ljava/lang/String;

    invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v6

    invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v6

    invoke-static {v5, v6}, Landroid/util/Slog;->d(Ljava/lang/String;Ljava/lang/String;)I
    :try_end_1
    .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_0

    goto/16 :goto_0
.end method

.method private shouldMonitor()Z
    .locals 3

    .prologue
    const/4 v0, 0x1

    .line 693
    iget v1, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->uid:I

    iget-object v2, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->this$0:Lcom/android/server/power/HtcWakeLockMonitor;

    # getter for: Lcom/android/server/power/HtcWakeLockMonitor;->UID_CHECK_RANGE:I
    invoke-static {v2}, Lcom/android/server/power/HtcWakeLockMonitor;->access$2200(Lcom/android/server/power/HtcWakeLockMonitor;)I

    move-result v2

    if-lt v1, v2, :cond_0

    iget v1, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->flags:I

    and-int/lit8 v1, v1, 0x1

    if-ne v1, v0, :cond_0

    :goto_0
    return v0

    :cond_0
    const/4 v0, 0x0

    goto :goto_0
.end method

.method private start(Landroid/os/IBinder;)V
    .locals 4
    .param p1, "b"    # Landroid/os/IBinder;

    .prologue
    const/16 v3, 0x32

    .line 757
    iget-object v2, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->binderList:Ljava/util/ArrayList;

    invoke-virtual {v2}, Ljava/util/ArrayList;->size()I

    move-result v2

    if-le v2, v3, :cond_0

    .line 758
    new-instance v1, Ljava/lang/StringBuffer;

    const-string v2, "Lock:"

    invoke-direct {v1, v2}, Ljava/lang/StringBuffer;-><init>(Ljava/lang/String;)V

    .line 759
    .local v1, "sb":Ljava/lang/StringBuffer;
    invoke-direct {p0}, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->info()Ljava/lang/String;

    move-result-object v2

    invoke-virtual {v1, v2}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;

    .line 760
    const-string v2, " acquired, but unrelease locks over "

    invoke-virtual {v1, v2}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;

    .line 761
    invoke-virtual {v1, v3}, Ljava/lang/StringBuffer;->append(I)Ljava/lang/StringBuffer;

    .line 762
    const-string v2, ". Skip recording."

    invoke-virtual {v1, v2}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;

    .line 763
    const-string v2, "HtcWLM"

    invoke-virtual {v1}, Ljava/lang/StringBuffer;->toString()Ljava/lang/String;

    move-result-object v3

    invoke-static {v2, v3}, Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I

    .line 772
    .end local v1    # "sb":Ljava/lang/StringBuffer;
    :goto_0
    return-void

    .line 766
    :cond_0
    invoke-direct {p0}, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->update()V

    .line 767
    iget-object v2, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->binderList:Ljava/util/ArrayList;

    invoke-virtual {v2, p1}, Ljava/util/ArrayList;->indexOf(Ljava/lang/Object;)I

    move-result v0

    .line 768
    .local v0, "i":I
    if-gez v0, :cond_1

    .line 769
    iget-object v2, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->binderList:Ljava/util/ArrayList;

    invoke-virtual {v2, p1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z

    .line 771
    :cond_1
    invoke-direct {p0}, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->saveHeldDuration()V

    goto :goto_0
.end method

.method private stop(Landroid/os/IBinder;)V
    .locals 2
    .param p1, "b"    # Landroid/os/IBinder;

    .prologue
    .line 775
    invoke-direct {p0}, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->update()V

    .line 776
    iget-object v1, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->binderList:Ljava/util/ArrayList;

    invoke-virtual {v1, p1}, Ljava/util/ArrayList;->indexOf(Ljava/lang/Object;)I

    move-result v0

    .line 777
    .local v0, "i":I
    if-ltz v0, :cond_0

    .line 778
    iget-object v1, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->binderList:Ljava/util/ArrayList;

    invoke-virtual {v1, v0}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object;

    .line 780
    :cond_0
    invoke-direct {p0}, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->saveHeldDuration()V

    .line 781
    return-void
.end method

.method private update()V
    .locals 6

    .prologue
    .line 746
    invoke-static {}, Landroid/os/SystemClock;->elapsedRealtime()J

    move-result-wide v2

    .line 747
    .local v2, "now":J
    iget-wide v4, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->update_time:J

    sub-long v0, v2, v4

    .line 750
    .local v0, "elapsed":J
    invoke-direct {p0}, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->isStart()Z

    move-result v4

    if-eqz v4, :cond_0

    .line 751
    iget-wide v4, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->total_time:J

    add-long/2addr v4, v0

    iput-wide v4, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->total_time:J

    .line 753
    :cond_0
    iput-wide v2, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->update_time:J

    .line 754
    return-void
.end method

# virtual methods
.method public compareTo(Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;)I
    .locals 4
    .param p1, "another"    # Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;

    .prologue
    .line 673
    iget-wide v0, p1, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->total_time:J

    iget-wide v2, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->total_time:J

    cmp-long v0, v0, v2

    if-lez v0, :cond_0

    .line 674
    const/4 v0, 0x1

    .line 681
    :goto_0
    return v0

    .line 677
    :cond_0
    iget-wide v0, p1, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->total_time:J

    iget-wide v2, p0, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->total_time:J

    cmp-long v0, v0, v2

    if-nez v0, :cond_1

    .line 678
    const/4 v0, 0x0

    goto :goto_0

    .line 681
    :cond_1
    const/4 v0, -0x1

    goto :goto_0
.end method

.method public bridge synthetic compareTo(Ljava/lang/Object;)I
    .locals 1
    .param p1, "x0"    # Ljava/lang/Object;

    .prologue
    .line 644
    check-cast p1, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;

    .end local p1    # "x0":Ljava/lang/Object;
    invoke-virtual {p0, p1}, Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;->compareTo(Lcom/android/server/power/HtcWakeLockMonitor$WakeLockRecord;)I

    move-result v0

    return v0
.end method


text:
FactoryGirl.define do
  factory :investment do
    product_id 1
  end
end

redpajama_set_name: RedPajamaGithub


text:
<?php

namespace Predis\Command;

/**
 * @group commands
 * @group realm-key
 */
class KeyPreciseTimeToLiveTest extends PredisCommandTestCase
{
    /**
     * {@inheritdoc}
     */
    protected function getExpectedCommand()
    {
        return 'Predis\Command\KeyPreciseTimeToLive';
    }

    /**
     * {@inheritdoc}
     */
    protected function getExpectedId()
    {
        return 'PTTL';
    }

    /**
     * @group disconnected
     */
    public function testFilterArguments()
    {
        $arguments = array('key', 10);
        $expected = array('key', 10);

        $command = $this->getCommand();
        $command->setArguments($arguments);

        $this->assertSame($expected, $command->getArguments());
    }

    /**
     * @group disconnected
     */
    public function testParseResponse()
    {
        $command = $this->getCommand();

        $this->assertSame(100, $command->parseResponse(100));
    }

    /**
     * @group connected
     */
    public function testReturnsTTL()
    {
        $redis = $this->getClient();

        $redis->set('foo', 'bar');
        $redis->expire('foo', 10);

        $this->assertLessThanOrEqual(10000, $redis->pttl('foo'));
    }

    /**
     * @group connected
     */
    public function testReturnsLessThanZeroOnNonExpiringKeys()
    {
        $redis = $this->getClient();

        $redis->set('foo', 'bar');
        $this->assertSame(-1, $redis->pttl('foo'));
    }

    /**
     * @group connected
     */
    public function testReturnsLessThanZeroOnNonExistingKeys()
    {
        if ($this->isRedisServerVersion('<', '2.8.0')) {
            $this->assertSame(-1, $this->getClient()->pttl('foo'));
        } else {
            $this->assertSame(-2, $this->getClient()->pttl('foo'));
        }
    }
}


text:
<?php
Rhaco::import("lang.Validate");
Rhaco::import("lang.StringUtil");
Rhaco::import("exception.ExceptionTrigger");
Rhaco::import("exception.model.MaxLengthException");
Rhaco::import("exception.model.MinLengthException");
Rhaco::import("exception.model.RequireException");
Rhaco::import("exception.model.DataTypeException");
Rhaco::import("resources.Message");

class UrlsTableVerify{
	var $valid = true;

	function UrlsTableVerify(){
	}
	function verify(&$tableObject){
		foreach(get_class_methods($this) as $methodName){
			if(preg_match("/^verify(.+)$/i",$methodName)) $this->$methodName($tableObject);
		}
		return $this->valid;
	}
	function verifyId(&$tableObject){
		$value = $tableObject->getId();
		if(!empty($value) && !Validate::isIntegerLength($value,22)){
			ExceptionTrigger::raise(new DataTypeException(array($this->namedId())),$this->_validName("id"));
		}
	}
	function verifyUrl(&$tableObject){
		$value = $tableObject->getUrl();
		if($value === "" || $value === null){
			ExceptionTrigger::raise(new RequireException(array($this->namedUrl())),$this->_validName("url"));
		}
	}
	function verifyPubdate(&$tableObject){
		$value = $tableObject->getPubdate();
	}

	function namedId(){
		return Message::_("id");
	}
	function namedUrl(){
		return Message::_("url");
	}
	function namedPubdate(){
		return Message::_("pubdate");
	}
	function _validName($name){
		$this->valid = false;
		return "Urls_".$name;
	}
}

?>


text:
Centro de estudios ministeriales

CENTRO DE ESTUDIOS MINISTERIALES

                más

¿Quienes Somos?

                    <img src=<?php echo base_url("assets/img/logo/logo_icd_white.png");?> class="img-responsive logo_white" alt="">

Somos una comunidad cristiana llamada a restaurar la comunión íntima con Dios. Nuestro objetivo es inspirar e influenciar a cada individuo y a cada familia a vivir según la cultura del Reino de los cielos.

                    Estamos constituidos por personas que caminan de acuerdo a la visión de INTIMIDAD CON DIOS: Ingresando a un Nuevo Tiempo Instruyendo y Ministrando Integralmente dando Adoración a Dios.

                    Creemos en un modelo de congregación multigeneracional donde buscamos que cada generación tenga su propia experiencia íntima con la Presencia del Señor, que desarrolle un fervor y amor por la Escritura y que camine firme en Su identidad como hijos de Dios trayendo reforma y transformación en sus días.

                    Conoce más!

Ministerios

Hombres Intencionales

Hombres determinados a guiar a sus generaciones a amar al Señor, sacerdotes entendidos en conocer el diseño del Padre llevando a su familia al conocimiento de la Escritura, hombres con deseo de ver a sus generaciones siendo los conquistadores que creen en las promesas del Padre y le sirven con todo el corazón.

Mujeres de Palabra

Mujeres consagradas a la oración, entendidas en ser el socorro del cielo para sus esposos, mujeres piadosas que marcan a sus generaciones a amar el camino del Señor, cuyo objetivo es heredar a sus hijos la devoción y el fervor espiritual.

Jóvenes Alto Voltaje

Una generación de jóvenes encendida en el fuego del Señor, determinada a vivir de acuerdo a la Voluntad del Padre para esta generación, jóvenes apartados para dar defensa del evangelio con sus vidas.

Generacion Valiente

Una nueva generación consagrada para los propósitos anunciados por el Padre para los últimos días. Una generación llamada a ser radical y sobrenatural en el estilo de vida que impactará al mundo entero.

Adoradores en Espíritu y Verdad

Adoradores llamados a rugir en medio de esta generación, consagrados a la pureza del llamado sacerdotal, músicos apartados para ser portadores de la Gloria de la Presencia de Dios a todo lugar y en todo tiempo.

Familias con Propósito

Familias con Propósito, apartadas para el Señor, familias firmes en su identidad del Reino de Dios, consagradas a vivir de acuerdo a la escritura. Familias entendidas en los últimos tiempos, llamadas a la gran comisión.

Fundación Somos Uno

Amor, compasión y llamado. Una esperanza y un futuro para Costa Rica y las naciones.
Soy segundo, la sonrisa de mi hermano es mi jornada.

                <img src=<?php echo base_url("assets/img/somos_uno_logo.png");?> class="img-responsive" alt="">

                    <a href=<?php echo base_url("assets/img/portfolio/fullsize/2.jpg");?> class="portfolio-box">
                        <img src=<?php echo base_url("assets/img/portfolio/thumbnails/2.jpg");?> class="img-responsive" alt="">

                                    Adoración

                    <a href=<?php echo base_url("assets/img/portfolio/fullsize/1.jpg");?> class="portfolio-box">
                        <img src=<?php echo base_url("assets/img/portfolio/thumbnails/1.jpg");?> class="img-responsive" alt="">

                                    Comunión

                    <a href=<?php echo base_url("assets/img/portfolio/fullsize/3.jpg");?> class="portfolio-box">
                        <img src=<?php echo base_url("assets/img/portfolio/thumbnails/3.jpg");?> class="img-responsive" alt="">

                                    Generación Valiente

                    <a href=<?php echo base_url("assets/img/portfolio/fullsize/4.jpg");?> class="portfolio-box">
                        <img src=<?php echo base_url("assets/img/portfolio/thumbnails/4.jpg");?> class="img-responsive" alt="">

                                    Intimidad

                    <a href=<?php echo base_url("assets/img/portfolio/fullsize/5.jpg");?> class="portfolio-box">
                        <img src=<?php echo base_url("assets/img/portfolio/thumbnails/5.jpg");?> class="img-responsive" alt="">

                                    Presencia

                    <a href=<?php echo base_url("assets/img/portfolio/fullsize/6.jpg");?> class="portfolio-box">
                        <img src=<?php echo base_url("assets/img/portfolio/thumbnails/6.jpg");?> class="img-responsive" alt="">

                                    Devoción

                <img src=<?php echo base_url("assets/img/cem_logo.png");?> class="img-responsive" alt="">

Discipulado pastoral, capacitación Bíblica, base doctrinal,
estudios teológicos, entrenamiento ministerial.

Horarios:

Domingos 10:00 am - Reunión de Celebración

Lunes 7:00 pm - Discipulado CEM (Materia 1 INSTE)

Ubicación:

Colegio Monterrey, San Pedro, Costa Rica.


text:
/**
 * Checks if a given object is an array.
 *
 * @function
 * @param {*} subject - The object to test
 * @return {boolean} `true` if `subject` is an array, `false` otherwise.
 * @example
 *
 *   class MyArray extends Array {}
 *
 *   array([1, 2]) //=> true
 *   array(new Array()) //=> true
 *   array('') //=> false
 *   array(new MyArray()) //=> false
 */
export default Array.isArray;


text:
	<title>Pie Chart</title>
    <link class="include" rel="stylesheet" type="text/css" href="css/jquery.jqplot.min.css" />
    <link rel="stylesheet" type="text/css" href="css/examples.min.css" />
    <meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">


text:
eecs211_nachos
==============

The project work for Advanced System-Software.


text:
export declare const DEFAULT_SW_PATH = "/firebase-messaging-sw.js";
export declare const DEFAULT_SW_SCOPE = "/firebase-cloud-messaging-push-scope";


text:
import struct
from socket import error as socket_error
from django.core.handlers.wsgi import logger
from ws4redis.utf8validator import Utf8Validator
from ws4redis.exceptions import WebSocketError, FrameTooLargeException

class WebSocket(object):
    __slots__ = ('_closed', 'stream', 'utf8validator', 'utf8validate_last')

    OPCODE_CONTINUATION = 0x00
    OPCODE_TEXT = 0x01
    OPCODE_BINARY = 0x02
    OPCODE_CLOSE = 0x08
    OPCODE_PING = 0x09
    OPCODE_PONG = 0x0a

    def __init__(self, wsgi_input):
        self._closed = False
        self.stream = Stream(wsgi_input)
        self.utf8validator = Utf8Validator()
        self.utf8validate_last = None

    def __del__(self):
        try:
            self.close()
        except:
            # close() may fail if __init__ didn't complete
            pass

    def _decode_bytes(self, bytestring):
        """
        Internal method used to convert the utf-8 encoded bytestring into unicode.
        If the conversion fails, the socket will be closed.
        """
        if not bytestring:
            return ''
        try:
            return bytestring.decode()
        except UnicodeDecodeError:
            self.close(1007)
            raise

    def _encode_bytes(self, text):
        """
        :returns: The utf-8 byte string equivalent of `text`.
        """
        if isinstance(text, bytes):
            return text
        if not isinstance(text, str):
            text = str(text or '')
        return text.encode()

    def _is_valid_close_code(self, code):
        """
        :returns: Whether the returned close code is a valid hybi return code.
        """
        if code < 1000:
            return False
        if 1004 <= code <= 1006:
            return False
        if 1012 <= code <= 1016:
            return False
        if code == 1100:
            # not sure about this one but the autobahn fuzzer requires it.
            return False
        if 2000 <= code <= 2999:
            return False
        return True

    def get_file_descriptor(self):
        """Return the file descriptor for the given websocket"""
        return self.stream.fileno

    @property
    def closed(self):
        return self._closed

    def handle_close(self, header, payload):
        """
        Called when a close frame has been decoded from the stream.

        :param header: The decoded `Header`.
        :param payload: The bytestring payload associated with the close frame.
        """
        if not payload:
            self.close(1000)
            return
        if len(payload) < 2:
            raise WebSocketError('Invalid close frame: {0} {1}'.format(header, payload))
        code = struct.unpack('!H', payload[:2])[0]
        payload = payload[2:]
        if payload:
            validator = Utf8Validator()
            val = validator.validate(payload)
            if not val[0]:
                raise UnicodeError
        if not self._is_valid_close_code(code):
            raise WebSocketError('Invalid close code {0}'.format(code))
        self.close(code, payload)

    def handle_ping(self, header, payload):
        self.send_frame(payload, self.OPCODE_PONG)

    def handle_pong(self, header, payload):
        pass

    def read_frame(self):
        """
        Block until a full frame has been read from the socket.

        This is an internal method as calling this will not cleanup correctly
        if an exception is called. Use `receive` instead.

        :return: The header and payload as a tuple.
        """
        header = Header.decode_header(self.stream)
        if header.flags:
            raise WebSocketError
        if not header.length:
            return header, ''
        try:
            payload = self.stream.read(header.length)
        except socket_error:
            payload = ''
        except BaseException as e:
            logger.debug("{}: {}".format(type(e), str(e)))
            payload = ''
        if len(payload) != header.length:
            raise WebSocketError('Unexpected EOF reading frame payload')
        if header.mask:
            payload = header.unmask_payload(payload)
        return header, payload

    def validate_utf8(self, payload):
        # Make sure the frames are decodable independently
        self.utf8validate_last = self.utf8validator.validate(payload)

        if not self.utf8validate_last[0]:
            raise UnicodeError("Encountered invalid UTF-8 while processing "
                               "text message at payload octet index "
                               "{0:d}".format(self.utf8validate_last[3]))

    def read_message(self):
        """
        Return the next text or binary message from the socket.

        This is an internal method as calling this will not cleanup correctly
        if an exception is called. Use `receive` instead.
        """
        opcode = None
        message = ""
        while True:
            header, payload = self.read_frame()
            f_opcode = header.opcode
            if f_opcode in (self.OPCODE_TEXT, self.OPCODE_BINARY):
                # a new frame
                if opcode:
                    raise WebSocketError("The opcode in non-fin frame is expected to be zero, got {0!r}".format(f_opcode))
                # Start reading a new message, reset the validator
                self.utf8validator.reset()
                self.utf8validate_last = (True, True, 0, 0)
                opcode = f_opcode
            elif f_opcode == self.OPCODE_CONTINUATION:
                if not opcode:
                    raise WebSocketError("Unexpected frame with opcode=0")
            elif f_opcode == self.OPCODE_PING:
                self.handle_ping(header, payload)
                continue
            elif f_opcode == self.OPCODE_PONG:
                self.handle_pong(header, payload)
                continue
            elif f_opcode == self.OPCODE_CLOSE:
                self.handle_close(header, payload)
                return
            else:
                raise WebSocketError("Unexpected opcode={0!r}".format(f_opcode))
            if opcode == self.OPCODE_TEXT:
                self.validate_utf8(payload)
                payload = payload.decode()
            message += payload
            if header.fin:
                break
        if opcode == self.OPCODE_TEXT:
            self.validate_utf8(message.encode())
            return message
        else:
            return bytearray(message)

    def receive(self):
        """
        Read and return a message from the stream. If `None` is returned, then
        the socket is considered closed/errored.
        """
        if self._closed:
            raise WebSocketError("Connection is already closed")
        try:
            return self.read_message()
        except UnicodeError as e:
            logger.info('websocket.receive: UnicodeError {}'.format(e))
            self.close(1007)
        except WebSocketError as e:
            logger.info('websocket.receive: WebSocketError {}'.format(e))
            self.close(1002)
        except Exception as e:
            logger.info('websocket.receive: Unknown error {}'.format(e))
            raise e

    def flush(self):
        """
        Flush a websocket. In this implementation intentionally it does nothing.
        """
        pass

    def send_frame(self, message, opcode):
        """
        Send a frame over the websocket with message as its payload
        """
        if self._closed:
            raise WebSocketError("Connection is already closed")
        if opcode == self.OPCODE_TEXT:
            message = self._encode_bytes(message)
        elif opcode == self.OPCODE_BINARY:
            message = bytes(message)
        header = Header.encode_header(True, opcode, '', len(message), 0)
        try:
            self.stream.write(header + message)
        except socket_error:
            raise WebSocketError("Socket is dead")

    def send(self, message, binary=False):
        """
        Send a frame over the websocket with message as its payload
        """
        if binary is None:
            binary = not isinstance(message, str)
        opcode = self.OPCODE_BINARY if binary else self.OPCODE_TEXT
        try:
            self.send_frame(message, opcode)
        except WebSocketError:
            raise WebSocketError("Socket is dead")

    def close(self, code=1000, message=''):
        """
        Close the websocket and connection, sending the specified code and
        message.  The underlying socket object is _not_ closed, that is the
        responsibility of the initiator.
        """
        try:
            message = self._encode_bytes(message)
            self.send_frame(
                struct.pack('!H%ds' % len(message), code, message),
                opcode=self.OPCODE_CLOSE)
        except WebSocketError:
            # Failed to write the closing frame but it's ok because we're
            # closing the socket anyway.
            logger.debug("Failed to write closing frame -> closing socket")
        finally:
            logger.debug("Closed WebSocket")
            self._closed = True
            self.stream = None

class Stream(object):
    """
    Wraps the handler's socket/rfile attributes and makes it in to a file like
    object that can be read from/written to by the lower level websocket api.
    """

    __slots__ = ('read', 'write', 'fileno')

    def __init__(self, wsgi_input):
        self.read = wsgi_input.raw._sock.recv
        self.write = wsgi_input.raw._sock.sendall
        self.fileno = wsgi_input.fileno()

class Header(object):
    __slots__ = ('fin', 'mask', 'opcode', 'flags', 'length')

    FIN_MASK = 0x80
    OPCODE_MASK = 0x0f
    MASK_MASK = 0x80
    LENGTH_MASK = 0x7f
    RSV0_MASK = 0x40
    RSV1_MASK = 0x20
    RSV2_MASK = 0x10

    # bitwise mask that will determine the reserved bits for a frame header
    HEADER_FLAG_MASK = RSV0_MASK | RSV1_MASK | RSV2_MASK

    def __init__(self, fin=0, opcode=0, flags=0, length=0):
        self.mask = ''
        self.fin = fin
        self.opcode = opcode
        self.flags = flags
        self.length = length

    def mask_payload(self, payload):
        payload = bytearray(payload)
        mask = bytearray(self.mask)
        for i in range(self.length):
            payload[i] ^= mask[i % 4]
        return bytes(payload)

    # it's the same operation
    unmask_payload = mask_payload

    def __repr__(self):
        return ("<Header fin={0} opcode={1} length={2} flags={3} at "
                "0x{4:x}>").format(self.fin, self.opcode, self.length,
                                   self.flags, id(self))

    @classmethod
    def decode_header(cls, stream):
        """
        Decode a WebSocket header.

        :param stream: A file like object that can be 'read' from.
        :returns: A `Header` instance.
        """
        read = stream.read
        data = read(2)
        if len(data) != 2:
            raise WebSocketError("Unexpected EOF while decoding header")
        first_byte, second_byte = struct.unpack('!BB', data)
        header = cls(
            fin=first_byte & cls.FIN_MASK == cls.FIN_MASK,
            opcode=first_byte & cls.OPCODE_MASK,
            flags=first_byte & cls.HEADER_FLAG_MASK,
            length=second_byte & cls.LENGTH_MASK)
        has_mask = second_byte & cls.MASK_MASK == cls.MASK_MASK
        if header.opcode > 0x07:
            if not header.fin:
                raise WebSocketError('Received fragmented control frame: {0!r}'.format(data))
            # Control frames MUST have a payload length of 125 bytes or less
            if header.length > 125:
                raise FrameTooLargeException('Control frame cannot be larger than 125 bytes: {0!r}'.format(data))
        if header.length == 126:
            # 16 bit length
            data = read(2)
            if len(data) != 2:
                raise WebSocketError('Unexpected EOF while decoding header')
            header.length = struct.unpack('!H', data)[0]
        elif header.length == 127:
            # 64 bit length
            data = read(8)
            if len(data) != 8:
                raise WebSocketError('Unexpected EOF while decoding header')
            header.length = struct.unpack('!Q', data)[0]
        if has_mask:
            mask = read(4)
            if len(mask) != 4:
                raise WebSocketError('Unexpected EOF while decoding header')
            header.mask = mask
        return header

    @classmethod
    def encode_header(cls, fin, opcode, mask, length, flags):
        """
        Encodes a WebSocket header.

        :param fin: Whether this is the final frame for this opcode.
        :param opcode: The opcode of the payload, see `OPCODE_*`
        :param mask: Whether the payload is masked.
        :param length: The length of the frame.
        :param flags: The RSV* flags.
        :return: A bytestring encoded header.
        """
        first_byte = opcode
        second_byte = 0
        extra = b''
        if fin:
            first_byte |= cls.FIN_MASK
        if flags & cls.RSV0_MASK:
            first_byte |= cls.RSV0_MASK
        if flags & cls.RSV1_MASK:
            first_byte |= cls.RSV1_MASK
        if flags & cls.RSV2_MASK:
            first_byte |= cls.RSV2_MASK
        # now deal with length complexities
        if length < 126:
            second_byte += length
        elif length <= 0xffff:
            second_byte += 126
            extra = struct.pack('!H', length)
        elif length <= 0xffffffffffffffff:
            second_byte += 127
            extra = struct.pack('!Q', length)
        else:
            raise FrameTooLargeException
        if mask:
            second_byte |= cls.MASK_MASK
            extra += mask
        return bytes([first_byte, second_byte]) + extra


text:
package com.linkedin.kafka.clients.auditing.abstractimpl;

import com.linkedin.kafka.clients.auditing.AuditType;
import com.linkedin.kafka.clients.auditing.Auditor;
import com.linkedin.kafka.clients.auditing.LoggingAuditor;
import java.util.concurrent.atomic.AtomicBoolean;
import org.apache.kafka.common.utils.SystemTime;
import org.apache.kafka.common.utils.Time;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.Map;
import java.util.concurrent.TimeUnit;

/**
 * An abstract Auditor that helps deal with tricky concurrency problems.
 *
 * The abstract auditor helps aggregate the audited records and pass the aggregated statistics to the users periodically
 * based on the reporting interval setting.
 *

 * More specifically, the abstract auditor keeps an {@link AuditStats} for each reporting interval.
 * The {@link AuditStats} helps maintain the records that have been audited during the corresponding reporting interval.
 * We have provided {@link CountingAuditStats} as an implementation of {@link AuditStats} in the package.
 * The {@link CountingAuditStats} aggregates the records that have been audited into different buckets.
 * At the end of each reporting interval, the abstract auditor would tick to roll out a new {@link AuditStats} and close
 * the old audit stats. The old audit stats will then be passed to the user through {@link #onTick} method.
 *
 *

 * If auto.tick is set to false, the auditing thread would be disabled. In that case, user needs to call tick
 * manually to roll out new AuditStats.
 *
 *

 * Ideally, the timestamp of the audited records should always fall in the current reporting interval. But due to some
 * lag, it is possible that some audited records has an earlier timestamp that falls in the previous reporting interval.
 * Although this won't impact the auditing results, the abstract auditor allows user to specify a reporting.delay.ms to
 * tolerate some records that are audited later than expected. On the other hand, if a timestamp is ahead of the
 * current reporting interval, it will be aggregated into the AuditStats of next reporting interval.
 *
 * To use this class, users need to implement the following methods:
 *

 *   {@link #onTick(AuditStats)}
 *   {@link #onClosed(AuditStats, AuditStats, long)}
 *   {@link #createAuditStats()}
 *   {@link #getAuditKey(Object, String, Long, Long, Long, AuditType)}
 *   {@link #auditToken(Object, Object)}
 *

 *
 *

 * For users who wants to have customized configurations, they may override the method:
 *

 *   public void configure(Map<String, ?> configs);
 *

 *
 * An example implementation can be found in {@link LoggingAuditor}. The {@link LoggingAuditor} uses
 * {@link CountingAuditStats} to aggregate the audited records and simply print it to the log.
 */
public abstract class AbstractAuditor<K, V> extends Thread implements Auditor<K, V> {
  private static final Logger LOG = LoggerFactory.getLogger(AbstractAuditor.class);
  // Config Names
  public static final String REPORTING_INTERVAL_MS = "auditor.reporting.interval.ms";
  public static final String REPORTING_DELAY_MS = "auditor.reporting.delay.ms";
  public static final String ENABLE_AUTO_TICK = "enable.auto.tick";

  // Config default values
  private static final String REPORTING_INTERVAL_MS_DEFAULT = "600000";
  private static final String REPORTING_DELAY_MS_DEFAULT = "60000";
  private static final String AUTO_TICK_DEFAULT = "true";

  // The timer that facilitates unit test.
  private static Time _time;

  // The logging delay in millisecond.
  private static long _reportingIntervalMs;
  // The reporting delay in millisecond. This is to tolerate some of the late arrivals.
  private static long _reportingDelayMs;
  // Whether disable the auditing thread.
  private static boolean _enableAutoTick;

  private volatile AuditStats _currentStats;
  private volatile AuditStats _nextStats;
  private volatile long _nextTick;
  private volatile long _ticks;

  // The shutdown flag and latches.
  private final AtomicBoolean _started = new AtomicBoolean(false);
  private final Object _shutdownLock = new Object();
  private volatile boolean _shutdown;
  // The shutdown flag and deadline.
  private volatile long _shutdownDeadline;

  /**
   * Construct the abstract auditor.
   */
  public AbstractAuditor() {
    super();
    this.setUncaughtExceptionHandler((t, e) -> LOG.error("Auditor died to unhandled exception", e));
    this.setDaemon(true);
    _time = new SystemTime();
  }

  /**
   * Construct the abstract auditor with thread name and time object.
   *
   * @param name The auditing thread name.
   * @param time The time object.
   */
  public AbstractAuditor(String name, Time time) {
    super(name);
    _time = time;
  }

  /**
   * Note that if this method is overridden by the subclasses. The overriding configure method MUST call this method
   * at the end to ensure the AuditStats are correctly initialized.
   *
   * @param configs The configurations for the auditor
   */
  @Override
  @SuppressWarnings("unchecked")
  public void configure(Map<String, ?> configs) {
    _reportingIntervalMs = Long.parseLong((String) ((Map<String, Object>) configs).getOrDefault(REPORTING_INTERVAL_MS, REPORTING_INTERVAL_MS_DEFAULT));
    _reportingDelayMs = Long.parseLong((String) ((Map<String, Object>) configs).getOrDefault(REPORTING_DELAY_MS, REPORTING_DELAY_MS_DEFAULT));
    _enableAutoTick = Boolean.parseBoolean((String) ((Map<String, Object>) configs).getOrDefault(ENABLE_AUTO_TICK, AUTO_TICK_DEFAULT));
    _nextTick = _enableAutoTick ?
        (_time.milliseconds() / _reportingIntervalMs) * _reportingIntervalMs + _reportingIntervalMs : Long.MAX_VALUE;
    _ticks = 0;
    _shutdown = false;
    _shutdownDeadline = -1L;
  }

  @Override
  public void run() {
    if (_enableAutoTick) {
      LOG.info("Starting auditor...");
      try {
        while (!_shutdown) {
          try {
            long now = _time.milliseconds();
            if (now >= _nextTick + _reportingDelayMs) {
              tick();
            }
            waitForNextTick(now);
          } catch (Exception e) {
            // We catch all the exceptions from the user's onTick() call but not exit.
            LOG.error("Auditor encountered exception.", e);
          }
        }
      } finally {
        _currentStats.close();
        _nextStats.close();
        _shutdown = true;
        long shutdownBudgetRemaining = _shutdownDeadline - System.currentTimeMillis();
        try {
          onClosed(_currentStats, _nextStats, Math.max(0, shutdownBudgetRemaining));
        } catch (Exception e) {
          LOG.warn("error closing auditor", e);
        }
      }
    } else {
      LOG.info("Auto auditing is set to false. Automatic ticking is disabled.");
    }
  }

  private void waitForNextTick(long now) {
    try {
      synchronized (_shutdownLock) {
        if (!_shutdown) {
          _shutdownLock.wait(Math.max(0, _nextTick + _reportingDelayMs - now));
        }
      }
    } catch (InterruptedException ie) {
      // Let it go.
    }
  }

  // protected methods
  /**
   * @return the current audit stats.
   */
  protected AuditStats currentStats() {
    return _currentStats;
  }

  /**
   * @return the next audit stats.
   */
  protected AuditStats nextStats() {
    return _nextStats;
  }

  /**
   * @return the time when the next tick will occur.
   */
  protected long nextTick() {
    return _nextTick;
  }

  /**
   * @return the total number of ticks occurred so far.
   */
  protected long ticks() {
    return _ticks;
  }

  /**
   * Manually tick the abstract auditor and get the AuditStats of the last reporting interval.
   * @return stats for the previous interval
   */
  protected AuditStats tickAndGetStats() {
    // We only allow one thread to tick.
    synchronized (this) {
      AuditStats prevStats = _currentStats;
      _currentStats = _nextStats;
      // Only update next tick if reporting interval is non-negative.
      if (_reportingIntervalMs >= 0) {
        _nextTick += _reportingIntervalMs;
      }
      _nextStats = createAuditStats();
      _ticks++;
      prevStats.close();
      return prevStats;
    }
  }

  /**
   * Roll out a new AuditStats and pass that to the users.
   */
  protected void tick() {
    onTick(tickAndGetStats());
  }

  /**
   * Check if the auditor is shutting down.
   *
   * @return true if the auditor is shutting down, false otherwise.
   */
  protected boolean isShuttingDown() {
    return _shutdown;
  }

  /**
   * This method is called when a reporting interval is reached and the abstract auditor rolls out a new AuditStats.
   * The old AuditStats will be closed and passed to this method as the argument. The subclass must implement this
   * method to handle the AuditStats for the previous reporting interval.
   *

   *   Note that the implementation should expect to be interrupted when the auditor is shutdown and the shutdown
   *   timeout has passed.
   *

   *
   * @param lastStats The AuditStats of the previous reporting interval.
   */
  public abstract void onTick(AuditStats lastStats);

  /**
   * This method will be called when the auditor is closed.
   * The AuditStats of the current and next reporting interval will be passed for the subclass to handle.
   *
   * @param currentStats The stats for the current reporting period.
   * @param nextStats The stats for the next reporting period.
   * @param timeout The timeout to close the auditor. The onClosed() call will be interrupted if it did not return
   *                before timeout.
   */
  public abstract void onClosed(AuditStats currentStats, AuditStats nextStats, long timeout);

  /**
   * Create a new AuditStats. This method will be called when the abstract auditor rolls out a new AuditStat for a new
   * reporting interval.
   * @return new stats
   */
  protected abstract AuditStats createAuditStats();

  /**
   * Get the audit key based on the record audit token. The audit key will be used to categorize the record that is
   * being audited. For example, if user wants to categorize the records based on the size of the bytes, the audit key
   * could be the combination of topic and size rounded down to 100KB. An example audit key implementation can be
   * found in {@link AuditKey}.
   *
   * @param auditToken the custom audit token extracted from key and value of the record being audited.
   * @param topic the topic of the record being audited.
   * @param timestamp the timestamp of the record being audited.
   * @param messageCount the number of records being audited.
   * @param bytesCount the number of bytes being audited.
   * @param auditType type of activity to report
   *
   * @return An object that can be served as an key in a {@link java.util.HashMap}. Returning null means skipping the
   * auditing.
   */
  protected abstract Object getAuditKey(Object auditToken,
                                        String topic,
                                        Long timestamp,
                                        Long messageCount,
                                        Long bytesCount,
                                        AuditType auditType);

  @Override
  public abstract Object auditToken(K key, V value);

  @Override
  public void start() {
    if (_started.compareAndSet(false, true)) {
      // Initialize the stats before starting auditor.
      _currentStats = createAuditStats();
      _nextStats = createAuditStats();
      super.start();
    }
  }

  @Override
  public void record(Object auditToken,
                     String topic,
                     Long timestamp,
                     Long messageCount,
                     Long bytesCount,
                     AuditType auditType) {
    boolean done = false;
    do {
      try {
        AuditStats auditStats = timestamp == null || timestamp >= _nextTick ? _nextStats : _currentStats;
        Object auditKey = getAuditKey(auditToken, topic, timestamp, messageCount, bytesCount, auditType);
        if (auditKey != null) {
          auditStats.update(auditKey, messageCount, bytesCount);
        }
        done = true;
      } catch (IllegalStateException ise) {
        // Ignore this exception and retry because we might be ticking.
      }
    } while (!done && !_shutdown);
  }

  @Override
  public void close(long timeout, TimeUnit unit) {
    LOG.info("Closing auditor with timeout {} {}", timeout, unit);
    long timeoutMillis = unit.toMillis(timeout);
    long now = _time.milliseconds();
    // Set shutdown flag
    synchronized (_shutdownLock) {
      if (!_shutdown) {
        // Handle long overflow
        _shutdownDeadline = Long.min(Long.MAX_VALUE - now, timeoutMillis) + now;
        _shutdown = true;
        _shutdownLock.notify();
      }
    }
    try {
      if (timeout > 0) {
        this.join(timeoutMillis);
      }
    } catch (InterruptedException e) {
      LOG.warn("Auditor closure interrupted");
    }
    // Interrupt after timeout.
    interrupt();
  }

  @Override
  public void close() {
    close(Long.MAX_VALUE, TimeUnit.MILLISECONDS);
  }
}


text:
package ru.stqa.pft.addressbook.tests;

import org.testng.annotations.Test;
import ru.stqa.pft.addressbook.model.ContactData;

import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.MatcherAssert.assertThat;

/**
 * Created by manuhin on 23.03.2016.
 */
public class ContactAddressTests extends TestBase {
  @Test
  public void testContactAddress() {
    app.goTo().contacts();
    ContactData contact = app.contact().all().iterator().next();
    ContactData contactInfoFromEditForm = app.contact().infoFromEditForm(contact);

    assertThat(contact.getAddress(), equalTo(contactInfoFromEditForm.getAddress()));
  }

}


text:
#pragma once

#include <QtCore/QString>
#include <QtCore/QScopedPointer>

#include <trikKernel/differentOwnerPointer.h>
#include <trikNetwork/trikServer.h>

namespace trikScriptRunner {
class TrikScriptRunner;
}

namespace trikControl {
class BrickInterface;
}

namespace trikNetwork {
class MailboxInterface;
}

namespace trikCommunicator {

class Connection;

/// Class that enables connection with a client running on computer (TRIKStudio or remote control).
/// Communication subsystem consists of TrikCommunicator object which runs in main thread and listens for incoming
/// connections, Connection objects --- one for every connected client, they run in separate threads each, and
/// ScriptRunnerWrapper object in main thread which processes signals from Connections.
class TrikCommunicator : public trikNetwork::TrikServer
{
	Q_OBJECT

public:
	/// Constructor that creates its own instance of a script runner.
	/// @param brick - reference to robot brick.
	/// @param mailbox - mailbox object used to communicate with other robots.
	/// @param startDirPath - path to the directory from which the application was executed.
	TrikCommunicator(trikControl::BrickInterface &brick
			, trikNetwork::MailboxInterface * const mailbox
			);

	/// Constructor that accepts external script runner and issues commands to it.
	/// @param runner - script runner that shall be used to execute commands.
	/// @param configVersion - version of system config file that can be used to check that client and runtime configs
	///        match.
	explicit TrikCommunicator(trikScriptRunner::TrikScriptRunner &runner, const QString &configVersion);

	~TrikCommunicator() override;

signals:
	/// Emitted when stop command received from a computer.
	void stopCommandReceived();

private:
	TrikCommunicator(const trikKernel::DifferentOwnerPointer<trikScriptRunner::TrikScriptRunner> &runner
			, const QString &configVersion);

	Connection *connectionFactory();

	/// Script runner object common to all connections.
	trikKernel::DifferentOwnerPointer<trikScriptRunner::TrikScriptRunner> mTrikScriptRunner;

	/// Version of system configuration file. Must correspond to casing model, used to allow clients to check that
	/// their expectations of configuration match actual one.
	const QString mConfigVersion;
};

}


text:
<!DOCTYPE html>

    <link rel="icon" href="http://oi63.tinypic.com/110zzh4.jpg">

    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="Simple Soap">
    <meta name="author" content="Lovely Ranges">

<meta property="og:image" content="natural.jpg" />
<meta property="og:title" content="Simple Soap Vancouver" />
<meta property="og:description" content="Simple Soap is a youth led micro company, focused on providing eco-friendly bar soaps to the community! We provide naturally handmade bar soaps with scents." />

    <title>Simple Soap Vancouver - Simple Soap is a youth led micro company, focused on providing eco-friendly bar soaps to the community. </title>

    <link href="vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">

    <link href="vendor/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
    <link href="https://fonts.googleapis.com/css?family=Montserrat:400,700" rel="stylesheet" type="text/css">
    <link href='https://fonts.googleapis.com/css?family=Kaushan+Script' rel='stylesheet' type='text/css'>
    <link href='https://fonts.googleapis.com/css?family=Droid+Serif:400,700,400italic,700italic' rel='stylesheet' type='text/css'>
    <link href='https://fonts.googleapis.com/css?family=Roboto+Slab:400,100,300,700' rel='stylesheet' type='text/css'>

    <link href="css/agency.css" rel="stylesheet">

                <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
                    Toggle navigation Menu
                </button>
                Simple Soap

                        Products

                        About

                        Team

                        Contact us!

SIMPLE SOAP

  Simple Soap is a youth led micro company, focused on providing eco-friendly bar soaps to the community.

                Tell Me More
                 Order Our Products

PRODUCTS

Here are some photos on what our handmade soaps look like.

Lavender Earl Grey

 Ingredients: Glycerin,  Lavender Essential Oil, Earl Grey Leaves

Coffee

Ingredients: Glycerin, Coffee Powder

Citrus Lemon

Ingredients: Glycerin,  Lemon Oil , Orange Zest

About us

 This is your experience, our job is to make it a great one.

Value Proposition

An all natural bar soap, enhanced with unique and simple scents, designed for an  eco-friendly lifestyle.

Our story

Local, handcrafted artisan soaps, made with the vision to bridge people and our natural environment.

Affordability

We care about our  customers' experience  over the profits that we make, keeping our products reasonably priced.

Our Team

Jessica Sun

Jessica Sun is a passionate grade 11 student attending Windermere Secondary School, who shares an interest for learning and leading to creating change within the world. Growing up in Metro Vancouver, she is highly involved within her community, while aspiring to impact and empower those around her.

Cindy Chen

Cindy Chen is a student currently in grade 11 student who is part of the Leadership program offered at Windermere Secondary. She enjoys learning about social justice, sustainability and business. She can often be found spending her time involved with the community through various programs and organizations, with her friends, or going on an outdoor adventure.

Alyssa Yan

Alyssa Yan is a grade 11 student at Windermere Secondary School, and is part of the Leadership mini school program. Outside of her academia, she dedicates her time in giving back to her community, through the means of regular volunteering ranging from organizing community events, and having an active role in non-profit organizations.

Kyle Tsui

Kyle Tsui has discovered his passion for business through his high school years. He aspires to build on his invaluable skills, while improving current ones. His goal for the company is to ensure that everyone works cohesively and that the rest of the team has the support they need for success!

Austin Nguyen

Austin Nguyen is a dedicated grade 11 student, who is studying at Windermere Secondary School. He dedicates most of his time in extracurriculars such as sport teams, and clubs around his community. Austin hopes to see a greener world and community, with the help of our soap!

Contact Us

Have any questions or feedback? Feel free to message us.

                    <form name="sentMessage" id="contactForm" novalidate>

                                    <input type="text" class="form-control" placeholder="Your Name *" id="name" required data-validation-required-message="Please enter your name.">

                                    <input type="email" class="form-control" placeholder="Your Email *" id="email" required data-validation-required-message="Please enter your email address.">

                                    <input type="tel" class="form-control" placeholder="Your Phone *" id="phone" required data-validation-required-message="Please enter your phone number.">

                                    <textarea class="form-control" placeholder="Your Message *" id="message" required data-validation-required-message="Please enter a message."></textarea>

                                <button type="submit" class="btn btn-xl">Send Message</button>

                    </form>

                    Copyright © Simple Soap 2017

SFU Bright Ideas

CNH

                   A portion of our proceeds goes towards supporting   environmental advocacy.


text:
package me.etki.grac.infrastructure.transport;

import me.etki.grac.concurrent.CompletableFutures;
import me.etki.grac.transport.ServerRequest;
import me.etki.grac.transport.ServerResponse;
import me.etki.grac.transport.Transport;

import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.atomic.AtomicInteger;

/**
 * @author Etki {@literal <etki@etki.name>}
 * @version %I%, %G%
 * @since 0.1.0
 */
public class ResponseRepeater implements Transport {

    private final ServerResponse[] responses;

    private final AtomicInteger iterator = new AtomicInteger(0);

    public ResponseRepeater(List<ServerResponse> responses) {
        this(responses.toArray(new ServerResponse[0]));
    }

    public ResponseRepeater(ServerResponse... responses) {
        this.responses = responses;
    }

    @Override
    public CompletableFuture<ServerResponse> execute(ServerRequest request) {
        if (responses.length == 0) {
            return CompletableFutures.exceptional(new NullPointerException());
        }
        return CompletableFutures.completed(responses[iterator.getAndIncrement() % responses.length]);
    }

    @Override
    public boolean supports(String protocol) {
        return true;
    }

    public ServerResponse[] getResponses() {
        return responses;
    }
}


text:
<FindBugsFilter>

    <!-- EC_UNRELATED_TYPES: Call to equals() comparing different types -->
    <!-- Add exceptions for tests here-->

    <Match>
        <Or>
            <Class name="tests.DateRangeTest" />
            <Class name="tests.RepoViewRecordTest" />
            <Class name="tests.MultiModel" />
            <Class name="tests.NumberRangeTest" />
        </Or>
        <Bug pattern="EC_UNRELATED_TYPES" />
        <Method name="equality" />
    </Match>

    <Match>
        <Class name="ui.UI"/>
        <Method name="quit" />
        <Bug pattern="DM_EXIT" />
    </Match>

    <Match>
        <Class name="ui.UI"/>
        <Or>
            <Field name="events" />
            <Field name="status" />
        </Or>
        <Bug pattern="MS_CANNOT_BE_FINAL" />
    </Match>

    <Match>
        <Class name="backend.interfaces.RepoStore"/>
        <Field name="directory" />
        <Bug pattern="MS_CANNOT_BE_FINAL" />
    </Match>

    <Match>
        <Class name="tests.FilterApplyTests"/>
        <Method name="state" />
        <Bug pattern="DE_MIGHT_IGNORE" />
    </Match>

    <Match>
        <Class name="guitests.UITest"/>
        <Method name="setupStage" />
        <Or>
            <Bug pattern="LI_LAZY_INIT_UPDATE_STATIC" />
            <Bug pattern="ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD" />
        </Or>
    </Match>

    <Match>
        <Or>
            <Class name="guitests.SavedLoginTest"/>
            <Class name="guitests.WrongLastViewedTest"/>
        </Or>
        <Method name="setupMethod" />
        <Bug pattern="ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD" />
    </Match>

    <Match>
        <Class name="ui.components.KeyboardShortcuts" />
        <Bug pattern="MS_CANNOT_BE_FINAL" />
        <Or>
            <Field name="downIssue" />
            <Field name="leftPanel" />
            <Field name="markAsRead" />
            <Field name="markAsUnread" />
            <Field name="rightPanel" />
            <Field name="scrollDown" />
            <Field name="scrollToBottom" />
            <Field name="scrollToTop" />
            <Field name="scrollUp" />
            <Field name="upIssue" />
        </Or>
    </Match>
</FindBugsFilter>