public abstract class org.apache.catalina.realm.RealmBase extends org.apache.catalina.util.LifecycleMBeanBase implements org.apache.catalina.Realm
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: org.apache.catalina.realm.RealmBase
  super_class: org.apache.catalina.util.LifecycleMBeanBase
{
  private static final org.apache.juli.logging.Log log;
    descriptor: Lorg/apache/juli/logging/Log;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.util.List<java.lang.Class<? extends org.apache.catalina.realm.DigestCredentialHandlerBase>> credentialHandlerClasses;
    descriptor: Ljava/util/List;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/List<Ljava/lang/Class<+Lorg/apache/catalina/realm/DigestCredentialHandlerBase;>;>;

  protected org.apache.catalina.Container container;
    descriptor: Lorg/apache/catalina/Container;
    flags: (0x0004) ACC_PROTECTED

  protected org.apache.juli.logging.Log containerLog;
    descriptor: Lorg/apache/juli/logging/Log;
    flags: (0x0004) ACC_PROTECTED

  private org.apache.catalina.CredentialHandler credentialHandler;
    descriptor: Lorg/apache/catalina/CredentialHandler;
    flags: (0x0002) ACC_PRIVATE

  protected static final org.apache.tomcat.util.res.StringManager sm;
    descriptor: Lorg/apache/tomcat/util/res/StringManager;
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL

  protected final java.beans.PropertyChangeSupport support;
    descriptor: Ljava/beans/PropertyChangeSupport;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected boolean validate;
    descriptor: Z
    flags: (0x0004) ACC_PROTECTED

  protected java.lang.String x509UsernameRetrieverClassName;
    descriptor: Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED

  protected org.apache.catalina.realm.X509UsernameRetriever x509UsernameRetriever;
    descriptor: Lorg/apache/catalina/realm/X509UsernameRetriever;
    flags: (0x0004) ACC_PROTECTED

  protected org.apache.catalina.realm.RealmBase$AllRolesMode allRolesMode;
    descriptor: Lorg/apache/catalina/realm/RealmBase$AllRolesMode;
    flags: (0x0004) ACC_PROTECTED

  protected boolean stripRealmForGss;
    descriptor: Z
    flags: (0x0004) ACC_PROTECTED

  private int transportGuaranteeRedirectStatus;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  protected java.lang.String realmPath;
    descriptor: Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 74
            ldc Lorg/apache/catalina/realm/RealmBase;
            invokestatic org.apache.juli.logging.LogFactory.getLog:(Ljava/lang/Class;)Lorg/apache/juli/logging/Log;
            putstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
         1: .line 77
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
         2: .line 76
            putstatic org.apache.catalina.realm.RealmBase.credentialHandlerClasses:Ljava/util/List;
         3: .line 83
            getstatic org.apache.catalina.realm.RealmBase.credentialHandlerClasses:Ljava/util/List;
            ldc Lorg/apache/catalina/realm/MessageDigestCredentialHandler;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         4: .line 84
            getstatic org.apache.catalina.realm.RealmBase.credentialHandlerClasses:Ljava/util/List;
            ldc Lorg/apache/catalina/realm/SecretKeyCredentialHandler;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         5: .line 108
            ldc Lorg/apache/catalina/realm/RealmBase;
            invokestatic org.apache.tomcat.util.res.StringManager.getManager:(Ljava/lang/Class;)Lorg/apache/tomcat/util/res/StringManager;
            putstatic org.apache.catalina.realm.RealmBase.sm:Lorg/apache/tomcat/util/res/StringManager;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // org.apache.catalina.realm.RealmBase this
         0: .line 72
            aload 0 /* this */
            invokespecial org.apache.catalina.util.LifecycleMBeanBase.<init>:()V
         1: .line 93
            aload 0 /* this */
            aconst_null
            putfield org.apache.catalina.realm.RealmBase.container:Lorg/apache/catalina/Container;
         2: .line 99
            aload 0 /* this */
            aconst_null
            putfield org.apache.catalina.realm.RealmBase.containerLog:Lorg/apache/juli/logging/Log;
         3: .line 114
            aload 0 /* this */
            new java.beans.PropertyChangeSupport
            dup
            aload 0 /* this */
            invokespecial java.beans.PropertyChangeSupport.<init>:(Ljava/lang/Object;)V
            putfield org.apache.catalina.realm.RealmBase.support:Ljava/beans/PropertyChangeSupport;
         4: .line 120
            aload 0 /* this */
            iconst_1
            putfield org.apache.catalina.realm.RealmBase.validate:Z
         5: .line 136
            aload 0 /* this */
            getstatic org.apache.catalina.realm.RealmBase$AllRolesMode.STRICT_MODE:Lorg/apache/catalina/realm/RealmBase$AllRolesMode;
            putfield org.apache.catalina.realm.RealmBase.allRolesMode:Lorg/apache/catalina/realm/RealmBase$AllRolesMode;
         6: .line 143
            aload 0 /* this */
            iconst_1
            putfield org.apache.catalina.realm.RealmBase.stripRealmForGss:Z
         7: .line 146
            aload 0 /* this */
            sipush 302
            putfield org.apache.catalina.realm.RealmBase.transportGuaranteeRedirectStatus:I
         8: .line 1454
            aload 0 /* this */
            ldc "/realm0"
            putfield org.apache.catalina.realm.RealmBase.realmPath:Ljava/lang/String;
         9: .line 72
            return
        end local 0 // org.apache.catalina.realm.RealmBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   10     0  this  Lorg/apache/catalina/realm/RealmBase;

  public int getTransportGuaranteeRedirectStatus();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.catalina.realm.RealmBase this
         0: .line 157
            aload 0 /* this */
            getfield org.apache.catalina.realm.RealmBase.transportGuaranteeRedirectStatus:I
            ireturn
        end local 0 // org.apache.catalina.realm.RealmBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/catalina/realm/RealmBase;

  public void setTransportGuaranteeRedirectStatus(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.catalina.realm.RealmBase this
        start local 1 // int transportGuaranteeRedirectStatus
         0: .line 169
            aload 0 /* this */
            iload 1 /* transportGuaranteeRedirectStatus */
            putfield org.apache.catalina.realm.RealmBase.transportGuaranteeRedirectStatus:I
         1: .line 170
            return
        end local 1 // int transportGuaranteeRedirectStatus
        end local 0 // org.apache.catalina.realm.RealmBase this
      LocalVariableTable:
        Start  End  Slot                              Name  Signature
            0    2     0                              this  Lorg/apache/catalina/realm/RealmBase;
            0    2     1  transportGuaranteeRedirectStatus  I
    MethodParameters:
                                  Name  Flags
      transportGuaranteeRedirectStatus  

  public org.apache.catalina.CredentialHandler getCredentialHandler();
    descriptor: ()Lorg/apache/catalina/CredentialHandler;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.catalina.realm.RealmBase this
         0: .line 175
            aload 0 /* this */
            getfield org.apache.catalina.realm.RealmBase.credentialHandler:Lorg/apache/catalina/CredentialHandler;
            areturn
        end local 0 // org.apache.catalina.realm.RealmBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/catalina/realm/RealmBase;

  public void setCredentialHandler(org.apache.catalina.CredentialHandler);
    descriptor: (Lorg/apache/catalina/CredentialHandler;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.catalina.realm.RealmBase this
        start local 1 // org.apache.catalina.CredentialHandler credentialHandler
         0: .line 181
            aload 0 /* this */
            aload 1 /* credentialHandler */
            putfield org.apache.catalina.realm.RealmBase.credentialHandler:Lorg/apache/catalina/CredentialHandler;
         1: .line 182
            return
        end local 1 // org.apache.catalina.CredentialHandler credentialHandler
        end local 0 // org.apache.catalina.realm.RealmBase this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    2     0               this  Lorg/apache/catalina/realm/RealmBase;
            0    2     1  credentialHandler  Lorg/apache/catalina/CredentialHandler;
    MethodParameters:
                   Name  Flags
      credentialHandler  

  public org.apache.catalina.Container getContainer();
    descriptor: ()Lorg/apache/catalina/Container;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.catalina.realm.RealmBase this
         0: .line 190
            aload 0 /* this */
            getfield org.apache.catalina.realm.RealmBase.container:Lorg/apache/catalina/Container;
            areturn
        end local 0 // org.apache.catalina.realm.RealmBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/catalina/realm/RealmBase;

  public void setContainer(org.apache.catalina.Container);
    descriptor: (Lorg/apache/catalina/Container;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // org.apache.catalina.realm.RealmBase this
        start local 1 // org.apache.catalina.Container container
         0: .line 202
            aload 0 /* this */
            getfield org.apache.catalina.realm.RealmBase.container:Lorg/apache/catalina/Container;
            astore 2 /* oldContainer */
        start local 2 // org.apache.catalina.Container oldContainer
         1: .line 203
            aload 0 /* this */
            aload 1 /* container */
            putfield org.apache.catalina.realm.RealmBase.container:Lorg/apache/catalina/Container;
         2: .line 204
            aload 0 /* this */
            getfield org.apache.catalina.realm.RealmBase.support:Ljava/beans/PropertyChangeSupport;
            ldc "container"
            aload 2 /* oldContainer */
            aload 0 /* this */
            getfield org.apache.catalina.realm.RealmBase.container:Lorg/apache/catalina/Container;
            invokevirtual java.beans.PropertyChangeSupport.firePropertyChange:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
         3: .line 206
            return
        end local 2 // org.apache.catalina.Container oldContainer
        end local 1 // org.apache.catalina.Container container
        end local 0 // org.apache.catalina.realm.RealmBase this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    4     0          this  Lorg/apache/catalina/realm/RealmBase;
            0    4     1     container  Lorg/apache/catalina/Container;
            1    4     2  oldContainer  Lorg/apache/catalina/Container;
    MethodParameters:
           Name  Flags
      container  

  public java.lang.String getAllRolesMode();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.catalina.realm.RealmBase this
         0: .line 213
            aload 0 /* this */
            getfield org.apache.catalina.realm.RealmBase.allRolesMode:Lorg/apache/catalina/realm/RealmBase$AllRolesMode;
            invokevirtual org.apache.catalina.realm.RealmBase$AllRolesMode.toString:()Ljava/lang/String;
            areturn
        end local 0 // org.apache.catalina.realm.RealmBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/catalina/realm/RealmBase;

  public void setAllRolesMode(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.catalina.realm.RealmBase this
        start local 1 // java.lang.String allRolesMode
         0: .line 222
            aload 0 /* this */
            aload 1 /* allRolesMode */
            invokestatic org.apache.catalina.realm.RealmBase$AllRolesMode.toMode:(Ljava/lang/String;)Lorg/apache/catalina/realm/RealmBase$AllRolesMode;
            putfield org.apache.catalina.realm.RealmBase.allRolesMode:Lorg/apache/catalina/realm/RealmBase$AllRolesMode;
         1: .line 223
            return
        end local 1 // java.lang.String allRolesMode
        end local 0 // org.apache.catalina.realm.RealmBase this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    2     0          this  Lorg/apache/catalina/realm/RealmBase;
            0    2     1  allRolesMode  Ljava/lang/String;
    MethodParameters:
              Name  Flags
      allRolesMode  

  public boolean getValidate();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.catalina.realm.RealmBase this
         0: .line 231
            aload 0 /* this */
            getfield org.apache.catalina.realm.RealmBase.validate:Z
            ireturn
        end local 0 // org.apache.catalina.realm.RealmBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/catalina/realm/RealmBase;

  public void setValidate(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.catalina.realm.RealmBase this
        start local 1 // boolean validate
         0: .line 242
            aload 0 /* this */
            iload 1 /* validate */
            putfield org.apache.catalina.realm.RealmBase.validate:Z
         1: .line 244
            return
        end local 1 // boolean validate
        end local 0 // org.apache.catalina.realm.RealmBase this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0      this  Lorg/apache/catalina/realm/RealmBase;
            0    2     1  validate  Z
    MethodParameters:
          Name  Flags
      validate  

  public java.lang.String getX509UsernameRetrieverClassName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.catalina.realm.RealmBase this
         0: .line 253
            aload 0 /* this */
            getfield org.apache.catalina.realm.RealmBase.x509UsernameRetrieverClassName:Ljava/lang/String;
            areturn
        end local 0 // org.apache.catalina.realm.RealmBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/catalina/realm/RealmBase;

  public void setX509UsernameRetrieverClassName(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.catalina.realm.RealmBase this
        start local 1 // java.lang.String className
         0: .line 266
            aload 0 /* this */
            aload 1 /* className */
            putfield org.apache.catalina.realm.RealmBase.x509UsernameRetrieverClassName:Ljava/lang/String;
         1: .line 267
            return
        end local 1 // java.lang.String className
        end local 0 // org.apache.catalina.realm.RealmBase this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0       this  Lorg/apache/catalina/realm/RealmBase;
            0    2     1  className  Ljava/lang/String;
    MethodParameters:
           Name  Flags
      className  

  public boolean isStripRealmForGss();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.catalina.realm.RealmBase this
         0: .line 270
            aload 0 /* this */
            getfield org.apache.catalina.realm.RealmBase.stripRealmForGss:Z
            ireturn
        end local 0 // org.apache.catalina.realm.RealmBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/catalina/realm/RealmBase;

  public void setStripRealmForGss(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.catalina.realm.RealmBase this
        start local 1 // boolean stripRealmForGss
         0: .line 275
            aload 0 /* this */
            iload 1 /* stripRealmForGss */
            putfield org.apache.catalina.realm.RealmBase.stripRealmForGss:Z
         1: .line 276
            return
        end local 1 // boolean stripRealmForGss
        end local 0 // org.apache.catalina.realm.RealmBase this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    2     0              this  Lorg/apache/catalina/realm/RealmBase;
            0    2     1  stripRealmForGss  Z
    MethodParameters:
                  Name  Flags
      stripRealmForGss  

  public void addPropertyChangeListener(java.beans.PropertyChangeListener);
    descriptor: (Ljava/beans/PropertyChangeListener;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.catalina.realm.RealmBase this
        start local 1 // java.beans.PropertyChangeListener listener
         0: .line 290
            aload 0 /* this */
            getfield org.apache.catalina.realm.RealmBase.support:Ljava/beans/PropertyChangeSupport;
            aload 1 /* listener */
            invokevirtual java.beans.PropertyChangeSupport.addPropertyChangeListener:(Ljava/beans/PropertyChangeListener;)V
         1: .line 292
            return
        end local 1 // java.beans.PropertyChangeListener listener
        end local 0 // org.apache.catalina.realm.RealmBase this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0      this  Lorg/apache/catalina/realm/RealmBase;
            0    2     1  listener  Ljava/beans/PropertyChangeListener;
    MethodParameters:
          Name  Flags
      listener  

  public java.security.Principal authenticate(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/security/Principal;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=2, args_size=2
        start local 0 // org.apache.catalina.realm.RealmBase this
        start local 1 // java.lang.String username
         0: .line 304
            aload 1 /* username */
            ifnonnull 2
         1: .line 305
            aconst_null
            areturn
         2: .line 308
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.catalina.realm.RealmBase.containerLog:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isTraceEnabled:()Z
            ifeq 4
         3: .line 309
            aload 0 /* this */
            getfield org.apache.catalina.realm.RealmBase.containerLog:Lorg/apache/juli/logging/Log;
            getstatic org.apache.catalina.realm.RealmBase.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "realmBase.authenticateSuccess"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* username */
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface org.apache.juli.logging.Log.trace:(Ljava/lang/Object;)V
         4: .line 312
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* username */
            invokevirtual org.apache.catalina.realm.RealmBase.getPrincipal:(Ljava/lang/String;)Ljava/security/Principal;
            areturn
        end local 1 // java.lang.String username
        end local 0 // org.apache.catalina.realm.RealmBase this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    5     0      this  Lorg/apache/catalina/realm/RealmBase;
            0    5     1  username  Ljava/lang/String;
    MethodParameters:
          Name  Flags
      username  

  public java.security.Principal authenticate(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Ljava/security/Principal;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=5, args_size=3
        start local 0 // org.apache.catalina.realm.RealmBase this
        start local 1 // java.lang.String username
        start local 2 // java.lang.String credentials
         0: .line 329
            aload 1 /* username */
            ifnull 1
            aload 2 /* credentials */
            ifnonnull 6
         1: .line 330
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.catalina.realm.RealmBase.containerLog:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isTraceEnabled:()Z
            ifeq 5
         2: .line 331
            aload 0 /* this */
            getfield org.apache.catalina.realm.RealmBase.containerLog:Lorg/apache/juli/logging/Log;
            getstatic org.apache.catalina.realm.RealmBase.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "realmBase.authenticateFailure"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
         3: .line 332
            aload 1 /* username */
            aastore
         4: .line 331
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface org.apache.juli.logging.Log.trace:(Ljava/lang/Object;)V
         5: .line 334
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
         6: .line 338
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* username */
            invokevirtual org.apache.catalina.realm.RealmBase.getPassword:(Ljava/lang/String;)Ljava/lang/String;
            astore 3 /* serverCredentials */
        start local 3 // java.lang.String serverCredentials
         7: .line 340
            aload 3 /* serverCredentials */
            ifnonnull 14
         8: .line 343
            aload 0 /* this */
            invokevirtual org.apache.catalina.realm.RealmBase.getCredentialHandler:()Lorg/apache/catalina/CredentialHandler;
            aload 2 /* credentials */
            invokeinterface org.apache.catalina.CredentialHandler.mutate:(Ljava/lang/String;)Ljava/lang/String;
            pop
         9: .line 345
            aload 0 /* this */
            getfield org.apache.catalina.realm.RealmBase.containerLog:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isTraceEnabled:()Z
            ifeq 13
        10: .line 346
            aload 0 /* this */
            getfield org.apache.catalina.realm.RealmBase.containerLog:Lorg/apache/juli/logging/Log;
            getstatic org.apache.catalina.realm.RealmBase.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "realmBase.authenticateFailure"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
        11: .line 347
            aload 1 /* username */
            aastore
        12: .line 346
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface org.apache.juli.logging.Log.trace:(Ljava/lang/Object;)V
        13: .line 349
      StackMap locals: java.lang.String
      StackMap stack:
            aconst_null
            areturn
        14: .line 352
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.apache.catalina.realm.RealmBase.getCredentialHandler:()Lorg/apache/catalina/CredentialHandler;
            aload 2 /* credentials */
            aload 3 /* serverCredentials */
            invokeinterface org.apache.catalina.CredentialHandler.matches:(Ljava/lang/String;Ljava/lang/String;)Z
            istore 4 /* validated */
        start local 4 // boolean validated
        15: .line 354
            iload 4 /* validated */
            ifeq 21
        16: .line 355
            aload 0 /* this */
            getfield org.apache.catalina.realm.RealmBase.containerLog:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isTraceEnabled:()Z
            ifeq 20
        17: .line 356
            aload 0 /* this */
            getfield org.apache.catalina.realm.RealmBase.containerLog:Lorg/apache/juli/logging/Log;
            getstatic org.apache.catalina.realm.RealmBase.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "realmBase.authenticateSuccess"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
        18: .line 357
            aload 1 /* username */
            aastore
        19: .line 356
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface org.apache.juli.logging.Log.trace:(Ljava/lang/Object;)V
        20: .line 359
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            aload 1 /* username */
            invokevirtual org.apache.catalina.realm.RealmBase.getPrincipal:(Ljava/lang/String;)Ljava/security/Principal;
            areturn
        21: .line 361
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.catalina.realm.RealmBase.containerLog:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isTraceEnabled:()Z
            ifeq 25
        22: .line 362
            aload 0 /* this */
            getfield org.apache.catalina.realm.RealmBase.containerLog:Lorg/apache/juli/logging/Log;
            getstatic org.apache.catalina.realm.RealmBase.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "realmBase.authenticateFailure"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
        23: .line 363
            aload 1 /* username */
            aastore
        24: .line 362
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface org.apache.juli.logging.Log.trace:(Ljava/lang/Object;)V
        25: .line 365
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 4 // boolean validated
        end local 3 // java.lang.String serverCredentials
        end local 2 // java.lang.String credentials
        end local 1 // java.lang.String username
        end local 0 // org.apache.catalina.realm.RealmBase this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   26     0               this  Lorg/apache/catalina/realm/RealmBase;
            0   26     1           username  Ljava/lang/String;
            0   26     2        credentials  Ljava/lang/String;
            7   26     3  serverCredentials  Ljava/lang/String;
           15   26     4          validated  Z
    MethodParameters:
             Name  Flags
      username     
      credentials  

  public java.security.Principal authenticate(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/security/Principal;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=13, args_size=9
        start local 0 // org.apache.catalina.realm.RealmBase this
        start local 1 // java.lang.String username
        start local 2 // java.lang.String clientDigest
        start local 3 // java.lang.String nonce
        start local 4 // java.lang.String nc
        start local 5 // java.lang.String cnonce
        start local 6 // java.lang.String qop
        start local 7 // java.lang.String realm
        start local 8 // java.lang.String md5a2
         0: .line 395
            aload 0 /* this */
            aload 1 /* username */
            aload 7 /* realm */
            invokevirtual org.apache.catalina.realm.RealmBase.getDigest:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            astore 9 /* md5a1 */
        start local 9 // java.lang.String md5a1
         1: .line 396
            aload 9 /* md5a1 */
            ifnonnull 3
         2: .line 397
            aconst_null
            areturn
         3: .line 398
      StackMap locals: java.lang.String
      StackMap stack:
            aload 9 /* md5a1 */
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String;
            astore 9 /* md5a1 */
         4: .line 400
            aload 6 /* qop */
            ifnonnull 7
         5: .line 401
            new java.lang.StringBuilder
            dup
            aload 9 /* md5a1 */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 3 /* nonce */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 8 /* md5a2 */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 10 /* serverDigestValue */
        start local 10 // java.lang.String serverDigestValue
         6: .line 402
            goto 10
        end local 10 // java.lang.String serverDigestValue
         7: .line 403
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            aload 9 /* md5a1 */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 3 /* nonce */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 4 /* nc */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         8: .line 404
            aload 5 /* cnonce */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 6 /* qop */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 8 /* md5a2 */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         9: .line 403
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 10 /* serverDigestValue */
        start local 10 // java.lang.String serverDigestValue
        10: .line 407
      StackMap locals: java.lang.String
      StackMap stack:
            aconst_null
            astore 11 /* valueBytes */
        start local 11 // byte[] valueBytes
        11: .line 409
            aload 10 /* serverDigestValue */
            aload 0 /* this */
            invokevirtual org.apache.catalina.realm.RealmBase.getDigestCharset:()Ljava/nio/charset/Charset;
            invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
            astore 11 /* valueBytes */
        12: .line 410
            goto 15
      StackMap locals: org.apache.catalina.realm.RealmBase java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String byte[]
      StackMap stack: java.io.UnsupportedEncodingException
        13: astore 12 /* uee */
        start local 12 // java.io.UnsupportedEncodingException uee
        14: .line 411
            new java.lang.IllegalArgumentException
            dup
            getstatic org.apache.catalina.realm.RealmBase.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "realmBase.invalidDigestEncoding"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            invokevirtual org.apache.catalina.realm.RealmBase.getDigestEncoding:()Ljava/lang/String;
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            aload 12 /* uee */
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 12 // java.io.UnsupportedEncodingException uee
        15: .line 414
      StackMap locals:
      StackMap stack:
            iconst_1
            anewarray byte[]
            dup
            iconst_0
            aload 11 /* valueBytes */
            aastore
            invokestatic org.apache.tomcat.util.security.ConcurrentMessageDigest.digestMD5:([[B)[B
            invokestatic org.apache.tomcat.util.security.MD5Encoder.encode:([B)Ljava/lang/String;
            astore 12 /* serverDigest */
        start local 12 // java.lang.String serverDigest
        16: .line 416
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 23
        17: .line 417
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Digest : "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* clientDigest */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " Username:"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* username */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        18: .line 418
            ldc " ClientDigest:"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* clientDigest */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " nonce:"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 3 /* nonce */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        19: .line 419
            ldc " nc:"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 4 /* nc */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " cnonce:"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 5 /* cnonce */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " qop:"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 6 /* qop */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        20: .line 420
            ldc " realm:"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 7 /* realm */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "md5a2:"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 8 /* md5a2 */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        21: .line 421
            ldc " Server digest:"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 12 /* serverDigest */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        22: .line 417
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
        23: .line 424
      StackMap locals: java.lang.String
      StackMap stack:
            aload 12 /* serverDigest */
            aload 2 /* clientDigest */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 25
        24: .line 425
            aload 0 /* this */
            aload 1 /* username */
            invokevirtual org.apache.catalina.realm.RealmBase.getPrincipal:(Ljava/lang/String;)Ljava/security/Principal;
            areturn
        25: .line 428
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 12 // java.lang.String serverDigest
        end local 11 // byte[] valueBytes
        end local 10 // java.lang.String serverDigestValue
        end local 9 // java.lang.String md5a1
        end local 8 // java.lang.String md5a2
        end local 7 // java.lang.String realm
        end local 6 // java.lang.String qop
        end local 5 // java.lang.String cnonce
        end local 4 // java.lang.String nc
        end local 3 // java.lang.String nonce
        end local 2 // java.lang.String clientDigest
        end local 1 // java.lang.String username
        end local 0 // org.apache.catalina.realm.RealmBase this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   26     0               this  Lorg/apache/catalina/realm/RealmBase;
            0   26     1           username  Ljava/lang/String;
            0   26     2       clientDigest  Ljava/lang/String;
            0   26     3              nonce  Ljava/lang/String;
            0   26     4                 nc  Ljava/lang/String;
            0   26     5             cnonce  Ljava/lang/String;
            0   26     6                qop  Ljava/lang/String;
            0   26     7              realm  Ljava/lang/String;
            0   26     8              md5a2  Ljava/lang/String;
            1   26     9              md5a1  Ljava/lang/String;
            6    7    10  serverDigestValue  Ljava/lang/String;
           10   26    10  serverDigestValue  Ljava/lang/String;
           11   26    11         valueBytes  [B
           14   15    12                uee  Ljava/io/UnsupportedEncodingException;
           16   26    12       serverDigest  Ljava/lang/String;
      Exception table:
        from    to  target  type
          11    12      13  Class java.io.UnsupportedEncodingException
    MethodParameters:
              Name  Flags
      username      
      clientDigest  
      nonce         
      nc            
      cnonce        
      qop           
      realm         
      md5a2         

  public java.security.Principal authenticate(java.security.cert.X509Certificate[]);
    descriptor: ([Ljava/security/cert/X509Certificate;)Ljava/security/Principal;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=7, args_size=2
        start local 0 // org.apache.catalina.realm.RealmBase this
        start local 1 // java.security.cert.X509Certificate[] certs
         0: .line 442
            aload 1 /* certs */
            ifnull 1
            aload 1 /* certs */
            arraylength
            iconst_1
            if_icmpge 2
         1: .line 443
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
         2: .line 446
      StackMap locals:
      StackMap stack:
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 4
         3: .line 447
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            ldc "Authenticating client certificate chain"
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
         4: .line 448
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.catalina.realm.RealmBase.validate:Z
            ifeq 19
         5: .line 449
            aload 1 /* certs */
            dup
            astore 5
            arraylength
            istore 4
            iconst_0
            istore 3
            goto 18
      StackMap locals: org.apache.catalina.realm.RealmBase java.security.cert.X509Certificate[] top int int java.security.cert.X509Certificate[]
      StackMap stack:
         6: aload 5
            iload 3
            aaload
            astore 2 /* cert */
        start local 2 // java.security.cert.X509Certificate cert
         7: .line 450
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 11
         8: .line 451
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc " Checking validity for '"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         9: .line 452
            aload 2 /* cert */
            invokevirtual java.security.cert.X509Certificate.getSubjectDN:()Ljava/security/Principal;
            invokeinterface java.security.Principal.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "'"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        10: .line 451
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
        11: .line 454
      StackMap locals: org.apache.catalina.realm.RealmBase java.security.cert.X509Certificate[] java.security.cert.X509Certificate int int java.security.cert.X509Certificate[]
      StackMap stack:
            aload 2 /* cert */
            invokevirtual java.security.cert.X509Certificate.checkValidity:()V
        12: .line 455
            goto 17
      StackMap locals:
      StackMap stack: java.lang.Exception
        13: astore 6 /* e */
        start local 6 // java.lang.Exception e
        14: .line 456
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 16
        15: .line 457
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            ldc "  Validity exception"
            aload 6 /* e */
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        16: .line 458
      StackMap locals: java.lang.Exception
      StackMap stack:
            aconst_null
            areturn
        end local 6 // java.lang.Exception e
        end local 2 // java.security.cert.X509Certificate cert
        17: .line 449
      StackMap locals: org.apache.catalina.realm.RealmBase java.security.cert.X509Certificate[] top int int java.security.cert.X509Certificate[]
      StackMap stack:
            iinc 3 1
      StackMap locals:
      StackMap stack:
        18: iload 3
            iload 4
            if_icmplt 6
        19: .line 464
      StackMap locals: org.apache.catalina.realm.RealmBase java.security.cert.X509Certificate[]
      StackMap stack:
            aload 0 /* this */
            aload 1 /* certs */
            iconst_0
            aaload
            invokevirtual org.apache.catalina.realm.RealmBase.getPrincipal:(Ljava/security/cert/X509Certificate;)Ljava/security/Principal;
            areturn
        end local 1 // java.security.cert.X509Certificate[] certs
        end local 0 // org.apache.catalina.realm.RealmBase this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   20     0   this  Lorg/apache/catalina/realm/RealmBase;
            0   20     1  certs  [Ljava/security/cert/X509Certificate;
            7   17     2   cert  Ljava/security/cert/X509Certificate;
           14   17     6      e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
          11    12      13  Class java.lang.Exception
    MethodParameters:
       Name  Flags
      certs  

  public java.security.Principal authenticate(org.ietf.jgss.GSSContext, boolean);
    descriptor: (Lorg/ietf/jgss/GSSContext;Z)Ljava/security/Principal;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=6, args_size=3
        start local 0 // org.apache.catalina.realm.RealmBase this
        start local 1 // org.ietf.jgss.GSSContext gssContext
        start local 2 // boolean storeCred
         0: .line 473
            aload 1 /* gssContext */
            invokeinterface org.ietf.jgss.GSSContext.isEstablished:()Z
            ifeq 24
         1: .line 474
            aconst_null
            astore 3 /* gssName */
        start local 3 // org.ietf.jgss.GSSName gssName
         2: .line 476
            aload 1 /* gssContext */
            invokeinterface org.ietf.jgss.GSSContext.getSrcName:()Lorg/ietf/jgss/GSSName;
            astore 3 /* gssName */
         3: .line 477
            goto 6
      StackMap locals: org.apache.catalina.realm.RealmBase org.ietf.jgss.GSSContext int org.ietf.jgss.GSSName
      StackMap stack: org.ietf.jgss.GSSException
         4: astore 4 /* e */
        start local 4 // org.ietf.jgss.GSSException e
         5: .line 478
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            getstatic org.apache.catalina.realm.RealmBase.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "realmBase.gssNameFail"
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
            aload 4 /* e */
            invokeinterface org.apache.juli.logging.Log.warn:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        end local 4 // org.ietf.jgss.GSSException e
         6: .line 481
      StackMap locals:
      StackMap stack:
            aload 3 /* gssName */
            ifnull 25
         7: .line 482
            aconst_null
            astore 4 /* gssCredential */
        start local 4 // org.ietf.jgss.GSSCredential gssCredential
         8: .line 483
            iload 2 /* storeCred */
            ifeq 23
         9: .line 484
            aload 1 /* gssContext */
            invokeinterface org.ietf.jgss.GSSContext.getCredDelegState:()Z
            ifeq 19
        10: .line 486
            aload 1 /* gssContext */
            invokeinterface org.ietf.jgss.GSSContext.getDelegCred:()Lorg/ietf/jgss/GSSCredential;
            astore 4 /* gssCredential */
        11: .line 487
            goto 23
      StackMap locals: org.apache.catalina.realm.RealmBase org.ietf.jgss.GSSContext int org.ietf.jgss.GSSName org.ietf.jgss.GSSCredential
      StackMap stack: org.ietf.jgss.GSSException
        12: astore 5 /* e */
        start local 5 // org.ietf.jgss.GSSException e
        13: .line 488
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            getstatic org.apache.catalina.realm.RealmBase.sm:Lorg/apache/tomcat/util/res/StringManager;
        14: .line 489
            ldc "realmBase.delegatedCredentialFail"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 3 /* gssName */
            aastore
        15: .line 488
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
        16: .line 489
            aload 5 /* e */
        17: .line 488
            invokeinterface org.apache.juli.logging.Log.warn:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        end local 5 // org.ietf.jgss.GSSException e
        18: .line 491
            goto 23
        19: .line 492
      StackMap locals:
      StackMap stack:
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 23
        20: .line 493
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            getstatic org.apache.catalina.realm.RealmBase.sm:Lorg/apache/tomcat/util/res/StringManager;
        21: .line 494
            ldc "realmBase.credentialNotDelegated"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 3 /* gssName */
            aastore
        22: .line 493
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
        23: .line 499
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 3 /* gssName */
            aload 4 /* gssCredential */
            invokevirtual org.apache.catalina.realm.RealmBase.getPrincipal:(Lorg/ietf/jgss/GSSName;Lorg/ietf/jgss/GSSCredential;)Ljava/security/Principal;
            areturn
        end local 4 // org.ietf.jgss.GSSCredential gssCredential
        end local 3 // org.ietf.jgss.GSSName gssName
        24: .line 502
      StackMap locals:
      StackMap stack:
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            getstatic org.apache.catalina.realm.RealmBase.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "realmBase.gssContextNotEstablished"
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokeinterface org.apache.juli.logging.Log.error:(Ljava/lang/Object;)V
        25: .line 506
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 2 // boolean storeCred
        end local 1 // org.ietf.jgss.GSSContext gssContext
        end local 0 // org.apache.catalina.realm.RealmBase this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   26     0           this  Lorg/apache/catalina/realm/RealmBase;
            0   26     1     gssContext  Lorg/ietf/jgss/GSSContext;
            0   26     2      storeCred  Z
            2   24     3        gssName  Lorg/ietf/jgss/GSSName;
            5    6     4              e  Lorg/ietf/jgss/GSSException;
            8   24     4  gssCredential  Lorg/ietf/jgss/GSSCredential;
           13   18     5              e  Lorg/ietf/jgss/GSSException;
      Exception table:
        from    to  target  type
           2     3       4  Class org.ietf.jgss.GSSException
          10    11      12  Class org.ietf.jgss.GSSException
    MethodParameters:
            Name  Flags
      gssContext  
      storeCred   

  public java.security.Principal authenticate(org.ietf.jgss.GSSName, org.ietf.jgss.GSSCredential);
    descriptor: (Lorg/ietf/jgss/GSSName;Lorg/ietf/jgss/GSSCredential;)Ljava/security/Principal;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.apache.catalina.realm.RealmBase this
        start local 1 // org.ietf.jgss.GSSName gssName
        start local 2 // org.ietf.jgss.GSSCredential gssCredential
         0: .line 515
            aload 1 /* gssName */
            ifnonnull 2
         1: .line 516
            aconst_null
            areturn
         2: .line 519
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* gssName */
            aload 2 /* gssCredential */
            invokevirtual org.apache.catalina.realm.RealmBase.getPrincipal:(Lorg/ietf/jgss/GSSName;Lorg/ietf/jgss/GSSCredential;)Ljava/security/Principal;
            areturn
        end local 2 // org.ietf.jgss.GSSCredential gssCredential
        end local 1 // org.ietf.jgss.GSSName gssName
        end local 0 // org.apache.catalina.realm.RealmBase this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    3     0           this  Lorg/apache/catalina/realm/RealmBase;
            0    3     1        gssName  Lorg/ietf/jgss/GSSName;
            0    3     2  gssCredential  Lorg/ietf/jgss/GSSCredential;
    MethodParameters:
               Name  Flags
      gssName        
      gssCredential  

  public void backgroundProcess();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=0, locals=1, args_size=1
        start local 0 // org.apache.catalina.realm.RealmBase this
         0: .line 531
            return
        end local 0 // org.apache.catalina.realm.RealmBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/catalina/realm/RealmBase;

  public org.apache.tomcat.util.descriptor.web.SecurityConstraint[] findSecurityConstraints(org.apache.catalina.connector.Request, org.apache.catalina.Context);
    descriptor: (Lorg/apache/catalina/connector/Request;Lorg/apache/catalina/Context;)[Lorg/apache/tomcat/util/descriptor/web/SecurityConstraint;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=22, args_size=3
        start local 0 // org.apache.catalina.realm.RealmBase this
        start local 1 // org.apache.catalina.connector.Request request
        start local 2 // org.apache.catalina.Context context
         0: .line 545
            aconst_null
            astore 3 /* results */
        start local 3 // java.util.ArrayList results
         1: .line 547
            aload 2 /* context */
            invokeinterface org.apache.catalina.Context.findConstraints:()[Lorg/apache/tomcat/util/descriptor/web/SecurityConstraint;
            astore 4 /* constraints */
        start local 4 // org.apache.tomcat.util.descriptor.web.SecurityConstraint[] constraints
         2: .line 548
            aload 4 /* constraints */
            ifnull 3
            aload 4 /* constraints */
            arraylength
            ifne 6
         3: .line 549
      StackMap locals: java.util.ArrayList org.apache.tomcat.util.descriptor.web.SecurityConstraint[]
      StackMap stack:
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 5
         4: .line 550
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            ldc "  No applicable constraints defined"
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
         5: .line 551
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
         6: .line 555
      StackMap locals:
      StackMap stack:
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getRequestPathMB:()Lorg/apache/tomcat/util/buf/MessageBytes;
            invokevirtual org.apache.tomcat.util.buf.MessageBytes.toString:()Ljava/lang/String;
            astore 5 /* uri */
        start local 5 // java.lang.String uri
         7: .line 558
            aload 5 /* uri */
            ifnull 8
            aload 5 /* uri */
            invokevirtual java.lang.String.length:()I
            ifne 9
         8: .line 559
      StackMap locals: java.lang.String
      StackMap stack:
            ldc "/"
            astore 5 /* uri */
         9: .line 562
      StackMap locals:
      StackMap stack:
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getMethod:()Ljava/lang/String;
            astore 6 /* method */
        start local 6 // java.lang.String method
        10: .line 564
            iconst_0
            istore 8 /* found */
        start local 8 // boolean found
        11: .line 565
            iconst_0
            istore 7 /* i */
        start local 7 // int i
        12: goto 39
        13: .line 566
      StackMap locals: java.lang.String int int
      StackMap stack:
            aload 4 /* constraints */
            iload 7 /* i */
            aaload
            invokevirtual org.apache.tomcat.util.descriptor.web.SecurityConstraint.findCollections:()[Lorg/apache/tomcat/util/descriptor/web/SecurityCollection;
            astore 9 /* collections */
        start local 9 // org.apache.tomcat.util.descriptor.web.SecurityCollection[] collections
        14: .line 570
            aload 9 /* collections */
            ifnonnull 16
        15: .line 571
            goto 38
        16: .line 574
      StackMap locals: org.apache.tomcat.util.descriptor.web.SecurityCollection[]
      StackMap stack:
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 21
        17: .line 575
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "  Checking constraint '"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* constraints */
            iload 7 /* i */
            aaload
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
        18: .line 576
            ldc "' against "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 6 /* method */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 5 /* uri */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " --> "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        19: .line 577
            aload 4 /* constraints */
            iload 7 /* i */
            aaload
            aload 5 /* uri */
            aload 6 /* method */
            invokevirtual org.apache.tomcat.util.descriptor.web.SecurityConstraint.included:(Ljava/lang/String;Ljava/lang/String;)Z
            invokevirtual java.lang.StringBuilder.append:(Z)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        20: .line 575
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
        21: .line 580
      StackMap locals:
      StackMap stack:
            aload 9 /* collections */
            dup
            astore 13
            arraylength
            istore 12
            iconst_0
            istore 11
            goto 37
      StackMap locals: org.apache.catalina.realm.RealmBase org.apache.catalina.connector.Request org.apache.catalina.Context java.util.ArrayList org.apache.tomcat.util.descriptor.web.SecurityConstraint[] java.lang.String java.lang.String int int org.apache.tomcat.util.descriptor.web.SecurityCollection[] top int int org.apache.tomcat.util.descriptor.web.SecurityCollection[]
      StackMap stack:
        22: aload 13
            iload 11
            aaload
            astore 10 /* securityCollection */
        start local 10 // org.apache.tomcat.util.descriptor.web.SecurityCollection securityCollection
        23: .line 581
            aload 10 /* securityCollection */
            invokevirtual org.apache.tomcat.util.descriptor.web.SecurityCollection.findPatterns:()[Ljava/lang/String;
            astore 14 /* patterns */
        start local 14 // java.lang.String[] patterns
        24: .line 585
            aload 14 /* patterns */
            ifnonnull 26
        25: .line 586
            goto 36
        26: .line 589
      StackMap locals: org.apache.catalina.realm.RealmBase org.apache.catalina.connector.Request org.apache.catalina.Context java.util.ArrayList org.apache.tomcat.util.descriptor.web.SecurityConstraint[] java.lang.String java.lang.String int int org.apache.tomcat.util.descriptor.web.SecurityCollection[] org.apache.tomcat.util.descriptor.web.SecurityCollection int int org.apache.tomcat.util.descriptor.web.SecurityCollection[] java.lang.String[]
      StackMap stack:
            aload 14 /* patterns */
            dup
            astore 18
            arraylength
            istore 17
            iconst_0
            istore 16
            goto 35
      StackMap locals: org.apache.catalina.realm.RealmBase org.apache.catalina.connector.Request org.apache.catalina.Context java.util.ArrayList org.apache.tomcat.util.descriptor.web.SecurityConstraint[] java.lang.String java.lang.String int int org.apache.tomcat.util.descriptor.web.SecurityCollection[] org.apache.tomcat.util.descriptor.web.SecurityCollection int int org.apache.tomcat.util.descriptor.web.SecurityCollection[] java.lang.String[] top int int java.lang.String[]
      StackMap stack:
        27: aload 18
            iload 16
            aaload
            astore 15 /* pattern */
        start local 15 // java.lang.String pattern
        28: .line 591
            aload 5 /* uri */
            aload 15 /* pattern */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 29
            aload 15 /* pattern */
            invokevirtual java.lang.String.length:()I
            ifne 34
            aload 5 /* uri */
            ldc "/"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 34
        29: .line 592
      StackMap locals: org.apache.catalina.realm.RealmBase org.apache.catalina.connector.Request org.apache.catalina.Context java.util.ArrayList org.apache.tomcat.util.descriptor.web.SecurityConstraint[] java.lang.String java.lang.String int int org.apache.tomcat.util.descriptor.web.SecurityCollection[] org.apache.tomcat.util.descriptor.web.SecurityCollection int int org.apache.tomcat.util.descriptor.web.SecurityCollection[] java.lang.String[] java.lang.String int int java.lang.String[]
      StackMap stack:
            iconst_1
            istore 8 /* found */
        30: .line 593
            aload 10 /* securityCollection */
            aload 6 /* method */
            invokevirtual org.apache.tomcat.util.descriptor.web.SecurityCollection.findMethod:(Ljava/lang/String;)Z
            ifeq 34
        31: .line 594
            aload 3 /* results */
            ifnonnull 33
        32: .line 595
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 3 /* results */
        33: .line 597
      StackMap locals:
      StackMap stack:
            aload 3 /* results */
            aload 4 /* constraints */
            iload 7 /* i */
            aaload
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        end local 15 // java.lang.String pattern
        34: .line 589
      StackMap locals: org.apache.catalina.realm.RealmBase org.apache.catalina.connector.Request org.apache.catalina.Context java.util.ArrayList org.apache.tomcat.util.descriptor.web.SecurityConstraint[] java.lang.String java.lang.String int int org.apache.tomcat.util.descriptor.web.SecurityCollection[] org.apache.tomcat.util.descriptor.web.SecurityCollection int int org.apache.tomcat.util.descriptor.web.SecurityCollection[] java.lang.String[] top int int java.lang.String[]
      StackMap stack:
            iinc 16 1
      StackMap locals:
      StackMap stack:
        35: iload 16
            iload 17
            if_icmplt 27
        end local 14 // java.lang.String[] patterns
        end local 10 // org.apache.tomcat.util.descriptor.web.SecurityCollection securityCollection
        36: .line 580
      StackMap locals: org.apache.catalina.realm.RealmBase org.apache.catalina.connector.Request org.apache.catalina.Context java.util.ArrayList org.apache.tomcat.util.descriptor.web.SecurityConstraint[] java.lang.String java.lang.String int int org.apache.tomcat.util.descriptor.web.SecurityCollection[] top int int org.apache.tomcat.util.descriptor.web.SecurityCollection[]
      StackMap stack:
            iinc 11 1
      StackMap locals:
      StackMap stack:
        37: iload 11
            iload 12
            if_icmplt 22
        end local 9 // org.apache.tomcat.util.descriptor.web.SecurityCollection[] collections
        38: .line 565
      StackMap locals: org.apache.catalina.realm.RealmBase org.apache.catalina.connector.Request org.apache.catalina.Context java.util.ArrayList org.apache.tomcat.util.descriptor.web.SecurityConstraint[] java.lang.String java.lang.String int int
      StackMap stack:
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
        39: iload 7 /* i */
            aload 4 /* constraints */
            arraylength
            if_icmplt 13
        40: .line 604
            iload 8 /* found */
            ifeq 42
        41: .line 605
            aload 0 /* this */
            aload 3 /* results */
            invokevirtual org.apache.catalina.realm.RealmBase.resultsToArray:(Ljava/util/ArrayList;)[Lorg/apache/tomcat/util/descriptor/web/SecurityConstraint;
            areturn
        42: .line 608
      StackMap locals:
      StackMap stack:
            iconst_m1
            istore 9 /* longest */
        start local 9 // int longest
        43: .line 610
            iconst_0
            istore 7 /* i */
            goto 88
        44: .line 611
      StackMap locals: int
      StackMap stack:
            aload 4 /* constraints */
            iload 7 /* i */
            aaload
            invokevirtual org.apache.tomcat.util.descriptor.web.SecurityConstraint.findCollections:()[Lorg/apache/tomcat/util/descriptor/web/SecurityCollection;
            astore 10 /* collection */
        start local 10 // org.apache.tomcat.util.descriptor.web.SecurityCollection[] collection
        45: .line 615
            aload 10 /* collection */
            ifnonnull 47
        46: .line 616
            goto 87
        47: .line 619
      StackMap locals: org.apache.tomcat.util.descriptor.web.SecurityCollection[]
      StackMap stack:
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 52
        48: .line 620
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "  Checking constraint '"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* constraints */
            iload 7 /* i */
            aaload
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
        49: .line 621
            ldc "' against "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 6 /* method */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 5 /* uri */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " --> "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        50: .line 622
            aload 4 /* constraints */
            iload 7 /* i */
            aaload
            aload 5 /* uri */
            aload 6 /* method */
            invokevirtual org.apache.tomcat.util.descriptor.web.SecurityConstraint.included:(Ljava/lang/String;Ljava/lang/String;)Z
            invokevirtual java.lang.StringBuilder.append:(Z)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        51: .line 620
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
        52: .line 625
      StackMap locals:
      StackMap stack:
            aload 10 /* collection */
            dup
            astore 14
            arraylength
            istore 13
            iconst_0
            istore 12
            goto 86
      StackMap locals: org.apache.catalina.realm.RealmBase org.apache.catalina.connector.Request org.apache.catalina.Context java.util.ArrayList org.apache.tomcat.util.descriptor.web.SecurityConstraint[] java.lang.String java.lang.String int int int org.apache.tomcat.util.descriptor.web.SecurityCollection[] top int int org.apache.tomcat.util.descriptor.web.SecurityCollection[]
      StackMap stack:
        53: aload 14
            iload 12
            aaload
            astore 11 /* securityCollection */
        start local 11 // org.apache.tomcat.util.descriptor.web.SecurityCollection securityCollection
        54: .line 626
            aload 11 /* securityCollection */
            invokevirtual org.apache.tomcat.util.descriptor.web.SecurityCollection.findPatterns:()[Ljava/lang/String;
            astore 15 /* patterns */
        start local 15 // java.lang.String[] patterns
        55: .line 630
            aload 15 /* patterns */
            ifnonnull 57
        56: .line 631
            goto 85
        57: .line 634
      StackMap locals: org.apache.catalina.realm.RealmBase org.apache.catalina.connector.Request org.apache.catalina.Context java.util.ArrayList org.apache.tomcat.util.descriptor.web.SecurityConstraint[] java.lang.String java.lang.String int int int org.apache.tomcat.util.descriptor.web.SecurityCollection[] org.apache.tomcat.util.descriptor.web.SecurityCollection int int org.apache.tomcat.util.descriptor.web.SecurityCollection[] java.lang.String[]
      StackMap stack:
            iconst_0
            istore 16 /* matched */
        start local 16 // boolean matched
        58: .line 635
            iconst_m1
            istore 17 /* length */
        start local 17 // int length
        59: .line 636
            aload 15 /* patterns */
            dup
            astore 21
            arraylength
            istore 20
            iconst_0
            istore 19
            goto 73
      StackMap locals: org.apache.catalina.realm.RealmBase org.apache.catalina.connector.Request org.apache.catalina.Context java.util.ArrayList org.apache.tomcat.util.descriptor.web.SecurityConstraint[] java.lang.String java.lang.String int int int org.apache.tomcat.util.descriptor.web.SecurityCollection[] org.apache.tomcat.util.descriptor.web.SecurityCollection int int org.apache.tomcat.util.descriptor.web.SecurityCollection[] java.lang.String[] int int top int int java.lang.String[]
      StackMap stack:
        60: aload 21
            iload 19
            aaload
            astore 18 /* pattern */
        start local 18 // java.lang.String pattern
        61: .line 637
            aload 18 /* pattern */
            ldc "/"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 72
            aload 18 /* pattern */
            ldc "/*"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 72
        62: .line 638
            aload 18 /* pattern */
            invokevirtual java.lang.String.length:()I
            iload 9 /* longest */
            if_icmplt 72
        63: .line 640
            aload 18 /* pattern */
            invokevirtual java.lang.String.length:()I
            iconst_2
            if_icmpne 67
        64: .line 641
            iconst_1
            istore 16 /* matched */
        65: .line 642
            aload 18 /* pattern */
            invokevirtual java.lang.String.length:()I
            istore 17 /* length */
        66: .line 643
            goto 72
      StackMap locals: org.apache.catalina.realm.RealmBase org.apache.catalina.connector.Request org.apache.catalina.Context java.util.ArrayList org.apache.tomcat.util.descriptor.web.SecurityConstraint[] java.lang.String java.lang.String int int int org.apache.tomcat.util.descriptor.web.SecurityCollection[] org.apache.tomcat.util.descriptor.web.SecurityCollection int int org.apache.tomcat.util.descriptor.web.SecurityCollection[] java.lang.String[] int int java.lang.String int int java.lang.String[]
      StackMap stack:
        67: aload 18 /* pattern */
            iconst_0
            aload 5 /* uri */
            iconst_0
            aload 18 /* pattern */
            invokevirtual java.lang.String.length:()I
            iconst_1
            isub
            invokevirtual java.lang.String.regionMatches:(ILjava/lang/String;II)Z
            ifne 70
        68: .line 644
            aload 18 /* pattern */
            invokevirtual java.lang.String.length:()I
            iconst_2
            isub
            aload 5 /* uri */
            invokevirtual java.lang.String.length:()I
            if_icmpne 72
        69: .line 645
            aload 18 /* pattern */
            iconst_0
            aload 5 /* uri */
            iconst_0
            aload 18 /* pattern */
            invokevirtual java.lang.String.length:()I
            iconst_2
            isub
            invokevirtual java.lang.String.regionMatches:(ILjava/lang/String;II)Z
            ifeq 72
        70: .line 646
      StackMap locals:
      StackMap stack:
            iconst_1
            istore 16 /* matched */
        71: .line 647
            aload 18 /* pattern */
            invokevirtual java.lang.String.length:()I
            istore 17 /* length */
        end local 18 // java.lang.String pattern
        72: .line 636
      StackMap locals: org.apache.catalina.realm.RealmBase org.apache.catalina.connector.Request org.apache.catalina.Context java.util.ArrayList org.apache.tomcat.util.descriptor.web.SecurityConstraint[] java.lang.String java.lang.String int int int org.apache.tomcat.util.descriptor.web.SecurityCollection[] org.apache.tomcat.util.descriptor.web.SecurityCollection int int org.apache.tomcat.util.descriptor.web.SecurityCollection[] java.lang.String[] int int top int int java.lang.String[]
      StackMap stack:
            iinc 19 1
      StackMap locals:
      StackMap stack:
        73: iload 19
            iload 20
            if_icmplt 60
        74: .line 651
            iload 16 /* matched */
            ifeq 85
        75: .line 652
            iload 17 /* length */
            iload 9 /* longest */
            if_icmple 80
        76: .line 653
            iconst_0
            istore 8 /* found */
        77: .line 654
            aload 3 /* results */
            ifnull 79
        78: .line 655
            aload 3 /* results */
            invokevirtual java.util.ArrayList.clear:()V
        79: .line 657
      StackMap locals: org.apache.catalina.realm.RealmBase org.apache.catalina.connector.Request org.apache.catalina.Context java.util.ArrayList org.apache.tomcat.util.descriptor.web.SecurityConstraint[] java.lang.String java.lang.String int int int org.apache.tomcat.util.descriptor.web.SecurityCollection[] org.apache.tomcat.util.descriptor.web.SecurityCollection int int org.apache.tomcat.util.descriptor.web.SecurityCollection[] java.lang.String[] int int
      StackMap stack:
            iload 17 /* length */
            istore 9 /* longest */
        80: .line 659
      StackMap locals:
      StackMap stack:
            aload 11 /* securityCollection */
            aload 6 /* method */
            invokevirtual org.apache.tomcat.util.descriptor.web.SecurityCollection.findMethod:(Ljava/lang/String;)Z
            ifeq 85
        81: .line 660
            iconst_1
            istore 8 /* found */
        82: .line 661
            aload 3 /* results */
            ifnonnull 84
        83: .line 662
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 3 /* results */
        84: .line 664
      StackMap locals:
      StackMap stack:
            aload 3 /* results */
            aload 4 /* constraints */
            iload 7 /* i */
            aaload
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        end local 17 // int length
        end local 16 // boolean matched
        end local 15 // java.lang.String[] patterns
        end local 11 // org.apache.tomcat.util.descriptor.web.SecurityCollection securityCollection
        85: .line 625
      StackMap locals: org.apache.catalina.realm.RealmBase org.apache.catalina.connector.Request org.apache.catalina.Context java.util.ArrayList org.apache.tomcat.util.descriptor.web.SecurityConstraint[] java.lang.String java.lang.String int int int org.apache.tomcat.util.descriptor.web.SecurityCollection[] top int int org.apache.tomcat.util.descriptor.web.SecurityCollection[]
      StackMap stack:
            iinc 12 1
      StackMap locals:
      StackMap stack:
        86: iload 12
            iload 13
            if_icmplt 53
        end local 10 // org.apache.tomcat.util.descriptor.web.SecurityCollection[] collection
        87: .line 610
      StackMap locals: org.apache.catalina.realm.RealmBase org.apache.catalina.connector.Request org.apache.catalina.Context java.util.ArrayList org.apache.tomcat.util.descriptor.web.SecurityConstraint[] java.lang.String java.lang.String int int int
      StackMap stack:
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
        88: iload 7 /* i */
            aload 4 /* constraints */
            arraylength
            if_icmplt 44
        89: .line 670
            iload 8 /* found */
            ifeq 91
        90: .line 671
            aload 0 /* this */
            aload 3 /* results */
            invokevirtual org.apache.catalina.realm.RealmBase.resultsToArray:(Ljava/util/ArrayList;)[Lorg/apache/tomcat/util/descriptor/web/SecurityConstraint;
            areturn
        91: .line 674
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 7 /* i */
            goto 130
        92: .line 675
      StackMap locals:
      StackMap stack:
            aload 4 /* constraints */
            iload 7 /* i */
            aaload
            invokevirtual org.apache.tomcat.util.descriptor.web.SecurityConstraint.findCollections:()[Lorg/apache/tomcat/util/descriptor/web/SecurityCollection;
            astore 10 /* collection */
        start local 10 // org.apache.tomcat.util.descriptor.web.SecurityCollection[] collection
        93: .line 679
            aload 10 /* collection */
            ifnonnull 95
        94: .line 680
            goto 129
        95: .line 683
      StackMap locals: org.apache.tomcat.util.descriptor.web.SecurityCollection[]
      StackMap stack:
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 100
        96: .line 684
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "  Checking constraint '"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* constraints */
            iload 7 /* i */
            aaload
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
        97: .line 685
            ldc "' against "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 6 /* method */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 5 /* uri */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " --> "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        98: .line 686
            aload 4 /* constraints */
            iload 7 /* i */
            aaload
            aload 5 /* uri */
            aload 6 /* method */
            invokevirtual org.apache.tomcat.util.descriptor.web.SecurityConstraint.included:(Ljava/lang/String;Ljava/lang/String;)Z
            invokevirtual java.lang.StringBuilder.append:(Z)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        99: .line 684
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
       100: .line 689
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 11 /* matched */
        start local 11 // boolean matched
       101: .line 690
            iconst_m1
            istore 12 /* pos */
        start local 12 // int pos
       102: .line 691
            iconst_0
            istore 13 /* j */
        start local 13 // int j
       103: goto 122
       104: .line 692
      StackMap locals: int int int
      StackMap stack:
            aload 10 /* collection */
            iload 13 /* j */
            aaload
            invokevirtual org.apache.tomcat.util.descriptor.web.SecurityCollection.findPatterns:()[Ljava/lang/String;
            astore 14 /* patterns */
        start local 14 // java.lang.String[] patterns
       105: .line 696
            aload 14 /* patterns */
            ifnonnull 107
       106: .line 697
            goto 121
       107: .line 700
      StackMap locals: java.lang.String[]
      StackMap stack:
            iconst_0
            istore 15 /* k */
        start local 15 // int k
       108: goto 120
       109: .line 701
      StackMap locals: int
      StackMap stack:
            aload 14 /* patterns */
            iload 15 /* k */
            aaload
            astore 16 /* pattern */
        start local 16 // java.lang.String pattern
       110: .line 702
            aload 16 /* pattern */
            ldc "*."
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 119
       111: .line 703
            aload 5 /* uri */
            bipush 47
            invokevirtual java.lang.String.lastIndexOf:(I)I
            istore 17 /* slash */
        start local 17 // int slash
       112: .line 704
            aload 5 /* uri */
            bipush 46
            invokevirtual java.lang.String.lastIndexOf:(I)I
            istore 18 /* dot */
        start local 18 // int dot
       113: .line 705
            iload 17 /* slash */
            iflt 119
            iload 18 /* dot */
            iload 17 /* slash */
            if_icmple 119
       114: .line 706
            iload 18 /* dot */
            aload 5 /* uri */
            invokevirtual java.lang.String.length:()I
            iconst_1
            isub
            if_icmpeq 119
       115: .line 707
            aload 5 /* uri */
            invokevirtual java.lang.String.length:()I
            iload 18 /* dot */
            isub
            aload 16 /* pattern */
            invokevirtual java.lang.String.length:()I
            iconst_1
            isub
            if_icmpne 119
       116: .line 708
            aload 16 /* pattern */
            iconst_1
            aload 5 /* uri */
            iload 18 /* dot */
            aload 5 /* uri */
            invokevirtual java.lang.String.length:()I
            iload 18 /* dot */
            isub
            invokevirtual java.lang.String.regionMatches:(ILjava/lang/String;II)Z
            ifeq 119
       117: .line 709
            iconst_1
            istore 11 /* matched */
       118: .line 710
            iload 13 /* j */
            istore 12 /* pos */
        end local 18 // int dot
        end local 17 // int slash
        end local 16 // java.lang.String pattern
       119: .line 700
      StackMap locals:
      StackMap stack:
            iinc 15 /* k */ 1
      StackMap locals:
      StackMap stack:
       120: iload 15 /* k */
            aload 14 /* patterns */
            arraylength
            if_icmpge 121
            iload 11 /* matched */
            ifeq 109
        end local 15 // int k
        end local 14 // java.lang.String[] patterns
       121: .line 691
      StackMap locals:
      StackMap stack:
            iinc 13 /* j */ 1
      StackMap locals:
      StackMap stack:
       122: iload 13 /* j */
            aload 10 /* collection */
            arraylength
            if_icmplt 104
        end local 13 // int j
       123: .line 716
            iload 11 /* matched */
            ifeq 129
       124: .line 717
            iconst_1
            istore 8 /* found */
       125: .line 718
            aload 10 /* collection */
            iload 12 /* pos */
            aaload
            aload 6 /* method */
            invokevirtual org.apache.tomcat.util.descriptor.web.SecurityCollection.findMethod:(Ljava/lang/String;)Z
            ifeq 129
       126: .line 719
            aload 3 /* results */
            ifnonnull 128
       127: .line 720
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 3 /* results */
       128: .line 722
      StackMap locals:
      StackMap stack:
            aload 3 /* results */
            aload 4 /* constraints */
            iload 7 /* i */
            aaload
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        end local 12 // int pos
        end local 11 // boolean matched
        end local 10 // org.apache.tomcat.util.descriptor.web.SecurityCollection[] collection
       129: .line 674
      StackMap locals:
      StackMap stack:
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
       130: iload 7 /* i */
            aload 4 /* constraints */
            arraylength
            if_icmplt 92
       131: .line 727
            iload 8 /* found */
            ifeq 133
       132: .line 728
            aload 0 /* this */
            aload 3 /* results */
            invokevirtual org.apache.catalina.realm.RealmBase.resultsToArray:(Ljava/util/ArrayList;)[Lorg/apache/tomcat/util/descriptor/web/SecurityConstraint;
            areturn
       133: .line 731
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 7 /* i */
            goto 162
       134: .line 732
      StackMap locals:
      StackMap stack:
            aload 4 /* constraints */
            iload 7 /* i */
            aaload
            invokevirtual org.apache.tomcat.util.descriptor.web.SecurityConstraint.findCollections:()[Lorg/apache/tomcat/util/descriptor/web/SecurityCollection;
            astore 10 /* collection */
        start local 10 // org.apache.tomcat.util.descriptor.web.SecurityCollection[] collection
       135: .line 736
            aload 10 /* collection */
            ifnonnull 137
       136: .line 737
            goto 161
       137: .line 740
      StackMap locals: org.apache.tomcat.util.descriptor.web.SecurityCollection[]
      StackMap stack:
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 142
       138: .line 741
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "  Checking constraint '"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* constraints */
            iload 7 /* i */
            aaload
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
       139: .line 742
            ldc "' against "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 6 /* method */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 5 /* uri */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " --> "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
       140: .line 743
            aload 4 /* constraints */
            iload 7 /* i */
            aaload
            aload 5 /* uri */
            aload 6 /* method */
            invokevirtual org.apache.tomcat.util.descriptor.web.SecurityConstraint.included:(Ljava/lang/String;Ljava/lang/String;)Z
            invokevirtual java.lang.StringBuilder.append:(Z)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
       141: .line 741
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
       142: .line 746
      StackMap locals:
      StackMap stack:
            aload 10 /* collection */
            dup
            astore 14
            arraylength
            istore 13
            iconst_0
            istore 12
            goto 160
      StackMap locals: org.apache.catalina.realm.RealmBase org.apache.catalina.connector.Request org.apache.catalina.Context java.util.ArrayList org.apache.tomcat.util.descriptor.web.SecurityConstraint[] java.lang.String java.lang.String int int int org.apache.tomcat.util.descriptor.web.SecurityCollection[] top int int org.apache.tomcat.util.descriptor.web.SecurityCollection[]
      StackMap stack:
       143: aload 14
            iload 12
            aaload
            astore 11 /* securityCollection */
        start local 11 // org.apache.tomcat.util.descriptor.web.SecurityCollection securityCollection
       144: .line 747
            aload 11 /* securityCollection */
            invokevirtual org.apache.tomcat.util.descriptor.web.SecurityCollection.findPatterns:()[Ljava/lang/String;
            astore 15 /* patterns */
        start local 15 // java.lang.String[] patterns
       145: .line 751
            aload 15 /* patterns */
            ifnonnull 147
       146: .line 752
            goto 159
       147: .line 755
      StackMap locals: org.apache.catalina.realm.RealmBase org.apache.catalina.connector.Request org.apache.catalina.Context java.util.ArrayList org.apache.tomcat.util.descriptor.web.SecurityConstraint[] java.lang.String java.lang.String int int int org.apache.tomcat.util.descriptor.web.SecurityCollection[] org.apache.tomcat.util.descriptor.web.SecurityCollection int int org.apache.tomcat.util.descriptor.web.SecurityCollection[] java.lang.String[]
      StackMap stack:
            iconst_0
            istore 16 /* matched */
        start local 16 // boolean matched
       148: .line 756
            aload 15 /* patterns */
            dup
            astore 20
            arraylength
            istore 19
            iconst_0
            istore 18
            goto 154
      StackMap locals: org.apache.catalina.realm.RealmBase org.apache.catalina.connector.Request org.apache.catalina.Context java.util.ArrayList org.apache.tomcat.util.descriptor.web.SecurityConstraint[] java.lang.String java.lang.String int int int org.apache.tomcat.util.descriptor.web.SecurityCollection[] org.apache.tomcat.util.descriptor.web.SecurityCollection int int org.apache.tomcat.util.descriptor.web.SecurityCollection[] java.lang.String[] int top int int java.lang.String[]
      StackMap stack:
       149: aload 20
            iload 18
            aaload
            astore 17 /* pattern */
        start local 17 // java.lang.String pattern
       150: .line 757
            aload 17 /* pattern */
            ldc "/"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 153
       151: .line 758
            iconst_1
            istore 16 /* matched */
       152: .line 759
            goto 155
        end local 17 // java.lang.String pattern
       153: .line 756
      StackMap locals:
      StackMap stack:
            iinc 18 1
      StackMap locals:
      StackMap stack:
       154: iload 18
            iload 19
            if_icmplt 149
       155: .line 762
      StackMap locals: org.apache.catalina.realm.RealmBase org.apache.catalina.connector.Request org.apache.catalina.Context java.util.ArrayList org.apache.tomcat.util.descriptor.web.SecurityConstraint[] java.lang.String java.lang.String int int int org.apache.tomcat.util.descriptor.web.SecurityCollection[] org.apache.tomcat.util.descriptor.web.SecurityCollection int int org.apache.tomcat.util.descriptor.web.SecurityCollection[] java.lang.String[] int
      StackMap stack:
            iload 16 /* matched */
            ifeq 159
       156: .line 763
            aload 3 /* results */
            ifnonnull 158
       157: .line 764
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 3 /* results */
       158: .line 766
      StackMap locals:
      StackMap stack:
            aload 3 /* results */
            aload 4 /* constraints */
            iload 7 /* i */
            aaload
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        end local 16 // boolean matched
        end local 15 // java.lang.String[] patterns
        end local 11 // org.apache.tomcat.util.descriptor.web.SecurityCollection securityCollection
       159: .line 746
      StackMap locals: org.apache.catalina.realm.RealmBase org.apache.catalina.connector.Request org.apache.catalina.Context java.util.ArrayList org.apache.tomcat.util.descriptor.web.SecurityConstraint[] java.lang.String java.lang.String int int int org.apache.tomcat.util.descriptor.web.SecurityCollection[] top int int org.apache.tomcat.util.descriptor.web.SecurityCollection[]
      StackMap stack:
            iinc 12 1
      StackMap locals:
      StackMap stack:
       160: iload 12
            iload 13
            if_icmplt 143
        end local 10 // org.apache.tomcat.util.descriptor.web.SecurityCollection[] collection
       161: .line 731
      StackMap locals: org.apache.catalina.realm.RealmBase org.apache.catalina.connector.Request org.apache.catalina.Context java.util.ArrayList org.apache.tomcat.util.descriptor.web.SecurityConstraint[] java.lang.String java.lang.String int int int
      StackMap stack:
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
       162: iload 7 /* i */
            aload 4 /* constraints */
            arraylength
            if_icmplt 134
       163: .line 771
            aload 3 /* results */
            ifnonnull 166
       164: .line 773
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 166
       165: .line 774
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            ldc "  No applicable constraint located"
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
       166: .line 776
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 3 /* results */
            invokevirtual org.apache.catalina.realm.RealmBase.resultsToArray:(Ljava/util/ArrayList;)[Lorg/apache/tomcat/util/descriptor/web/SecurityConstraint;
            areturn
        end local 9 // int longest
        end local 8 // boolean found
        end local 7 // int i
        end local 6 // java.lang.String method
        end local 5 // java.lang.String uri
        end local 4 // org.apache.tomcat.util.descriptor.web.SecurityConstraint[] constraints
        end local 3 // java.util.ArrayList results
        end local 2 // org.apache.catalina.Context context
        end local 1 // org.apache.catalina.connector.Request request
        end local 0 // org.apache.catalina.realm.RealmBase this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0  167     0                this  Lorg/apache/catalina/realm/RealmBase;
            0  167     1             request  Lorg/apache/catalina/connector/Request;
            0  167     2             context  Lorg/apache/catalina/Context;
            1  167     3             results  Ljava/util/ArrayList<Lorg/apache/tomcat/util/descriptor/web/SecurityConstraint;>;
            2  167     4         constraints  [Lorg/apache/tomcat/util/descriptor/web/SecurityConstraint;
            7  167     5                 uri  Ljava/lang/String;
           10  167     6              method  Ljava/lang/String;
           12  167     7                   i  I
           11  167     8               found  Z
           14   38     9         collections  [Lorg/apache/tomcat/util/descriptor/web/SecurityCollection;
           23   36    10  securityCollection  Lorg/apache/tomcat/util/descriptor/web/SecurityCollection;
           24   36    14            patterns  [Ljava/lang/String;
           28   34    15             pattern  Ljava/lang/String;
           43  167     9             longest  I
           45   87    10          collection  [Lorg/apache/tomcat/util/descriptor/web/SecurityCollection;
           54   85    11  securityCollection  Lorg/apache/tomcat/util/descriptor/web/SecurityCollection;
           55   85    15            patterns  [Ljava/lang/String;
           58   85    16             matched  Z
           59   85    17              length  I
           61   72    18             pattern  Ljava/lang/String;
           93  129    10          collection  [Lorg/apache/tomcat/util/descriptor/web/SecurityCollection;
          101  129    11             matched  Z
          102  129    12                 pos  I
          103  123    13                   j  I
          105  121    14            patterns  [Ljava/lang/String;
          108  121    15                   k  I
          110  119    16             pattern  Ljava/lang/String;
          112  119    17               slash  I
          113  119    18                 dot  I
          135  161    10          collection  [Lorg/apache/tomcat/util/descriptor/web/SecurityCollection;
          144  159    11  securityCollection  Lorg/apache/tomcat/util/descriptor/web/SecurityCollection;
          145  159    15            patterns  [Ljava/lang/String;
          148  159    16             matched  Z
          150  153    17             pattern  Ljava/lang/String;
    MethodParameters:
         Name  Flags
      request  
      context  

  private org.apache.tomcat.util.descriptor.web.SecurityConstraint[] resultsToArray(java.util.ArrayList<org.apache.tomcat.util.descriptor.web.SecurityConstraint>);
    descriptor: (Ljava/util/ArrayList;)[Lorg/apache/tomcat/util/descriptor/web/SecurityConstraint;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // org.apache.catalina.realm.RealmBase this
        start local 1 // java.util.ArrayList results
         0: .line 784
            aload 1 /* results */
            ifnull 1
            aload 1 /* results */
            invokevirtual java.util.ArrayList.size:()I
            ifne 2
         1: .line 785
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
         2: .line 787
      StackMap locals:
      StackMap stack:
            aload 1 /* results */
            invokevirtual java.util.ArrayList.size:()I
            anewarray org.apache.tomcat.util.descriptor.web.SecurityConstraint
            astore 2 /* array */
        start local 2 // org.apache.tomcat.util.descriptor.web.SecurityConstraint[] array
         3: .line 788
            aload 1 /* results */
            aload 2 /* array */
            invokevirtual java.util.ArrayList.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            pop
         4: .line 789
            aload 2 /* array */
            areturn
        end local 2 // org.apache.tomcat.util.descriptor.web.SecurityConstraint[] array
        end local 1 // java.util.ArrayList results
        end local 0 // org.apache.catalina.realm.RealmBase this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0     this  Lorg/apache/catalina/realm/RealmBase;
            0    5     1  results  Ljava/util/ArrayList<Lorg/apache/tomcat/util/descriptor/web/SecurityConstraint;>;
            3    5     2    array  [Lorg/apache/tomcat/util/descriptor/web/SecurityConstraint;
    Signature: (Ljava/util/ArrayList<Lorg/apache/tomcat/util/descriptor/web/SecurityConstraint;>;)[Lorg/apache/tomcat/util/descriptor/web/SecurityConstraint;
    MethodParameters:
         Name  Flags
      results  

  public boolean hasResourcePermission(org.apache.catalina.connector.Request, org.apache.catalina.connector.Response, org.apache.tomcat.util.descriptor.web.SecurityConstraint[], org.apache.catalina.Context);
    descriptor: (Lorg/apache/catalina/connector/Request;Lorg/apache/catalina/connector/Response;[Lorg/apache/tomcat/util/descriptor/web/SecurityConstraint;Lorg/apache/catalina/Context;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=17, args_size=5
        start local 0 // org.apache.catalina.realm.RealmBase this
        start local 1 // org.apache.catalina.connector.Request request
        start local 2 // org.apache.catalina.connector.Response response
        start local 3 // org.apache.tomcat.util.descriptor.web.SecurityConstraint[] constraints
        start local 4 // org.apache.catalina.Context context
         0: .line 812
            aload 3 /* constraints */
            ifnull 1
            aload 3 /* constraints */
            arraylength
            ifne 2
         1: .line 813
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
         2: .line 816
      StackMap locals:
      StackMap stack:
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getPrincipal:()Ljava/security/Principal;
            astore 5 /* principal */
        start local 5 // java.security.Principal principal
         3: .line 817
            iconst_0
            istore 6 /* status */
        start local 6 // boolean status
         4: .line 818
            iconst_0
            istore 7 /* denyfromall */
        start local 7 // boolean denyfromall
         5: .line 819
            aload 3 /* constraints */
            dup
            astore 11
            arraylength
            istore 10
            iconst_0
            istore 9
            goto 48
      StackMap locals: org.apache.catalina.realm.RealmBase org.apache.catalina.connector.Request org.apache.catalina.connector.Response org.apache.tomcat.util.descriptor.web.SecurityConstraint[] org.apache.catalina.Context java.security.Principal int int top int int org.apache.tomcat.util.descriptor.web.SecurityConstraint[]
      StackMap stack:
         6: aload 11
            iload 9
            aaload
            astore 8 /* constraint */
        start local 8 // org.apache.tomcat.util.descriptor.web.SecurityConstraint constraint
         7: .line 821
            aload 8 /* constraint */
            invokevirtual org.apache.tomcat.util.descriptor.web.SecurityConstraint.getAllRoles:()Z
            ifeq 10
         8: .line 823
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getContext:()Lorg/apache/catalina/Context;
            invokeinterface org.apache.catalina.Context.findSecurityRoles:()[Ljava/lang/String;
            astore 12 /* roles */
        start local 12 // java.lang.String[] roles
         9: .line 824
            goto 11
        end local 12 // java.lang.String[] roles
        10: .line 825
      StackMap locals: org.apache.catalina.realm.RealmBase org.apache.catalina.connector.Request org.apache.catalina.connector.Response org.apache.tomcat.util.descriptor.web.SecurityConstraint[] org.apache.catalina.Context java.security.Principal int int org.apache.tomcat.util.descriptor.web.SecurityConstraint int int org.apache.tomcat.util.descriptor.web.SecurityConstraint[]
      StackMap stack:
            aload 8 /* constraint */
            invokevirtual org.apache.tomcat.util.descriptor.web.SecurityConstraint.findAuthRoles:()[Ljava/lang/String;
            astore 12 /* roles */
        start local 12 // java.lang.String[] roles
        11: .line 828
      StackMap locals: java.lang.String[]
      StackMap stack:
            aload 12 /* roles */
            ifnonnull 13
        12: .line 829
            iconst_0
            anewarray java.lang.String
            astore 12 /* roles */
        13: .line 831
      StackMap locals:
      StackMap stack:
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 15
        14: .line 832
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "  Checking roles "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 5 /* principal */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
        15: .line 834
      StackMap locals:
      StackMap stack:
            aload 8 /* constraint */
            invokevirtual org.apache.tomcat.util.descriptor.web.SecurityConstraint.getAuthenticatedUsers:()Z
            ifeq 20
            aload 5 /* principal */
            ifnull 20
        16: .line 835
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 18
        17: .line 836
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            ldc "Passing all authenticated users"
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
        18: .line 838
      StackMap locals:
      StackMap stack:
            iconst_1
            istore 6 /* status */
        19: .line 839
            goto 47
        20: .line 840
      StackMap locals:
      StackMap stack:
            aload 12 /* roles */
            arraylength
            ifne 32
            aload 8 /* constraint */
            invokevirtual org.apache.tomcat.util.descriptor.web.SecurityConstraint.getAllRoles:()Z
            ifne 32
        21: .line 841
            aload 8 /* constraint */
            invokevirtual org.apache.tomcat.util.descriptor.web.SecurityConstraint.getAuthenticatedUsers:()Z
            ifne 32
        22: .line 842
            aload 8 /* constraint */
            invokevirtual org.apache.tomcat.util.descriptor.web.SecurityConstraint.getAuthConstraint:()Z
            ifeq 28
        23: .line 843
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 25
        24: .line 844
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            ldc "No roles"
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
        25: .line 846
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 6 /* status */
        26: .line 847
            iconst_1
            istore 7 /* denyfromall */
        27: .line 848
            goto 49
        28: .line 851
      StackMap locals:
      StackMap stack:
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 30
        29: .line 852
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            ldc "Passing all access"
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
        30: .line 854
      StackMap locals:
      StackMap stack:
            iconst_1
            istore 6 /* status */
        31: .line 855
            goto 47
      StackMap locals:
      StackMap stack:
        32: aload 5 /* principal */
            ifnonnull 36
        33: .line 856
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 47
        34: .line 857
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            ldc "  No user authenticated, cannot grant access"
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
        35: .line 859
            goto 47
        36: .line 860
      StackMap locals:
      StackMap stack:
            aload 12 /* roles */
            dup
            astore 16
            arraylength
            istore 15
            iconst_0
            istore 14
            goto 46
      StackMap locals: org.apache.catalina.realm.RealmBase org.apache.catalina.connector.Request org.apache.catalina.connector.Response org.apache.tomcat.util.descriptor.web.SecurityConstraint[] org.apache.catalina.Context java.security.Principal int int org.apache.tomcat.util.descriptor.web.SecurityConstraint int int org.apache.tomcat.util.descriptor.web.SecurityConstraint[] java.lang.String[] top int int java.lang.String[]
      StackMap stack:
        37: aload 16
            iload 14
            aaload
            astore 13 /* role */
        start local 13 // java.lang.String role
        38: .line 861
            aload 0 /* this */
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getWrapper:()Lorg/apache/catalina/Wrapper;
            aload 5 /* principal */
            aload 13 /* role */
            invokevirtual org.apache.catalina.realm.RealmBase.hasRole:(Lorg/apache/catalina/Wrapper;Ljava/security/Principal;Ljava/lang/String;)Z
            ifeq 43
        39: .line 862
            iconst_1
            istore 6 /* status */
        40: .line 863
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 45
        41: .line 864
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Role found:  "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 13 /* role */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
        42: .line 866
            goto 45
      StackMap locals: org.apache.catalina.realm.RealmBase org.apache.catalina.connector.Request org.apache.catalina.connector.Response org.apache.tomcat.util.descriptor.web.SecurityConstraint[] org.apache.catalina.Context java.security.Principal int int org.apache.tomcat.util.descriptor.web.SecurityConstraint int int org.apache.tomcat.util.descriptor.web.SecurityConstraint[] java.lang.String[] java.lang.String int int java.lang.String[]
      StackMap stack:
        43: getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 45
        44: .line 867
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "No role found:  "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 13 /* role */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
        end local 13 // java.lang.String role
        45: .line 860
      StackMap locals: org.apache.catalina.realm.RealmBase org.apache.catalina.connector.Request org.apache.catalina.connector.Response org.apache.tomcat.util.descriptor.web.SecurityConstraint[] org.apache.catalina.Context java.security.Principal int int org.apache.tomcat.util.descriptor.web.SecurityConstraint int int org.apache.tomcat.util.descriptor.web.SecurityConstraint[] java.lang.String[] top int int java.lang.String[]
      StackMap stack:
            iinc 14 1
      StackMap locals:
      StackMap stack:
        46: iload 14
            iload 15
            if_icmplt 37
        end local 12 // java.lang.String[] roles
        end local 8 // org.apache.tomcat.util.descriptor.web.SecurityConstraint constraint
        47: .line 819
      StackMap locals: org.apache.catalina.realm.RealmBase org.apache.catalina.connector.Request org.apache.catalina.connector.Response org.apache.tomcat.util.descriptor.web.SecurityConstraint[] org.apache.catalina.Context java.security.Principal int int top int int org.apache.tomcat.util.descriptor.web.SecurityConstraint[]
      StackMap stack:
            iinc 9 1
      StackMap locals:
      StackMap stack:
        48: iload 9
            iload 10
            if_icmplt 6
        49: .line 873
      StackMap locals: org.apache.catalina.realm.RealmBase org.apache.catalina.connector.Request org.apache.catalina.connector.Response org.apache.tomcat.util.descriptor.web.SecurityConstraint[] org.apache.catalina.Context java.security.Principal int int
      StackMap stack:
            iload 7 /* denyfromall */
            ifne 69
            aload 0 /* this */
            getfield org.apache.catalina.realm.RealmBase.allRolesMode:Lorg/apache/catalina/realm/RealmBase$AllRolesMode;
            getstatic org.apache.catalina.realm.RealmBase$AllRolesMode.STRICT_MODE:Lorg/apache/catalina/realm/RealmBase$AllRolesMode;
            if_acmpeq 69
        50: .line 874
            iload 6 /* status */
            ifne 69
            aload 5 /* principal */
            ifnull 69
        51: .line 875
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 53
        52: .line 876
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "Checking for all roles mode: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.apache.catalina.realm.RealmBase.allRolesMode:Lorg/apache/catalina/realm/RealmBase$AllRolesMode;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
        53: .line 879
      StackMap locals:
      StackMap stack:
            aload 3 /* constraints */
            dup
            astore 11
            arraylength
            istore 10
            iconst_0
            istore 9
            goto 68
      StackMap locals: org.apache.catalina.realm.RealmBase org.apache.catalina.connector.Request org.apache.catalina.connector.Response org.apache.tomcat.util.descriptor.web.SecurityConstraint[] org.apache.catalina.Context java.security.Principal int int top int int org.apache.tomcat.util.descriptor.web.SecurityConstraint[]
      StackMap stack:
        54: aload 11
            iload 9
            aaload
            astore 8 /* constraint */
        start local 8 // org.apache.tomcat.util.descriptor.web.SecurityConstraint constraint
        55: .line 882
            aload 8 /* constraint */
            invokevirtual org.apache.tomcat.util.descriptor.web.SecurityConstraint.getAllRoles:()Z
            ifeq 67
        56: .line 883
            aload 0 /* this */
            getfield org.apache.catalina.realm.RealmBase.allRolesMode:Lorg/apache/catalina/realm/RealmBase$AllRolesMode;
            getstatic org.apache.catalina.realm.RealmBase$AllRolesMode.AUTH_ONLY_MODE:Lorg/apache/catalina/realm/RealmBase$AllRolesMode;
            if_acmpne 61
        57: .line 884
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 59
        58: .line 885
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            ldc "Granting access for role-name=*, auth-only"
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
        59: .line 887
      StackMap locals: org.apache.catalina.realm.RealmBase org.apache.catalina.connector.Request org.apache.catalina.connector.Response org.apache.tomcat.util.descriptor.web.SecurityConstraint[] org.apache.catalina.Context java.security.Principal int int org.apache.tomcat.util.descriptor.web.SecurityConstraint int int org.apache.tomcat.util.descriptor.web.SecurityConstraint[]
      StackMap stack:
            iconst_1
            istore 6 /* status */
        60: .line 888
            goto 69
        61: .line 892
      StackMap locals:
      StackMap stack:
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getContext:()Lorg/apache/catalina/Context;
            invokeinterface org.apache.catalina.Context.findSecurityRoles:()[Ljava/lang/String;
            astore 12 /* roles */
        start local 12 // java.lang.String[] roles
        62: .line 893
            aload 12 /* roles */
            arraylength
            ifne 67
            aload 0 /* this */
            getfield org.apache.catalina.realm.RealmBase.allRolesMode:Lorg/apache/catalina/realm/RealmBase$AllRolesMode;
            getstatic org.apache.catalina.realm.RealmBase$AllRolesMode.STRICT_AUTH_ONLY_MODE:Lorg/apache/catalina/realm/RealmBase$AllRolesMode;
            if_acmpne 67
        63: .line 894
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 65
        64: .line 895
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            ldc "Granting access for role-name=*, strict auth-only"
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
        65: .line 897
      StackMap locals: java.lang.String[]
      StackMap stack:
            iconst_1
            istore 6 /* status */
        66: .line 898
            goto 69
        end local 12 // java.lang.String[] roles
        end local 8 // org.apache.tomcat.util.descriptor.web.SecurityConstraint constraint
        67: .line 879
      StackMap locals: org.apache.catalina.realm.RealmBase org.apache.catalina.connector.Request org.apache.catalina.connector.Response org.apache.tomcat.util.descriptor.web.SecurityConstraint[] org.apache.catalina.Context java.security.Principal int int top int int org.apache.tomcat.util.descriptor.web.SecurityConstraint[]
      StackMap stack:
            iinc 9 1
      StackMap locals:
      StackMap stack:
        68: iload 9
            iload 10
            if_icmplt 54
        69: .line 905
      StackMap locals: org.apache.catalina.realm.RealmBase org.apache.catalina.connector.Request org.apache.catalina.connector.Response org.apache.tomcat.util.descriptor.web.SecurityConstraint[] org.apache.catalina.Context java.security.Principal int int
      StackMap stack:
            iload 6 /* status */
            ifne 74
        70: .line 906
            aload 2 /* response */
        71: .line 907
            sipush 403
        72: .line 908
            getstatic org.apache.catalina.realm.RealmBase.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "realmBase.forbidden"
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
        73: .line 906
            invokevirtual org.apache.catalina.connector.Response.sendError:(ILjava/lang/String;)V
        74: .line 910
      StackMap locals:
      StackMap stack:
            iload 6 /* status */
            ireturn
        end local 7 // boolean denyfromall
        end local 6 // boolean status
        end local 5 // java.security.Principal principal
        end local 4 // org.apache.catalina.Context context
        end local 3 // org.apache.tomcat.util.descriptor.web.SecurityConstraint[] constraints
        end local 2 // org.apache.catalina.connector.Response response
        end local 1 // org.apache.catalina.connector.Request request
        end local 0 // org.apache.catalina.realm.RealmBase this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   75     0         this  Lorg/apache/catalina/realm/RealmBase;
            0   75     1      request  Lorg/apache/catalina/connector/Request;
            0   75     2     response  Lorg/apache/catalina/connector/Response;
            0   75     3  constraints  [Lorg/apache/tomcat/util/descriptor/web/SecurityConstraint;
            0   75     4      context  Lorg/apache/catalina/Context;
            3   75     5    principal  Ljava/security/Principal;
            4   75     6       status  Z
            5   75     7  denyfromall  Z
            7   47     8   constraint  Lorg/apache/tomcat/util/descriptor/web/SecurityConstraint;
            9   10    12        roles  [Ljava/lang/String;
           11   47    12        roles  [Ljava/lang/String;
           38   45    13         role  Ljava/lang/String;
           55   67     8   constraint  Lorg/apache/tomcat/util/descriptor/web/SecurityConstraint;
           62   67    12        roles  [Ljava/lang/String;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
             Name  Flags
      request      
      response     
      constraints  
      context      

  public boolean hasRole(org.apache.catalina.Wrapper, java.security.Principal, java.lang.String);
    descriptor: (Lorg/apache/catalina/Wrapper;Ljava/security/Principal;Ljava/lang/String;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=6, args_size=4
        start local 0 // org.apache.catalina.realm.RealmBase this
        start local 1 // org.apache.catalina.Wrapper wrapper
        start local 2 // java.security.Principal principal
        start local 3 // java.lang.String role
         0: .line 926
            aload 1 /* wrapper */
            ifnull 4
         1: .line 927
            aload 1 /* wrapper */
            aload 3 /* role */
            invokeinterface org.apache.catalina.Wrapper.findSecurityReference:(Ljava/lang/String;)Ljava/lang/String;
            astore 4 /* realRole */
        start local 4 // java.lang.String realRole
         2: .line 928
            aload 4 /* realRole */
            ifnull 4
         3: .line 929
            aload 4 /* realRole */
            astore 3 /* role */
        end local 4 // java.lang.String realRole
         4: .line 934
      StackMap locals:
      StackMap stack:
            aload 2 /* principal */
            ifnull 5
            aload 3 /* role */
            ifnonnull 6
         5: .line 935
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
         6: .line 938
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* principal */
            aload 3 /* role */
            invokevirtual org.apache.catalina.realm.RealmBase.hasRoleInternal:(Ljava/security/Principal;Ljava/lang/String;)Z
            istore 4 /* result */
        start local 4 // boolean result
         7: .line 940
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 12
         8: .line 941
            aload 2 /* principal */
            invokeinterface java.security.Principal.getName:()Ljava/lang/String;
            astore 5 /* name */
        start local 5 // java.lang.String name
         9: .line 942
            iload 4 /* result */
            ifeq 11
        10: .line 943
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            getstatic org.apache.catalina.realm.RealmBase.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "realmBase.hasRoleSuccess"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 5 /* name */
            aastore
            dup
            iconst_1
            aload 3 /* role */
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
            goto 12
        11: .line 945
      StackMap locals: int java.lang.String
      StackMap stack:
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            getstatic org.apache.catalina.realm.RealmBase.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "realmBase.hasRoleFailure"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 5 /* name */
            aastore
            dup
            iconst_1
            aload 3 /* role */
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
        end local 5 // java.lang.String name
        12: .line 948
      StackMap locals:
      StackMap stack:
            iload 4 /* result */
            ireturn
        end local 4 // boolean result
        end local 3 // java.lang.String role
        end local 2 // java.security.Principal principal
        end local 1 // org.apache.catalina.Wrapper wrapper
        end local 0 // org.apache.catalina.realm.RealmBase this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   13     0       this  Lorg/apache/catalina/realm/RealmBase;
            0   13     1    wrapper  Lorg/apache/catalina/Wrapper;
            0   13     2  principal  Ljava/security/Principal;
            0   13     3       role  Ljava/lang/String;
            2    4     4   realRole  Ljava/lang/String;
            7   13     4     result  Z
            9   12     5       name  Ljava/lang/String;
    MethodParameters:
           Name  Flags
      wrapper    
      principal  
      role       

  protected boolean hasRoleInternal(java.security.Principal, java.lang.String);
    descriptor: (Ljava/security/Principal;Ljava/lang/String;)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=4, args_size=3
        start local 0 // org.apache.catalina.realm.RealmBase this
        start local 1 // java.security.Principal principal
        start local 2 // java.lang.String role
         0: .line 970
            aload 1 /* principal */
            instanceof org.apache.catalina.realm.GenericPrincipal
            ifne 2
         1: .line 971
            iconst_0
            ireturn
         2: .line 974
      StackMap locals:
      StackMap stack:
            aload 1 /* principal */
            checkcast org.apache.catalina.realm.GenericPrincipal
            astore 3 /* gp */
        start local 3 // org.apache.catalina.realm.GenericPrincipal gp
         3: .line 975
            aload 3 /* gp */
            aload 2 /* role */
            invokevirtual org.apache.catalina.realm.GenericPrincipal.hasRole:(Ljava/lang/String;)Z
            ireturn
        end local 3 // org.apache.catalina.realm.GenericPrincipal gp
        end local 2 // java.lang.String role
        end local 1 // java.security.Principal principal
        end local 0 // org.apache.catalina.realm.RealmBase this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    4     0       this  Lorg/apache/catalina/realm/RealmBase;
            0    4     1  principal  Ljava/security/Principal;
            0    4     2       role  Ljava/lang/String;
            3    4     3         gp  Lorg/apache/catalina/realm/GenericPrincipal;
    MethodParameters:
           Name  Flags
      principal  
      role       

  public boolean hasUserDataPermission(org.apache.catalina.connector.Request, org.apache.catalina.connector.Response, org.apache.tomcat.util.descriptor.web.SecurityConstraint[]);
    descriptor: (Lorg/apache/catalina/connector/Request;Lorg/apache/catalina/connector/Response;[Lorg/apache/tomcat/util/descriptor/web/SecurityConstraint;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=10, args_size=4
        start local 0 // org.apache.catalina.realm.RealmBase this
        start local 1 // org.apache.catalina.connector.Request request
        start local 2 // org.apache.catalina.connector.Response response
        start local 3 // org.apache.tomcat.util.descriptor.web.SecurityConstraint[] constraints
         0: .line 998
            aload 3 /* constraints */
            ifnull 1
            aload 3 /* constraints */
            arraylength
            ifne 4
         1: .line 999
      StackMap locals:
      StackMap stack:
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 3
         2: .line 1000
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            ldc "  No applicable security constraint defined"
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
         3: .line 1001
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
         4: .line 1003
      StackMap locals:
      StackMap stack:
            aload 3 /* constraints */
            dup
            astore 7
            arraylength
            istore 6
            iconst_0
            istore 5
            goto 16
      StackMap locals: org.apache.catalina.realm.RealmBase org.apache.catalina.connector.Request org.apache.catalina.connector.Response org.apache.tomcat.util.descriptor.web.SecurityConstraint[] top int int org.apache.tomcat.util.descriptor.web.SecurityConstraint[]
      StackMap stack:
         5: aload 7
            iload 5
            aaload
            astore 4 /* constraint */
        start local 4 // org.apache.tomcat.util.descriptor.web.SecurityConstraint constraint
         6: .line 1004
            aload 4 /* constraint */
            invokevirtual org.apache.tomcat.util.descriptor.web.SecurityConstraint.getUserConstraint:()Ljava/lang/String;
            astore 8 /* userConstraint */
        start local 8 // java.lang.String userConstraint
         7: .line 1005
            aload 8 /* userConstraint */
            ifnonnull 11
         8: .line 1006
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 10
         9: .line 1007
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            ldc "  No applicable user data constraint defined"
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
        10: .line 1008
      StackMap locals: org.apache.catalina.realm.RealmBase org.apache.catalina.connector.Request org.apache.catalina.connector.Response org.apache.tomcat.util.descriptor.web.SecurityConstraint[] org.apache.tomcat.util.descriptor.web.SecurityConstraint int int org.apache.tomcat.util.descriptor.web.SecurityConstraint[] java.lang.String
      StackMap stack:
            iconst_1
            ireturn
        11: .line 1010
      StackMap locals:
      StackMap stack:
            aload 8 /* userConstraint */
            getstatic jakarta.servlet.annotation.ServletSecurity$TransportGuarantee.NONE:Ljakarta/servlet/annotation/ServletSecurity$TransportGuarantee;
            invokevirtual jakarta.servlet.annotation.ServletSecurity$TransportGuarantee.name:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 15
        12: .line 1011
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 14
        13: .line 1012
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            ldc "  User data constraint has no restrictions"
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
        14: .line 1013
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 8 // java.lang.String userConstraint
        end local 4 // org.apache.tomcat.util.descriptor.web.SecurityConstraint constraint
        15: .line 1003
      StackMap locals: org.apache.catalina.realm.RealmBase org.apache.catalina.connector.Request org.apache.catalina.connector.Response org.apache.tomcat.util.descriptor.web.SecurityConstraint[] top int int org.apache.tomcat.util.descriptor.web.SecurityConstraint[]
      StackMap stack:
            iinc 5 1
      StackMap locals:
      StackMap stack:
        16: iload 5
            iload 6
            if_icmplt 5
        17: .line 1018
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getRequest:()Ljakarta/servlet/http/HttpServletRequest;
            invokeinterface jakarta.servlet.http.HttpServletRequest.isSecure:()Z
            ifeq 21
        18: .line 1019
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 20
        19: .line 1020
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            ldc "  User data constraint already satisfied"
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
        20: .line 1021
      StackMap locals: org.apache.catalina.realm.RealmBase org.apache.catalina.connector.Request org.apache.catalina.connector.Response org.apache.tomcat.util.descriptor.web.SecurityConstraint[]
      StackMap stack:
            iconst_1
            ireturn
        21: .line 1024
      StackMap locals:
      StackMap stack:
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getConnector:()Lorg/apache/catalina/connector/Connector;
            invokevirtual org.apache.catalina.connector.Connector.getRedirectPortWithOffset:()I
            istore 4 /* redirectPort */
        start local 4 // int redirectPort
        22: .line 1027
            iload 4 /* redirectPort */
            ifgt 30
        23: .line 1028
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 25
        24: .line 1029
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            ldc "  SSL redirect is disabled"
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
        25: .line 1030
      StackMap locals: int
      StackMap stack:
            aload 2 /* response */
        26: .line 1031
            sipush 403
        27: .line 1032
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getRequestURI:()Ljava/lang/String;
        28: .line 1030
            invokevirtual org.apache.catalina.connector.Response.sendError:(ILjava/lang/String;)V
        29: .line 1033
            iconst_0
            ireturn
        30: .line 1037
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 5 /* file */
        start local 5 // java.lang.StringBuilder file
        31: .line 1038
            ldc "https"
            astore 6 /* protocol */
        start local 6 // java.lang.String protocol
        32: .line 1039
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getServerName:()Ljava/lang/String;
            astore 7 /* host */
        start local 7 // java.lang.String host
        33: .line 1041
            aload 5 /* file */
            aload 6 /* protocol */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "://"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 7 /* host */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        34: .line 1043
            iload 4 /* redirectPort */
            sipush 443
            if_icmpeq 36
        35: .line 1044
            aload 5 /* file */
            bipush 58
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            iload 4 /* redirectPort */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            pop
        36: .line 1047
      StackMap locals: java.lang.StringBuilder java.lang.String java.lang.String
      StackMap stack:
            aload 5 /* file */
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getRequestURI:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        37: .line 1048
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getRequestedSessionId:()Ljava/lang/String;
            astore 8 /* requestedSessionId */
        start local 8 // java.lang.String requestedSessionId
        38: .line 1049
            aload 8 /* requestedSessionId */
            ifnull 46
        39: .line 1050
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.isRequestedSessionIdFromURL:()Z
            ifeq 46
        40: .line 1051
            aload 5 /* file */
            bipush 59
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        41: .line 1052
            aload 5 /* file */
        42: .line 1053
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getContext:()Lorg/apache/catalina/Context;
        43: .line 1052
            invokestatic org.apache.catalina.util.SessionConfig.getSessionUriParamName:(Lorg/apache/catalina/Context;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        44: .line 1054
            aload 5 /* file */
            bipush 61
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        45: .line 1055
            aload 5 /* file */
            aload 8 /* requestedSessionId */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        46: .line 1057
      StackMap locals: java.lang.String
      StackMap stack:
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getQueryString:()Ljava/lang/String;
            astore 9 /* queryString */
        start local 9 // java.lang.String queryString
        47: .line 1058
            aload 9 /* queryString */
            ifnull 50
        48: .line 1059
            aload 5 /* file */
            bipush 63
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        49: .line 1060
            aload 5 /* file */
            aload 9 /* queryString */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        50: .line 1062
      StackMap locals: java.lang.String
      StackMap stack:
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 52
        51: .line 1063
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            new java.lang.StringBuilder
            dup
            ldc "  Redirecting to "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 5 /* file */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
        52: .line 1064
      StackMap locals:
      StackMap stack:
            aload 2 /* response */
            aload 5 /* file */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 0 /* this */
            getfield org.apache.catalina.realm.RealmBase.transportGuaranteeRedirectStatus:I
            invokevirtual org.apache.catalina.connector.Response.sendRedirect:(Ljava/lang/String;I)V
        53: .line 1065
            iconst_0
            ireturn
        end local 9 // java.lang.String queryString
        end local 8 // java.lang.String requestedSessionId
        end local 7 // java.lang.String host
        end local 6 // java.lang.String protocol
        end local 5 // java.lang.StringBuilder file
        end local 4 // int redirectPort
        end local 3 // org.apache.tomcat.util.descriptor.web.SecurityConstraint[] constraints
        end local 2 // org.apache.catalina.connector.Response response
        end local 1 // org.apache.catalina.connector.Request request
        end local 0 // org.apache.catalina.realm.RealmBase this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   54     0                this  Lorg/apache/catalina/realm/RealmBase;
            0   54     1             request  Lorg/apache/catalina/connector/Request;
            0   54     2            response  Lorg/apache/catalina/connector/Response;
            0   54     3         constraints  [Lorg/apache/tomcat/util/descriptor/web/SecurityConstraint;
            6   15     4          constraint  Lorg/apache/tomcat/util/descriptor/web/SecurityConstraint;
            7   15     8      userConstraint  Ljava/lang/String;
           22   54     4        redirectPort  I
           31   54     5                file  Ljava/lang/StringBuilder;
           32   54     6            protocol  Ljava/lang/String;
           33   54     7                host  Ljava/lang/String;
           38   54     8  requestedSessionId  Ljava/lang/String;
           47   54     9         queryString  Ljava/lang/String;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
             Name  Flags
      request      
      response     
      constraints  

  public void removePropertyChangeListener(java.beans.PropertyChangeListener);
    descriptor: (Ljava/beans/PropertyChangeListener;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.catalina.realm.RealmBase this
        start local 1 // java.beans.PropertyChangeListener listener
         0: .line 1078
            aload 0 /* this */
            getfield org.apache.catalina.realm.RealmBase.support:Ljava/beans/PropertyChangeSupport;
            aload 1 /* listener */
            invokevirtual java.beans.PropertyChangeSupport.removePropertyChangeListener:(Ljava/beans/PropertyChangeListener;)V
         1: .line 1080
            return
        end local 1 // java.beans.PropertyChangeListener listener
        end local 0 // org.apache.catalina.realm.RealmBase this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0      this  Lorg/apache/catalina/realm/RealmBase;
            0    2     1  listener  Ljava/beans/PropertyChangeListener;
    MethodParameters:
          Name  Flags
      listener  

  protected void initInternal();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.apache.catalina.realm.RealmBase this
         0: .line 1086
            aload 0 /* this */
            invokespecial org.apache.catalina.util.LifecycleMBeanBase.initInternal:()V
         1: .line 1089
            aload 0 /* this */
            getfield org.apache.catalina.realm.RealmBase.container:Lorg/apache/catalina/Container;
            ifnull 3
         2: .line 1090
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.catalina.realm.RealmBase.container:Lorg/apache/catalina/Container;
            invokeinterface org.apache.catalina.Container.getLogger:()Lorg/apache/juli/logging/Log;
            putfield org.apache.catalina.realm.RealmBase.containerLog:Lorg/apache/juli/logging/Log;
         3: .line 1093
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.catalina.realm.RealmBase.x509UsernameRetrieverClassName:Ljava/lang/String;
            invokestatic org.apache.catalina.realm.RealmBase.createUsernameRetriever:(Ljava/lang/String;)Lorg/apache/catalina/realm/X509UsernameRetriever;
            putfield org.apache.catalina.realm.RealmBase.x509UsernameRetriever:Lorg/apache/catalina/realm/X509UsernameRetriever;
         4: .line 1094
            return
        end local 0 // org.apache.catalina.realm.RealmBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/apache/catalina/realm/RealmBase;
    Exceptions:
      throws org.apache.catalina.LifecycleException

  protected void startInternal();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.apache.catalina.realm.RealmBase this
         0: .line 1106
            aload 0 /* this */
            getfield org.apache.catalina.realm.RealmBase.credentialHandler:Lorg/apache/catalina/CredentialHandler;
            ifnonnull 2
         1: .line 1107
            aload 0 /* this */
            new org.apache.catalina.realm.MessageDigestCredentialHandler
            dup
            invokespecial org.apache.catalina.realm.MessageDigestCredentialHandler.<init>:()V
            putfield org.apache.catalina.realm.RealmBase.credentialHandler:Lorg/apache/catalina/CredentialHandler;
         2: .line 1110
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getstatic org.apache.catalina.LifecycleState.STARTING:Lorg/apache/catalina/LifecycleState;
            invokevirtual org.apache.catalina.realm.RealmBase.setState:(Lorg/apache/catalina/LifecycleState;)V
         3: .line 1111
            return
        end local 0 // org.apache.catalina.realm.RealmBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/apache/catalina/realm/RealmBase;
    Exceptions:
      throws org.apache.catalina.LifecycleException

  protected void stopInternal();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.apache.catalina.realm.RealmBase this
         0: .line 1124
            aload 0 /* this */
            getstatic org.apache.catalina.LifecycleState.STOPPING:Lorg/apache/catalina/LifecycleState;
            invokevirtual org.apache.catalina.realm.RealmBase.setState:(Lorg/apache/catalina/LifecycleState;)V
         1: .line 1125
            return
        end local 0 // org.apache.catalina.realm.RealmBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/apache/catalina/realm/RealmBase;
    Exceptions:
      throws org.apache.catalina.LifecycleException

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.catalina.realm.RealmBase this
         0: .line 1133
            aload 0 /* this */
            invokestatic org.apache.catalina.util.ToStringUtil.toString:(Lorg/apache/catalina/Contained;)Ljava/lang/String;
            areturn
        end local 0 // org.apache.catalina.realm.RealmBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/catalina/realm/RealmBase;

  protected boolean hasMessageDigest();
    descriptor: ()Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // org.apache.catalina.realm.RealmBase this
         0: .line 1140
            aload 0 /* this */
            getfield org.apache.catalina.realm.RealmBase.credentialHandler:Lorg/apache/catalina/CredentialHandler;
            astore 1 /* ch */
        start local 1 // org.apache.catalina.CredentialHandler ch
         1: .line 1141
            aload 1 /* ch */
            instanceof org.apache.catalina.realm.MessageDigestCredentialHandler
            ifeq 4
         2: .line 1142
            aload 1 /* ch */
            checkcast org.apache.catalina.realm.MessageDigestCredentialHandler
            invokevirtual org.apache.catalina.realm.MessageDigestCredentialHandler.getAlgorithm:()Ljava/lang/String;
            ifnull 3
            iconst_1
            ireturn
      StackMap locals: org.apache.catalina.CredentialHandler
      StackMap stack:
         3: iconst_0
            ireturn
         4: .line 1144
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 1 // org.apache.catalina.CredentialHandler ch
        end local 0 // org.apache.catalina.realm.RealmBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/apache/catalina/realm/RealmBase;
            1    5     1    ch  Lorg/apache/catalina/CredentialHandler;

  protected java.lang.String getDigest(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=8, locals=6, args_size=3
        start local 0 // org.apache.catalina.realm.RealmBase this
        start local 1 // java.lang.String username
        start local 2 // java.lang.String realmName
         0: .line 1155
            aload 0 /* this */
            invokevirtual org.apache.catalina.realm.RealmBase.hasMessageDigest:()Z
            ifeq 2
         1: .line 1157
            aload 0 /* this */
            aload 1 /* username */
            invokevirtual org.apache.catalina.realm.RealmBase.getPassword:(Ljava/lang/String;)Ljava/lang/String;
            areturn
         2: .line 1160
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            aload 1 /* username */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* realmName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         3: .line 1161
            aload 0 /* this */
            aload 1 /* username */
            invokevirtual org.apache.catalina.realm.RealmBase.getPassword:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         4: .line 1160
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 3 /* digestValue */
        start local 3 // java.lang.String digestValue
         5: .line 1163
            aconst_null
            astore 4 /* valueBytes */
        start local 4 // byte[] valueBytes
         6: .line 1165
            aload 3 /* digestValue */
            aload 0 /* this */
            invokevirtual org.apache.catalina.realm.RealmBase.getDigestCharset:()Ljava/nio/charset/Charset;
            invokevirtual java.lang.String.getBytes:(Ljava/nio/charset/Charset;)[B
            astore 4 /* valueBytes */
         7: .line 1166
            goto 10
      StackMap locals: org.apache.catalina.realm.RealmBase java.lang.String java.lang.String java.lang.String byte[]
      StackMap stack: java.io.UnsupportedEncodingException
         8: astore 5 /* uee */
        start local 5 // java.io.UnsupportedEncodingException uee
         9: .line 1167
            new java.lang.IllegalArgumentException
            dup
            getstatic org.apache.catalina.realm.RealmBase.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "realmBase.invalidDigestEncoding"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            invokevirtual org.apache.catalina.realm.RealmBase.getDigestEncoding:()Ljava/lang/String;
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            aload 5 /* uee */
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 5 // java.io.UnsupportedEncodingException uee
        10: .line 1170
      StackMap locals:
      StackMap stack:
            iconst_1
            anewarray byte[]
            dup
            iconst_0
            aload 4 /* valueBytes */
            aastore
            invokestatic org.apache.tomcat.util.security.ConcurrentMessageDigest.digestMD5:([[B)[B
            invokestatic org.apache.tomcat.util.security.MD5Encoder.encode:([B)Ljava/lang/String;
            areturn
        end local 4 // byte[] valueBytes
        end local 3 // java.lang.String digestValue
        end local 2 // java.lang.String realmName
        end local 1 // java.lang.String username
        end local 0 // org.apache.catalina.realm.RealmBase this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   11     0         this  Lorg/apache/catalina/realm/RealmBase;
            0   11     1     username  Ljava/lang/String;
            0   11     2    realmName  Ljava/lang/String;
            5   11     3  digestValue  Ljava/lang/String;
            6   11     4   valueBytes  [B
            9   10     5          uee  Ljava/io/UnsupportedEncodingException;
      Exception table:
        from    to  target  type
           6     7       8  Class java.io.UnsupportedEncodingException
    MethodParameters:
           Name  Flags
      username   
      realmName  

  private java.lang.String getDigestEncoding();
    descriptor: ()Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // org.apache.catalina.realm.RealmBase this
         0: .line 1175
            aload 0 /* this */
            getfield org.apache.catalina.realm.RealmBase.credentialHandler:Lorg/apache/catalina/CredentialHandler;
            astore 1 /* ch */
        start local 1 // org.apache.catalina.CredentialHandler ch
         1: .line 1176
            aload 1 /* ch */
            instanceof org.apache.catalina.realm.MessageDigestCredentialHandler
            ifeq 3
         2: .line 1177
            aload 1 /* ch */
            checkcast org.apache.catalina.realm.MessageDigestCredentialHandler
            invokevirtual org.apache.catalina.realm.MessageDigestCredentialHandler.getEncoding:()Ljava/lang/String;
            areturn
         3: .line 1179
      StackMap locals: org.apache.catalina.CredentialHandler
      StackMap stack:
            aconst_null
            areturn
        end local 1 // org.apache.catalina.CredentialHandler ch
        end local 0 // org.apache.catalina.realm.RealmBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/apache/catalina/realm/RealmBase;
            1    4     1    ch  Lorg/apache/catalina/CredentialHandler;

  private java.nio.charset.Charset getDigestCharset();
    descriptor: ()Ljava/nio/charset/Charset;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // org.apache.catalina.realm.RealmBase this
         0: .line 1184
            aload 0 /* this */
            invokevirtual org.apache.catalina.realm.RealmBase.getDigestEncoding:()Ljava/lang/String;
            astore 1 /* charset */
        start local 1 // java.lang.String charset
         1: .line 1185
            aload 1 /* charset */
            ifnonnull 3
         2: .line 1186
            getstatic java.nio.charset.StandardCharsets.ISO_8859_1:Ljava/nio/charset/Charset;
            areturn
         3: .line 1188
      StackMap locals: java.lang.String
      StackMap stack:
            aload 1 /* charset */
            invokestatic org.apache.tomcat.util.buf.B2CConverter.getCharset:(Ljava/lang/String;)Ljava/nio/charset/Charset;
            areturn
        end local 1 // java.lang.String charset
        end local 0 // org.apache.catalina.realm.RealmBase this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Lorg/apache/catalina/realm/RealmBase;
            1    4     1  charset  Ljava/lang/String;
    Exceptions:
      throws java.io.UnsupportedEncodingException

  protected abstract java.lang.String getPassword(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
          Name  Flags
      username  

  protected java.security.Principal getPrincipal(java.security.cert.X509Certificate);
    descriptor: (Ljava/security/cert/X509Certificate;)Ljava/security/Principal;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=7, locals=3, args_size=2
        start local 0 // org.apache.catalina.realm.RealmBase this
        start local 1 // java.security.cert.X509Certificate usercert
         0: .line 1207
            aload 0 /* this */
            getfield org.apache.catalina.realm.RealmBase.x509UsernameRetriever:Lorg/apache/catalina/realm/X509UsernameRetriever;
            aload 1 /* usercert */
            invokeinterface org.apache.catalina.realm.X509UsernameRetriever.getUsername:(Ljava/security/cert/X509Certificate;)Ljava/lang/String;
            astore 2 /* username */
        start local 2 // java.lang.String username
         1: .line 1209
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 3
         2: .line 1210
            getstatic org.apache.catalina.realm.RealmBase.log:Lorg/apache/juli/logging/Log;
            getstatic org.apache.catalina.realm.RealmBase.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "realmBase.gotX509Username"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 2 /* username */
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
         3: .line 1212
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* this */
            aload 2 /* username */
            invokevirtual org.apache.catalina.realm.RealmBase.getPrincipal:(Ljava/lang/String;)Ljava/security/Principal;
            areturn
        end local 2 // java.lang.String username
        end local 1 // java.security.cert.X509Certificate usercert
        end local 0 // org.apache.catalina.realm.RealmBase this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0      this  Lorg/apache/catalina/realm/RealmBase;
            0    4     1  usercert  Ljava/security/cert/X509Certificate;
            1    4     2  username  Ljava/lang/String;
    MethodParameters:
          Name  Flags
      usercert  

  protected abstract java.security.Principal getPrincipal(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/security/Principal;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
          Name  Flags
      username  

  protected java.security.Principal getPrincipal(org.ietf.jgss.GSSName, org.ietf.jgss.GSSCredential);
    descriptor: (Lorg/ietf/jgss/GSSName;Lorg/ietf/jgss/GSSCredential;)Ljava/security/Principal;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=5, args_size=3
        start local 0 // org.apache.catalina.realm.RealmBase this
        start local 1 // org.ietf.jgss.GSSName gssName
        start local 2 // org.ietf.jgss.GSSCredential gssCredential
         0: .line 1233
            aload 1 /* gssName */
            invokeinterface org.ietf.jgss.GSSName.toString:()Ljava/lang/String;
            astore 3 /* name */
        start local 3 // java.lang.String name
         1: .line 1235
            aload 0 /* this */
            invokevirtual org.apache.catalina.realm.RealmBase.isStripRealmForGss:()Z
            ifeq 5
         2: .line 1236
            aload 3 /* name */
            bipush 64
            invokevirtual java.lang.String.indexOf:(I)I
            istore 4 /* i */
        start local 4 // int i
         3: .line 1237
            iload 4 /* i */
            ifle 5
         4: .line 1239
            aload 3 /* name */
            iconst_0
            iload 4 /* i */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 3 /* name */
        end local 4 // int i
         5: .line 1243
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* this */
            aload 3 /* name */
            invokevirtual org.apache.catalina.realm.RealmBase.getPrincipal:(Ljava/lang/String;)Ljava/security/Principal;
            astore 4 /* p */
        start local 4 // java.security.Principal p
         6: .line 1245
            aload 4 /* p */
            instanceof org.apache.catalina.realm.GenericPrincipal
            ifeq 8
         7: .line 1246
            aload 4 /* p */
            checkcast org.apache.catalina.realm.GenericPrincipal
            aload 2 /* gssCredential */
            invokevirtual org.apache.catalina.realm.GenericPrincipal.setGssCredential:(Lorg/ietf/jgss/GSSCredential;)V
         8: .line 1249
      StackMap locals: java.security.Principal
      StackMap stack:
            aload 4 /* p */
            areturn
        end local 4 // java.security.Principal p
        end local 3 // java.lang.String name
        end local 2 // org.ietf.jgss.GSSCredential gssCredential
        end local 1 // org.ietf.jgss.GSSName gssName
        end local 0 // org.apache.catalina.realm.RealmBase this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    9     0           this  Lorg/apache/catalina/realm/RealmBase;
            0    9     1        gssName  Lorg/ietf/jgss/GSSName;
            0    9     2  gssCredential  Lorg/ietf/jgss/GSSCredential;
            1    9     3           name  Ljava/lang/String;
            3    5     4              i  I
            6    9     4              p  Ljava/security/Principal;
    MethodParameters:
               Name  Flags
      gssName        
      gssCredential  

  protected org.apache.catalina.Server getServer();
    descriptor: ()Lorg/apache/catalina/Server;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=3, args_size=1
        start local 0 // org.apache.catalina.realm.RealmBase this
         0: .line 1261
            aload 0 /* this */
            getfield org.apache.catalina.realm.RealmBase.container:Lorg/apache/catalina/Container;
            astore 1 /* c */
        start local 1 // org.apache.catalina.Container c
         1: .line 1262
            aload 1 /* c */
            instanceof org.apache.catalina.Context
            ifeq 3
         2: .line 1263
            aload 1 /* c */
            invokeinterface org.apache.catalina.Container.getParent:()Lorg/apache/catalina/Container;
            astore 1 /* c */
         3: .line 1265
      StackMap locals: org.apache.catalina.Container
      StackMap stack:
            aload 1 /* c */
            instanceof org.apache.catalina.Host
            ifeq 5
         4: .line 1266
            aload 1 /* c */
            invokeinterface org.apache.catalina.Container.getParent:()Lorg/apache/catalina/Container;
            astore 1 /* c */
         5: .line 1268
      StackMap locals:
      StackMap stack:
            aload 1 /* c */
            instanceof org.apache.catalina.Engine
            ifeq 9
         6: .line 1269
            aload 1 /* c */
            checkcast org.apache.catalina.Engine
            invokeinterface org.apache.catalina.Engine.getService:()Lorg/apache/catalina/Service;
            astore 2 /* s */
        start local 2 // org.apache.catalina.Service s
         7: .line 1270
            aload 2 /* s */
            ifnull 9
         8: .line 1271
            aload 2 /* s */
            invokeinterface org.apache.catalina.Service.getServer:()Lorg/apache/catalina/Server;
            areturn
        end local 2 // org.apache.catalina.Service s
         9: .line 1274
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 1 // org.apache.catalina.Container c
        end local 0 // org.apache.catalina.realm.RealmBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   10     0  this  Lorg/apache/catalina/realm/RealmBase;
            1   10     1     c  Lorg/apache/catalina/Container;
            7    9     2     s  Lorg/apache/catalina/Service;

  public static void main(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=12, args_size=1
        start local 0 // java.lang.String[] args
         0: .line 1318
            iconst_m1
            istore 1 /* saltLength */
        start local 1 // int saltLength
         1: .line 1319
            iconst_m1
            istore 2 /* iterations */
        start local 2 // int iterations
         2: .line 1320
            iconst_m1
            istore 3 /* keyLength */
        start local 3 // int keyLength
         3: .line 1322
            invokestatic java.nio.charset.Charset.defaultCharset:()Ljava/nio/charset/Charset;
            invokevirtual java.nio.charset.Charset.name:()Ljava/lang/String;
            astore 4 /* encoding */
        start local 4 // java.lang.String encoding
         4: .line 1325
            aconst_null
            astore 5 /* algorithm */
        start local 5 // java.lang.String algorithm
         5: .line 1326
            aconst_null
            astore 6 /* handlerClassName */
        start local 6 // java.lang.String handlerClassName
         6: .line 1328
            aload 0 /* args */
            arraylength
            ifne 9
         7: .line 1329
            invokestatic org.apache.catalina.realm.RealmBase.usage:()V
         8: .line 1330
            return
         9: .line 1333
      StackMap locals: java.lang.String[] int int int java.lang.String java.lang.String java.lang.String
      StackMap stack:
            iconst_0
            istore 7 /* argIndex */
        start local 7 // int argIndex
        10: .line 1335
            goto 27
        11: .line 1337
      StackMap locals: int
      StackMap stack:
            aload 0 /* args */
            iload 7 /* argIndex */
            aaload
            iconst_1
            invokevirtual java.lang.String.charAt:(I)C
            lookupswitch { // 6
                   97: 12
                  101: 14
                  104: 22
                  105: 16
                  107: 20
                  115: 18
              default: 24
          }
        12: .line 1339
      StackMap locals:
      StackMap stack:
            aload 0 /* args */
            iload 7 /* argIndex */
            iconst_1
            iadd
            aaload
            astore 5 /* algorithm */
        13: .line 1340
            goto 26
        14: .line 1343
      StackMap locals:
      StackMap stack:
            aload 0 /* args */
            iload 7 /* argIndex */
            iconst_1
            iadd
            aaload
            astore 4 /* encoding */
        15: .line 1344
            goto 26
        16: .line 1347
      StackMap locals:
      StackMap stack:
            aload 0 /* args */
            iload 7 /* argIndex */
            iconst_1
            iadd
            aaload
            invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;)I
            istore 2 /* iterations */
        17: .line 1348
            goto 26
        18: .line 1351
      StackMap locals:
      StackMap stack:
            aload 0 /* args */
            iload 7 /* argIndex */
            iconst_1
            iadd
            aaload
            invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;)I
            istore 1 /* saltLength */
        19: .line 1352
            goto 26
        20: .line 1355
      StackMap locals:
      StackMap stack:
            aload 0 /* args */
            iload 7 /* argIndex */
            iconst_1
            iadd
            aaload
            invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;)I
            istore 3 /* keyLength */
        21: .line 1356
            goto 26
        22: .line 1359
      StackMap locals:
      StackMap stack:
            aload 0 /* args */
            iload 7 /* argIndex */
            iconst_1
            iadd
            aaload
            astore 6 /* handlerClassName */
        23: .line 1360
            goto 26
        24: .line 1363
      StackMap locals:
      StackMap stack:
            invokestatic org.apache.catalina.realm.RealmBase.usage:()V
        25: .line 1364
            return
        26: .line 1367
      StackMap locals:
      StackMap stack:
            iinc 7 /* argIndex */ 2
        27: .line 1335
      StackMap locals:
      StackMap stack:
            aload 0 /* args */
            arraylength
            iload 7 /* argIndex */
            iconst_2
            iadd
            if_icmple 29
            aload 0 /* args */
            iload 7 /* argIndex */
            aaload
            invokevirtual java.lang.String.length:()I
            iconst_2
            if_icmpne 29
        28: .line 1336
            aload 0 /* args */
            iload 7 /* argIndex */
            aaload
            iconst_0
            invokevirtual java.lang.String.charAt:(I)C
            bipush 45
            if_icmpeq 11
        29: .line 1379
      StackMap locals:
      StackMap stack:
            aload 5 /* algorithm */
            ifnonnull 31
            aload 6 /* handlerClassName */
            ifnonnull 31
        30: .line 1380
            ldc "SHA-512"
            astore 5 /* algorithm */
        31: .line 1383
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 8 /* handler */
        start local 8 // org.apache.catalina.CredentialHandler handler
        32: .line 1385
            aload 6 /* handlerClassName */
            ifnonnull 42
        33: .line 1386
            getstatic org.apache.catalina.realm.RealmBase.credentialHandlerClasses:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 10
            goto 40
      StackMap locals: java.lang.String[] int int int java.lang.String java.lang.String java.lang.String int org.apache.catalina.CredentialHandler top java.util.Iterator
      StackMap stack:
        34: aload 10
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.Class
            astore 9 /* clazz */
        start local 9 // java.lang.Class clazz
        35: .line 1388
            aload 9 /* clazz */
            iconst_0
            anewarray java.lang.Class
            invokevirtual java.lang.Class.getConstructor:([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
            iconst_0
            anewarray java.lang.Object
            invokevirtual java.lang.reflect.Constructor.newInstance:([Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.apache.catalina.CredentialHandler
            astore 8 /* handler */
        36: .line 1389
            aload 8 /* handler */
            ldc "algorithm"
            aload 5 /* algorithm */
            invokestatic org.apache.tomcat.util.IntrospectionUtils.setProperty:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;)Z
            ifeq 40
        37: .line 1390
            goto 48
        38: .line 1392
      StackMap locals: java.lang.String[] int int int java.lang.String java.lang.String java.lang.String int org.apache.catalina.CredentialHandler java.lang.Class java.util.Iterator
      StackMap stack: java.lang.ReflectiveOperationException
            astore 11 /* e */
        start local 11 // java.lang.ReflectiveOperationException e
        39: .line 1394
            new java.lang.RuntimeException
            dup
            aload 11 /* e */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 11 // java.lang.ReflectiveOperationException e
        end local 9 // java.lang.Class clazz
        40: .line 1386
      StackMap locals: java.lang.String[] int int int java.lang.String java.lang.String java.lang.String int org.apache.catalina.CredentialHandler top java.util.Iterator
      StackMap stack:
            aload 10
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 34
        41: .line 1397
            goto 48
        42: .line 1399
      StackMap locals: java.lang.String[] int int int java.lang.String java.lang.String java.lang.String int org.apache.catalina.CredentialHandler
      StackMap stack:
            aload 6 /* handlerClassName */
            invokestatic java.lang.Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
            astore 9 /* clazz */
        start local 9 // java.lang.Class clazz
        43: .line 1400
            aload 9 /* clazz */
            iconst_0
            anewarray java.lang.Class
            invokevirtual java.lang.Class.getConstructor:([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
            iconst_0
            anewarray java.lang.Object
            invokevirtual java.lang.reflect.Constructor.newInstance:([Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.apache.catalina.realm.DigestCredentialHandlerBase
            astore 8 /* handler */
        44: .line 1401
            aload 8 /* handler */
            ldc "algorithm"
            aload 5 /* algorithm */
            invokestatic org.apache.tomcat.util.IntrospectionUtils.setProperty:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;)Z
            pop
        end local 9 // java.lang.Class clazz
        45: .line 1402
            goto 48
      StackMap locals:
      StackMap stack: java.lang.ReflectiveOperationException
        46: astore 9 /* e */
        start local 9 // java.lang.ReflectiveOperationException e
        47: .line 1403
            new java.lang.RuntimeException
            dup
            aload 9 /* e */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 9 // java.lang.ReflectiveOperationException e
        48: .line 1407
      StackMap locals:
      StackMap stack:
            aload 8 /* handler */
            ifnonnull 50
        49: .line 1408
            new java.lang.RuntimeException
            dup
            new java.security.NoSuchAlgorithmException
            dup
            aload 5 /* algorithm */
            invokespecial java.security.NoSuchAlgorithmException.<init>:(Ljava/lang/String;)V
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/Throwable;)V
            athrow
        50: .line 1411
      StackMap locals:
      StackMap stack:
            aload 8 /* handler */
            ldc "encoding"
            aload 4 /* encoding */
            invokestatic org.apache.tomcat.util.IntrospectionUtils.setProperty:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;)Z
            pop
        51: .line 1412
            iload 2 /* iterations */
            ifle 53
        52: .line 1413
            aload 8 /* handler */
            ldc "iterations"
            iload 2 /* iterations */
            invokestatic java.lang.Integer.toString:(I)Ljava/lang/String;
            invokestatic org.apache.tomcat.util.IntrospectionUtils.setProperty:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;)Z
            pop
        53: .line 1415
      StackMap locals:
      StackMap stack:
            iload 1 /* saltLength */
            iconst_m1
            if_icmple 55
        54: .line 1416
            aload 8 /* handler */
            ldc "saltLength"
            iload 1 /* saltLength */
            invokestatic java.lang.Integer.toString:(I)Ljava/lang/String;
            invokestatic org.apache.tomcat.util.IntrospectionUtils.setProperty:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;)Z
            pop
        55: .line 1418
      StackMap locals:
      StackMap stack:
            iload 3 /* keyLength */
            ifle 62
        56: .line 1419
            aload 8 /* handler */
            ldc "keyLength"
            iload 3 /* keyLength */
            invokestatic java.lang.Integer.toString:(I)Ljava/lang/String;
            invokestatic org.apache.tomcat.util.IntrospectionUtils.setProperty:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;)Z
            pop
        57: .line 1422
            goto 62
        58: .line 1423
      StackMap locals:
      StackMap stack:
            aload 0 /* args */
            iload 7 /* argIndex */
            aaload
            astore 9 /* credential */
        start local 9 // java.lang.String credential
        59: .line 1424
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            aload 9 /* credential */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
        60: .line 1425
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            aload 8 /* handler */
            aload 9 /* credential */
            invokeinterface org.apache.catalina.CredentialHandler.mutate:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        end local 9 // java.lang.String credential
        61: .line 1422
            iinc 7 /* argIndex */ 1
      StackMap locals:
      StackMap stack:
        62: iload 7 /* argIndex */
            aload 0 /* args */
            arraylength
            if_icmplt 58
        63: .line 1427
            return
        end local 8 // org.apache.catalina.CredentialHandler handler
        end local 7 // int argIndex
        end local 6 // java.lang.String handlerClassName
        end local 5 // java.lang.String algorithm
        end local 4 // java.lang.String encoding
        end local 3 // int keyLength
        end local 2 // int iterations
        end local 1 // int saltLength
        end local 0 // java.lang.String[] args
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   64     0              args  [Ljava/lang/String;
            1   64     1        saltLength  I
            2   64     2        iterations  I
            3   64     3         keyLength  I
            4   64     4          encoding  Ljava/lang/String;
            5   64     5         algorithm  Ljava/lang/String;
            6   64     6  handlerClassName  Ljava/lang/String;
           10   64     7          argIndex  I
           32   64     8           handler  Lorg/apache/catalina/CredentialHandler;
           35   40     9             clazz  Ljava/lang/Class<+Lorg/apache/catalina/realm/DigestCredentialHandlerBase;>;
           39   40    11                 e  Ljava/lang/ReflectiveOperationException;
           43   45     9             clazz  Ljava/lang/Class<*>;
           47   48     9                 e  Ljava/lang/ReflectiveOperationException;
           59   61     9        credential  Ljava/lang/String;
      Exception table:
        from    to  target  type
          35    37      38  Class java.lang.ReflectiveOperationException
          42    45      46  Class java.lang.ReflectiveOperationException
    MethodParameters:
      Name  Flags
      args  

  private static void usage();
    descriptor: ()V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 1431
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "Usage: RealmBase [-a <algorithm>] [-e <encoding>] [-i <iterations>] [-s <salt-length>] [-k <key-length>] [-h <handler-class-name>] <credentials>"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         1: .line 1434
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public java.lang.String getObjectNameKeyProperties();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // org.apache.catalina.realm.RealmBase this
         0: .line 1442
            new java.lang.StringBuilder
            dup
            ldc "type=Realm"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            astore 1 /* keyProperties */
        start local 1 // java.lang.StringBuilder keyProperties
         1: .line 1443
            aload 1 /* keyProperties */
            aload 0 /* this */
            invokevirtual org.apache.catalina.realm.RealmBase.getRealmSuffix:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         2: .line 1444
            aload 1 /* keyProperties */
            aload 0 /* this */
            getfield org.apache.catalina.realm.RealmBase.container:Lorg/apache/catalina/Container;
            invokeinterface org.apache.catalina.Container.getMBeanKeyProperties:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         3: .line 1446
            aload 1 /* keyProperties */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 1 // java.lang.StringBuilder keyProperties
        end local 0 // org.apache.catalina.realm.RealmBase this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    4     0           this  Lorg/apache/catalina/realm/RealmBase;
            1    4     1  keyProperties  Ljava/lang/StringBuilder;

  public java.lang.String getDomainInternal();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.catalina.realm.RealmBase this
         0: .line 1451
            aload 0 /* this */
            getfield org.apache.catalina.realm.RealmBase.container:Lorg/apache/catalina/Container;
            invokeinterface org.apache.catalina.Container.getDomain:()Ljava/lang/String;
            areturn
        end local 0 // org.apache.catalina.realm.RealmBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/catalina/realm/RealmBase;

  public java.lang.String getRealmPath();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.catalina.realm.RealmBase this
         0: .line 1457
            aload 0 /* this */
            getfield org.apache.catalina.realm.RealmBase.realmPath:Ljava/lang/String;
            areturn
        end local 0 // org.apache.catalina.realm.RealmBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/catalina/realm/RealmBase;

  public void setRealmPath(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.catalina.realm.RealmBase this
        start local 1 // java.lang.String theRealmPath
         0: .line 1461
            aload 0 /* this */
            aload 1 /* theRealmPath */
            putfield org.apache.catalina.realm.RealmBase.realmPath:Ljava/lang/String;
         1: .line 1462
            return
        end local 1 // java.lang.String theRealmPath
        end local 0 // org.apache.catalina.realm.RealmBase this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    2     0          this  Lorg/apache/catalina/realm/RealmBase;
            0    2     1  theRealmPath  Ljava/lang/String;
    MethodParameters:
              Name  Flags
      theRealmPath  

  protected java.lang.String getRealmSuffix();
    descriptor: ()Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.apache.catalina.realm.RealmBase this
         0: .line 1465
            new java.lang.StringBuilder
            dup
            ldc ",realmPath="
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            invokevirtual org.apache.catalina.realm.RealmBase.getRealmPath:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 0 // org.apache.catalina.realm.RealmBase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/catalina/realm/RealmBase;

  private static org.apache.catalina.realm.X509UsernameRetriever createUsernameRetriever(java.lang.String);
    descriptor: (Ljava/lang/String;)Lorg/apache/catalina/realm/X509UsernameRetriever;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=8, locals=2, args_size=1
        start local 0 // java.lang.String className
         0: .line 1525
            aload 0 /* className */
            ifnull 1
            aload 0 /* className */
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            invokevirtual java.lang.String.isEmpty:()Z
            ifeq 2
         1: .line 1526
      StackMap locals:
      StackMap stack:
            new org.apache.catalina.realm.X509SubjectDnRetriever
            dup
            invokespecial org.apache.catalina.realm.X509SubjectDnRetriever.<init>:()V
            areturn
         2: .line 1530
      StackMap locals:
      StackMap stack:
            aload 0 /* className */
            invokestatic java.lang.Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
            astore 1 /* clazz */
        start local 1 // java.lang.Class clazz
         3: .line 1531
            aload 1 /* clazz */
            iconst_0
            anewarray java.lang.Class
            invokevirtual java.lang.Class.getConstructor:([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
            iconst_0
            anewarray java.lang.Object
            invokevirtual java.lang.reflect.Constructor.newInstance:([Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.apache.catalina.realm.X509UsernameRetriever
         4: areturn
        end local 1 // java.lang.Class clazz
         5: .line 1532
      StackMap locals:
      StackMap stack: java.lang.ReflectiveOperationException
            astore 1 /* e */
        start local 1 // java.lang.ReflectiveOperationException e
         6: .line 1533
            new org.apache.catalina.LifecycleException
            dup
            getstatic org.apache.catalina.realm.RealmBase.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "realmBase.createUsernameRetriever.newInstance"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* className */
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            aload 1 /* e */
            invokespecial org.apache.catalina.LifecycleException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 1 // java.lang.ReflectiveOperationException e
         7: .line 1534
      StackMap locals:
      StackMap stack: java.lang.ClassCastException
            astore 1 /* e */
        start local 1 // java.lang.ClassCastException e
         8: .line 1535
            new org.apache.catalina.LifecycleException
            dup
            getstatic org.apache.catalina.realm.RealmBase.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "realmBase.createUsernameRetriever.ClassCastException"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* className */
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            aload 1 /* e */
            invokespecial org.apache.catalina.LifecycleException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 1 // java.lang.ClassCastException e
        end local 0 // java.lang.String className
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    9     0  className  Ljava/lang/String;
            3    5     1      clazz  Ljava/lang/Class<+Lorg/apache/catalina/realm/X509UsernameRetriever;>;
            6    7     1          e  Ljava/lang/ReflectiveOperationException;
            8    9     1          e  Ljava/lang/ClassCastException;
      Exception table:
        from    to  target  type
           2     4       5  Class java.lang.ReflectiveOperationException
           2     4       7  Class java.lang.ClassCastException
    Exceptions:
      throws org.apache.catalina.LifecycleException
    MethodParameters:
           Name  Flags
      className  
}
SourceFile: "RealmBase.java"
NestMembers:
  org.apache.catalina.realm.RealmBase$AllRolesMode
InnerClasses:
  public final TransportGuarantee = jakarta.servlet.annotation.ServletSecurity$TransportGuarantee of jakarta.servlet.annotation.ServletSecurity
  protected AllRolesMode = org.apache.catalina.realm.RealmBase$AllRolesMode of org.apache.catalina.realm.RealmBase