public class org.apache.catalina.valves.ErrorReportValve extends org.apache.catalina.valves.ValveBase
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.catalina.valves.ErrorReportValve
  super_class: org.apache.catalina.valves.ValveBase
{
  private boolean showReport;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private boolean showServerInfo;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private final org.apache.catalina.util.ErrorPageSupport errorPageSupport;
    descriptor: Lorg/apache/catalina/util/ErrorPageSupport;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.apache.catalina.valves.ErrorReportValve this
         0: .line 70
            aload 0 /* this */
            iconst_1
            invokespecial org.apache.catalina.valves.ValveBase.<init>:(Z)V
         1: .line 60
            aload 0 /* this */
            iconst_1
            putfield org.apache.catalina.valves.ErrorReportValve.showReport:Z
         2: .line 62
            aload 0 /* this */
            iconst_1
            putfield org.apache.catalina.valves.ErrorReportValve.showServerInfo:Z
         3: .line 64
            aload 0 /* this */
            new org.apache.catalina.util.ErrorPageSupport
            dup
            invokespecial org.apache.catalina.util.ErrorPageSupport.<init>:()V
            putfield org.apache.catalina.valves.ErrorReportValve.errorPageSupport:Lorg/apache/catalina/util/ErrorPageSupport;
         4: .line 71
            return
        end local 0 // org.apache.catalina.valves.ErrorReportValve this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/apache/catalina/valves/ErrorReportValve;

  public void invoke(org.apache.catalina.connector.Request, org.apache.catalina.connector.Response);
    descriptor: (Lorg/apache/catalina/connector/Request;Lorg/apache/catalina/connector/Response;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // org.apache.catalina.valves.ErrorReportValve this
        start local 1 // org.apache.catalina.connector.Request request
        start local 2 // org.apache.catalina.connector.Response response
         0: .line 92
            aload 0 /* this */
            invokevirtual org.apache.catalina.valves.ErrorReportValve.getNext:()Lorg/apache/catalina/Valve;
            aload 1 /* request */
            aload 2 /* response */
            invokeinterface org.apache.catalina.Valve.invoke:(Lorg/apache/catalina/connector/Request;Lorg/apache/catalina/connector/Response;)V
         1: .line 94
            aload 2 /* response */
            invokevirtual org.apache.catalina.connector.Response.isCommitted:()Z
            ifeq 11
         2: .line 95
            aload 2 /* response */
            invokevirtual org.apache.catalina.connector.Response.setErrorReported:()Z
            ifeq 10
         3: .line 100
            aload 2 /* response */
            invokevirtual org.apache.catalina.connector.Response.flushBuffer:()V
         4: .line 101
            goto 7
      StackMap locals:
      StackMap stack: java.lang.Throwable
         5: astore 3 /* t */
        start local 3 // java.lang.Throwable t
         6: .line 102
            aload 3 /* t */
            invokestatic org.apache.tomcat.util.ExceptionUtils.handleThrowable:(Ljava/lang/Throwable;)V
        end local 3 // java.lang.Throwable t
         7: .line 106
      StackMap locals:
      StackMap stack:
            aload 2 /* response */
            invokevirtual org.apache.catalina.connector.Response.getCoyoteResponse:()Lorg/apache/coyote/Response;
            getstatic org.apache.coyote.ActionCode.CLOSE_NOW:Lorg/apache/coyote/ActionCode;
         8: .line 107
            aload 1 /* request */
            ldc "jakarta.servlet.error.exception"
            invokevirtual org.apache.catalina.connector.Request.getAttribute:(Ljava/lang/String;)Ljava/lang/Object;
         9: .line 106
            invokevirtual org.apache.coyote.Response.action:(Lorg/apache/coyote/ActionCode;Ljava/lang/Object;)V
        10: .line 109
      StackMap locals:
      StackMap stack:
            return
        11: .line 112
      StackMap locals:
      StackMap stack:
            aload 1 /* request */
            ldc "jakarta.servlet.error.exception"
            invokevirtual org.apache.catalina.connector.Request.getAttribute:(Ljava/lang/String;)Ljava/lang/Object;
            checkcast java.lang.Throwable
            astore 3 /* throwable */
        start local 3 // java.lang.Throwable throwable
        12: .line 116
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.isAsync:()Z
            ifeq 14
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.isAsyncCompleting:()Z
            ifne 14
        13: .line 117
            return
        14: .line 120
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 3 /* throwable */
            ifnull 17
            aload 2 /* response */
            invokevirtual org.apache.catalina.connector.Response.isError:()Z
            ifne 17
        15: .line 126
            aload 2 /* response */
            invokevirtual org.apache.catalina.connector.Response.reset:()V
        16: .line 127
            aload 2 /* response */
            sipush 500
            invokevirtual org.apache.catalina.connector.Response.sendError:(I)V
        17: .line 133
      StackMap locals:
      StackMap stack:
            aload 2 /* response */
            iconst_0
            invokevirtual org.apache.catalina.connector.Response.setSuspended:(Z)V
        18: .line 136
            aload 0 /* this */
            aload 1 /* request */
            aload 2 /* response */
            aload 3 /* throwable */
            invokevirtual org.apache.catalina.valves.ErrorReportValve.report:(Lorg/apache/catalina/connector/Request;Lorg/apache/catalina/connector/Response;Ljava/lang/Throwable;)V
        19: .line 137
            goto 22
      StackMap locals:
      StackMap stack: java.lang.Throwable
        20: astore 4 /* tt */
        start local 4 // java.lang.Throwable tt
        21: .line 138
            aload 4 /* tt */
            invokestatic org.apache.tomcat.util.ExceptionUtils.handleThrowable:(Ljava/lang/Throwable;)V
        end local 4 // java.lang.Throwable tt
        22: .line 140
      StackMap locals:
      StackMap stack:
            return
        end local 3 // java.lang.Throwable throwable
        end local 2 // org.apache.catalina.connector.Response response
        end local 1 // org.apache.catalina.connector.Request request
        end local 0 // org.apache.catalina.valves.ErrorReportValve this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   23     0       this  Lorg/apache/catalina/valves/ErrorReportValve;
            0   23     1    request  Lorg/apache/catalina/connector/Request;
            0   23     2   response  Lorg/apache/catalina/connector/Response;
            6    7     3          t  Ljava/lang/Throwable;
           12   23     3  throwable  Ljava/lang/Throwable;
           21   22     4         tt  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           3     4       5  Class java.lang.Throwable
          18    19      20  Class java.lang.Throwable
    Exceptions:
      throws java.io.IOException, jakarta.servlet.ServletException
    MethodParameters:
          Name  Flags
      request   
      response  

  protected void report(org.apache.catalina.connector.Request, org.apache.catalina.connector.Response, java.lang.Throwable);
    descriptor: (Lorg/apache/catalina/connector/Request;Lorg/apache/catalina/connector/Response;Ljava/lang/Throwable;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=7, locals=15, args_size=4
        start local 0 // org.apache.catalina.valves.ErrorReportValve this
        start local 1 // org.apache.catalina.connector.Request request
        start local 2 // org.apache.catalina.connector.Response response
        start local 3 // java.lang.Throwable throwable
         0: .line 156
            aload 2 /* response */
            invokevirtual org.apache.catalina.connector.Response.getStatus:()I
            istore 4 /* statusCode */
        start local 4 // int statusCode
         1: .line 162
            iload 4 /* statusCode */
            sipush 400
            if_icmplt 2
            aload 2 /* response */
            invokevirtual org.apache.catalina.connector.Response.getContentWritten:()J
            lconst_0
            lcmp
            ifgt 2
            aload 2 /* response */
            invokevirtual org.apache.catalina.connector.Response.setErrorReported:()Z
            ifne 3
         2: .line 163
      StackMap locals: int
      StackMap stack:
            return
         3: .line 168
      StackMap locals:
      StackMap stack:
            new java.util.concurrent.atomic.AtomicBoolean
            dup
            iconst_0
            invokespecial java.util.concurrent.atomic.AtomicBoolean.<init>:(Z)V
            astore 5 /* result */
        start local 5 // java.util.concurrent.atomic.AtomicBoolean result
         4: .line 169
            aload 2 /* response */
            invokevirtual org.apache.catalina.connector.Response.getCoyoteResponse:()Lorg/apache/coyote/Response;
            getstatic org.apache.coyote.ActionCode.IS_IO_ALLOWED:Lorg/apache/coyote/ActionCode;
            aload 5 /* result */
            invokevirtual org.apache.coyote.Response.action:(Lorg/apache/coyote/ActionCode;Ljava/lang/Object;)V
         5: .line 170
            aload 5 /* result */
            invokevirtual java.util.concurrent.atomic.AtomicBoolean.get:()Z
            ifne 7
         6: .line 171
            return
         7: .line 174
      StackMap locals: java.util.concurrent.atomic.AtomicBoolean
      StackMap stack:
            aconst_null
            astore 6 /* errorPage */
        start local 6 // org.apache.tomcat.util.descriptor.web.ErrorPage errorPage
         8: .line 175
            aload 3 /* throwable */
            ifnull 10
         9: .line 176
            aload 0 /* this */
            getfield org.apache.catalina.valves.ErrorReportValve.errorPageSupport:Lorg/apache/catalina/util/ErrorPageSupport;
            aload 3 /* throwable */
            invokevirtual org.apache.catalina.util.ErrorPageSupport.find:(Ljava/lang/Throwable;)Lorg/apache/tomcat/util/descriptor/web/ErrorPage;
            astore 6 /* errorPage */
        10: .line 178
      StackMap locals: org.apache.tomcat.util.descriptor.web.ErrorPage
      StackMap stack:
            aload 6 /* errorPage */
            ifnonnull 12
        11: .line 179
            aload 0 /* this */
            getfield org.apache.catalina.valves.ErrorReportValve.errorPageSupport:Lorg/apache/catalina/util/ErrorPageSupport;
            iload 4 /* statusCode */
            invokevirtual org.apache.catalina.util.ErrorPageSupport.find:(I)Lorg/apache/tomcat/util/descriptor/web/ErrorPage;
            astore 6 /* errorPage */
        12: .line 181
      StackMap locals:
      StackMap stack:
            aload 6 /* errorPage */
            ifnonnull 14
        13: .line 183
            aload 0 /* this */
            getfield org.apache.catalina.valves.ErrorReportValve.errorPageSupport:Lorg/apache/catalina/util/ErrorPageSupport;
            iconst_0
            invokevirtual org.apache.catalina.util.ErrorPageSupport.find:(I)Lorg/apache/tomcat/util/descriptor/web/ErrorPage;
            astore 6 /* errorPage */
        14: .line 187
      StackMap locals:
      StackMap stack:
            aload 6 /* errorPage */
            ifnull 17
        15: .line 188
            aload 0 /* this */
            aload 6 /* errorPage */
            invokevirtual org.apache.tomcat.util.descriptor.web.ErrorPage.getLocation:()Ljava/lang/String;
            aload 2 /* response */
            invokevirtual org.apache.catalina.valves.ErrorReportValve.sendErrorPage:(Ljava/lang/String;Lorg/apache/catalina/connector/Response;)Z
            ifeq 17
        16: .line 191
            return
        17: .line 195
      StackMap locals:
      StackMap stack:
            aload 2 /* response */
            invokevirtual org.apache.catalina.connector.Response.getMessage:()Ljava/lang/String;
            invokestatic org.apache.tomcat.util.security.Escape.htmlElementContent:(Ljava/lang/String;)Ljava/lang/String;
            astore 7 /* message */
        start local 7 // java.lang.String message
        18: .line 196
            aload 7 /* message */
            ifnonnull 33
        19: .line 197
            aload 3 /* throwable */
            ifnull 31
        20: .line 198
            aload 3 /* throwable */
            invokevirtual java.lang.Throwable.getMessage:()Ljava/lang/String;
            astore 8 /* exceptionMessage */
        start local 8 // java.lang.String exceptionMessage
        21: .line 199
            aload 8 /* exceptionMessage */
            ifnull 31
            aload 8 /* exceptionMessage */
            invokevirtual java.lang.String.length:()I
            ifle 31
        22: .line 200
            aconst_null
            astore 9
            aconst_null
            astore 10
        23: new java.util.Scanner
            dup
            aload 8 /* exceptionMessage */
            invokespecial java.util.Scanner.<init>:(Ljava/lang/String;)V
            astore 11 /* scanner */
        start local 11 // java.util.Scanner scanner
        24: .line 201
            aload 11 /* scanner */
            invokevirtual java.util.Scanner.nextLine:()Ljava/lang/String;
            invokestatic org.apache.tomcat.util.security.Escape.htmlElementContent:(Ljava/lang/String;)Ljava/lang/String;
            astore 7 /* message */
        25: .line 202
            aload 11 /* scanner */
            ifnull 31
            aload 11 /* scanner */
            invokevirtual java.util.Scanner.close:()V
            goto 31
      StackMap locals: org.apache.catalina.valves.ErrorReportValve org.apache.catalina.connector.Request org.apache.catalina.connector.Response java.lang.Throwable int java.util.concurrent.atomic.AtomicBoolean org.apache.tomcat.util.descriptor.web.ErrorPage java.lang.String java.lang.String java.lang.Throwable java.lang.Throwable java.util.Scanner
      StackMap stack: java.lang.Throwable
        26: astore 9
            aload 11 /* scanner */
            ifnull 27
            aload 11 /* scanner */
            invokevirtual java.util.Scanner.close:()V
        end local 11 // java.util.Scanner scanner
      StackMap locals:
      StackMap stack:
        27: aload 9
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        28: astore 10
            aload 9
            ifnonnull 29
            aload 10
            astore 9
            goto 30
      StackMap locals:
      StackMap stack:
        29: aload 9
            aload 10
            if_acmpeq 30
            aload 9
            aload 10
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        30: aload 9
            athrow
        end local 8 // java.lang.String exceptionMessage
        31: .line 205
      StackMap locals:
      StackMap stack:
            aload 7 /* message */
            ifnonnull 33
        32: .line 206
            ldc ""
            astore 7 /* message */
        33: .line 212
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 8 /* reason */
        start local 8 // java.lang.String reason
        34: .line 213
            aconst_null
            astore 9 /* description */
        start local 9 // java.lang.String description
        35: .line 215
            ldc "org.apache.catalina.valves"
            aload 1 /* request */
            invokevirtual org.apache.catalina.connector.Request.getLocales:()Ljava/util/Enumeration;
        36: .line 214
            invokestatic org.apache.tomcat.util.res.StringManager.getManager:(Ljava/lang/String;Ljava/util/Enumeration;)Lorg/apache/tomcat/util/res/StringManager;
            astore 10 /* smClient */
        start local 10 // org.apache.tomcat.util.res.StringManager smClient
        37: .line 216
            aload 2 /* response */
            aload 10 /* smClient */
            invokevirtual org.apache.tomcat.util.res.StringManager.getLocale:()Ljava/util/Locale;
            invokevirtual org.apache.catalina.connector.Response.setLocale:(Ljava/util/Locale;)V
        38: .line 218
            aload 10 /* smClient */
            new java.lang.StringBuilder
            dup
            ldc "http."
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 4 /* statusCode */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc ".reason"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
            astore 8 /* reason */
        39: .line 219
            aload 10 /* smClient */
            new java.lang.StringBuilder
            dup
            ldc "http."
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 4 /* statusCode */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc ".desc"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
            astore 9 /* description */
        40: .line 220
            goto 43
      StackMap locals: org.apache.catalina.valves.ErrorReportValve org.apache.catalina.connector.Request org.apache.catalina.connector.Response java.lang.Throwable int java.util.concurrent.atomic.AtomicBoolean org.apache.tomcat.util.descriptor.web.ErrorPage java.lang.String java.lang.String java.lang.String org.apache.tomcat.util.res.StringManager
      StackMap stack: java.lang.Throwable
        41: astore 11 /* t */
        start local 11 // java.lang.Throwable t
        42: .line 221
            aload 11 /* t */
            invokestatic org.apache.tomcat.util.ExceptionUtils.handleThrowable:(Ljava/lang/Throwable;)V
        end local 11 // java.lang.Throwable t
        43: .line 223
      StackMap locals:
      StackMap stack:
            aload 8 /* reason */
            ifnull 44
            aload 9 /* description */
            ifnonnull 48
        44: .line 224
      StackMap locals:
      StackMap stack:
            aload 7 /* message */
            invokevirtual java.lang.String.isEmpty:()Z
            ifeq 46
        45: .line 225
            return
        46: .line 227
      StackMap locals:
      StackMap stack:
            aload 10 /* smClient */
            ldc "errorReportValve.unknownReason"
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
            astore 8 /* reason */
        47: .line 228
            aload 10 /* smClient */
            ldc "errorReportValve.noDescription"
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
            astore 9 /* description */
        48: .line 232
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 11 /* sb */
        start local 11 // java.lang.StringBuilder sb
        49: .line 234
            aload 11 /* sb */
            ldc "<!doctype html><html lang=\""
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        50: .line 235
            aload 11 /* sb */
            aload 10 /* smClient */
            invokevirtual org.apache.tomcat.util.res.StringManager.getLocale:()Ljava/util/Locale;
            invokevirtual java.util.Locale.getLanguage:()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;
            pop
        51: .line 236
            aload 11 /* sb */
            ldc "<head>"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        52: .line 237
            aload 11 /* sb */
            ldc "<title>"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        53: .line 238
            aload 11 /* sb */
            aload 10 /* smClient */
            ldc "errorReportValve.statusHeader"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
        54: .line 239
            iload 4 /* statusCode */
            invokestatic java.lang.String.valueOf:(I)Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 8 /* reason */
            aastore
        55: .line 238
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        56: .line 240
            aload 11 /* sb */
            ldc "</title>"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        57: .line 241
            aload 11 /* sb */
            ldc "<style type=\"text/css\">"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        58: .line 242
            aload 11 /* sb */
            ldc "body {font-family:Tahoma,Arial,sans-serif;} h1, h2, h3, b {color:white;background-color:#525D76;} h1 {font-size:22px;} h2 {font-size:16px;} h3 {font-size:14px;} p {font-size:12px;} a {color:black;} .line {height:1px;background-color:#525D76;border:none;}"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        59: .line 243
            aload 11 /* sb */
            ldc "</style>"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        60: .line 244
            aload 11 /* sb */
            ldc "</head><body>"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        61: .line 245
            aload 11 /* sb */
            ldc "<h1>"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        62: .line 246
            aload 11 /* sb */
            aload 10 /* smClient */
            ldc "errorReportValve.statusHeader"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
        63: .line 247
            iload 4 /* statusCode */
            invokestatic java.lang.String.valueOf:(I)Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 8 /* reason */
            aastore
        64: .line 246
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        65: .line 247
            ldc "</h1>"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        66: .line 248
            aload 0 /* this */
            invokevirtual org.apache.catalina.valves.ErrorReportValve.isShowReport:()Z
            ifeq 111
        67: .line 249
            aload 11 /* sb */
            ldc "<hr class=\"line\" />"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        68: .line 250
            aload 11 /* sb */
            ldc "<p><b>"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        69: .line 251
            aload 11 /* sb */
            aload 10 /* smClient */
            ldc "errorReportValve.type"
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        70: .line 252
            aload 11 /* sb */
            ldc "</b> "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        71: .line 253
            aload 3 /* throwable */
            ifnull 74
        72: .line 254
            aload 11 /* sb */
            aload 10 /* smClient */
            ldc "errorReportValve.exceptionReport"
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        73: .line 255
            goto 75
        74: .line 256
      StackMap locals: java.lang.StringBuilder
      StackMap stack:
            aload 11 /* sb */
            aload 10 /* smClient */
            ldc "errorReportValve.statusReport"
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        75: .line 258
      StackMap locals:
      StackMap stack:
            aload 11 /* sb */
            ldc "</p>"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        76: .line 259
            aload 7 /* message */
            invokevirtual java.lang.String.isEmpty:()Z
            ifne 81
        77: .line 260
            aload 11 /* sb */
            ldc "<p><b>"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        78: .line 261
            aload 11 /* sb */
            aload 10 /* smClient */
            ldc "errorReportValve.message"
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        79: .line 262
            aload 11 /* sb */
            ldc "</b> "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        80: .line 263
            aload 11 /* sb */
            aload 7 /* message */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "</p>"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        81: .line 265
      StackMap locals:
      StackMap stack:
            aload 11 /* sb */
            ldc "<p><b>"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        82: .line 266
            aload 11 /* sb */
            aload 10 /* smClient */
            ldc "errorReportValve.description"
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        83: .line 267
            aload 11 /* sb */
            ldc "</b> "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        84: .line 268
            aload 11 /* sb */
            aload 9 /* description */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        85: .line 269
            aload 11 /* sb */
            ldc "</p>"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        86: .line 270
            aload 3 /* throwable */
            ifnull 110
        87: .line 271
            aload 0 /* this */
            aload 3 /* throwable */
            invokevirtual org.apache.catalina.valves.ErrorReportValve.getPartialServletStackTrace:(Ljava/lang/Throwable;)Ljava/lang/String;
            astore 12 /* stackTrace */
        start local 12 // java.lang.String stackTrace
        88: .line 272
            aload 11 /* sb */
            ldc "<p><b>"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        89: .line 273
            aload 11 /* sb */
            aload 10 /* smClient */
            ldc "errorReportValve.exception"
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        90: .line 274
            aload 11 /* sb */
            ldc "</b></p><pre>"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        91: .line 275
            aload 11 /* sb */
            aload 12 /* stackTrace */
            invokestatic org.apache.tomcat.util.security.Escape.htmlElementContent:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        92: .line 276
            aload 11 /* sb */
            ldc "</pre>"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        93: .line 278
            iconst_0
            istore 13 /* loops */
        start local 13 // int loops
        94: .line 279
            aload 3 /* throwable */
            invokevirtual java.lang.Throwable.getCause:()Ljava/lang/Throwable;
            astore 14 /* rootCause */
        start local 14 // java.lang.Throwable rootCause
        95: .line 280
            goto 104
        96: .line 281
      StackMap locals: java.lang.String int java.lang.Throwable
      StackMap stack:
            aload 0 /* this */
            aload 14 /* rootCause */
            invokevirtual org.apache.catalina.valves.ErrorReportValve.getPartialServletStackTrace:(Ljava/lang/Throwable;)Ljava/lang/String;
            astore 12 /* stackTrace */
        97: .line 282
            aload 11 /* sb */
            ldc "<p><b>"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        98: .line 283
            aload 11 /* sb */
            aload 10 /* smClient */
            ldc "errorReportValve.rootCause"
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        99: .line 284
            aload 11 /* sb */
            ldc "</b></p><pre>"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
       100: .line 285
            aload 11 /* sb */
            aload 12 /* stackTrace */
            invokestatic org.apache.tomcat.util.security.Escape.htmlElementContent:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
       101: .line 286
            aload 11 /* sb */
            ldc "</pre>"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
       102: .line 288
            aload 14 /* rootCause */
            invokevirtual java.lang.Throwable.getCause:()Ljava/lang/Throwable;
            astore 14 /* rootCause */
       103: .line 289
            iinc 13 /* loops */ 1
       104: .line 280
      StackMap locals:
      StackMap stack:
            aload 14 /* rootCause */
            ifnull 105
            iload 13 /* loops */
            bipush 10
            if_icmplt 96
       105: .line 292
      StackMap locals:
      StackMap stack:
            aload 11 /* sb */
            ldc "<p><b>"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
       106: .line 293
            aload 11 /* sb */
            aload 10 /* smClient */
            ldc "errorReportValve.note"
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
       107: .line 294
            aload 11 /* sb */
            ldc "</b> "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
       108: .line 295
            aload 11 /* sb */
            aload 10 /* smClient */
            ldc "errorReportValve.rootCauseInLogs"
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
       109: .line 296
            aload 11 /* sb */
            ldc "</p>"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        end local 14 // java.lang.Throwable rootCause
        end local 13 // int loops
        end local 12 // java.lang.String stackTrace
       110: .line 299
      StackMap locals:
      StackMap stack:
            aload 11 /* sb */
            ldc "<hr class=\"line\" />"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
       111: .line 301
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.apache.catalina.valves.ErrorReportValve.isShowServerInfo:()Z
            ifeq 113
       112: .line 302
            aload 11 /* sb */
            ldc "<h3>"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokestatic org.apache.catalina.util.ServerInfo.getServerInfo:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "</h3>"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
       113: .line 304
      StackMap locals:
      StackMap stack:
            aload 11 /* sb */
            ldc "</body></html>"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
       114: .line 308
            aload 2 /* response */
            ldc "text/html"
            invokevirtual org.apache.catalina.connector.Response.setContentType:(Ljava/lang/String;)V
       115: .line 309
            aload 2 /* response */
            ldc "utf-8"
            invokevirtual org.apache.catalina.connector.Response.setCharacterEncoding:(Ljava/lang/String;)V
       116: .line 310
            goto 121
      StackMap locals:
      StackMap stack: java.lang.Throwable
       117: astore 12 /* t */
        start local 12 // java.lang.Throwable t
       118: .line 311
            aload 12 /* t */
            invokestatic org.apache.tomcat.util.ExceptionUtils.handleThrowable:(Ljava/lang/Throwable;)V
       119: .line 312
            aload 0 /* this */
            getfield org.apache.catalina.valves.ErrorReportValve.container:Lorg/apache/catalina/Container;
            invokeinterface org.apache.catalina.Container.getLogger:()Lorg/apache/juli/logging/Log;
            invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
            ifeq 121
       120: .line 313
            aload 0 /* this */
            getfield org.apache.catalina.valves.ErrorReportValve.container:Lorg/apache/catalina/Container;
            invokeinterface org.apache.catalina.Container.getLogger:()Lorg/apache/juli/logging/Log;
            ldc "status.setContentType"
            aload 12 /* t */
            invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        end local 12 // java.lang.Throwable t
       121: .line 316
      StackMap locals:
      StackMap stack:
            aload 2 /* response */
            invokevirtual org.apache.catalina.connector.Response.getReporter:()Ljava/io/PrintWriter;
            astore 12 /* writer */
        start local 12 // java.io.Writer writer
       122: .line 317
            aload 12 /* writer */
            ifnull 128
       123: .line 320
            aload 12 /* writer */
            aload 11 /* sb */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.Writer.write:(Ljava/lang/String;)V
       124: .line 321
            aload 2 /* response */
            invokevirtual org.apache.catalina.connector.Response.finishResponse:()V
        end local 12 // java.io.Writer writer
       125: .line 323
            goto 128
      StackMap locals:
      StackMap stack: java.io.IOException
       126: pop
            goto 128
       127: .line 325
      StackMap locals:
      StackMap stack: java.lang.IllegalStateException
            pop
       128: .line 329
      StackMap locals:
      StackMap stack:
            return
        end local 11 // java.lang.StringBuilder sb
        end local 10 // org.apache.tomcat.util.res.StringManager smClient
        end local 9 // java.lang.String description
        end local 8 // java.lang.String reason
        end local 7 // java.lang.String message
        end local 6 // org.apache.tomcat.util.descriptor.web.ErrorPage errorPage
        end local 5 // java.util.concurrent.atomic.AtomicBoolean result
        end local 4 // int statusCode
        end local 3 // java.lang.Throwable throwable
        end local 2 // org.apache.catalina.connector.Response response
        end local 1 // org.apache.catalina.connector.Request request
        end local 0 // org.apache.catalina.valves.ErrorReportValve this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0  129     0              this  Lorg/apache/catalina/valves/ErrorReportValve;
            0  129     1           request  Lorg/apache/catalina/connector/Request;
            0  129     2          response  Lorg/apache/catalina/connector/Response;
            0  129     3         throwable  Ljava/lang/Throwable;
            1  129     4        statusCode  I
            4  129     5            result  Ljava/util/concurrent/atomic/AtomicBoolean;
            8  129     6         errorPage  Lorg/apache/tomcat/util/descriptor/web/ErrorPage;
           18  129     7           message  Ljava/lang/String;
           21   31     8  exceptionMessage  Ljava/lang/String;
           24   27    11           scanner  Ljava/util/Scanner;
           34  129     8            reason  Ljava/lang/String;
           35  129     9       description  Ljava/lang/String;
           37  129    10          smClient  Lorg/apache/tomcat/util/res/StringManager;
           42   43    11                 t  Ljava/lang/Throwable;
           49  129    11                sb  Ljava/lang/StringBuilder;
           88  110    12        stackTrace  Ljava/lang/String;
           94  110    13             loops  I
           95  110    14         rootCause  Ljava/lang/Throwable;
          118  121    12                 t  Ljava/lang/Throwable;
          122  125    12            writer  Ljava/io/Writer;
      Exception table:
        from    to  target  type
          24    25      26  any
          23    28      28  any
          38    40      41  Class java.lang.Throwable
         114   116     117  Class java.lang.Throwable
         114   125     126  Class java.io.IOException
         114   125     127  Class java.lang.IllegalStateException
    MethodParameters:
           Name  Flags
      request    
      response   
      throwable  

  protected java.lang.String getPartialServletStackTrace(java.lang.Throwable);
    descriptor: (Ljava/lang/Throwable;)Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=6, args_size=2
        start local 0 // org.apache.catalina.valves.ErrorReportValve this
        start local 1 // java.lang.Throwable t
         0: .line 339
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 2 /* trace */
        start local 2 // java.lang.StringBuilder trace
         1: .line 340
            aload 2 /* trace */
            aload 1 /* t */
            invokevirtual java.lang.Throwable.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokestatic java.lang.System.lineSeparator:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         2: .line 341
            aload 1 /* t */
            invokevirtual java.lang.Throwable.getStackTrace:()[Ljava/lang/StackTraceElement;
            astore 3 /* elements */
        start local 3 // java.lang.StackTraceElement[] elements
         3: .line 342
            aload 3 /* elements */
            arraylength
            istore 4 /* pos */
        start local 4 // int pos
         4: .line 343
            aload 3 /* elements */
            arraylength
            iconst_1
            isub
            istore 5 /* i */
        start local 5 // int i
         5: goto 14
         6: .line 344
      StackMap locals: org.apache.catalina.valves.ErrorReportValve java.lang.Throwable java.lang.StringBuilder java.lang.StackTraceElement[] int int
      StackMap stack:
            aload 3 /* elements */
            iload 5 /* i */
            aaload
            invokevirtual java.lang.StackTraceElement.getClassName:()Ljava/lang/String;
         7: .line 345
            ldc "org.apache.catalina.core.ApplicationFilterChain"
         8: .line 344
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
         9: .line 345
            ifeq 13
        10: .line 346
            aload 3 /* elements */
            iload 5 /* i */
            aaload
            invokevirtual java.lang.StackTraceElement.getMethodName:()Ljava/lang/String;
            ldc "internalDoFilter"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 13
        11: .line 347
            iload 5 /* i */
            istore 4 /* pos */
        12: .line 348
            goto 15
        13: .line 343
      StackMap locals:
      StackMap stack:
            iinc 5 /* i */ -1
      StackMap locals:
      StackMap stack:
        14: iload 5 /* i */
            ifge 6
        end local 5 // int i
        15: .line 351
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 5 /* i */
        start local 5 // int i
        16: goto 23
        17: .line 352
      StackMap locals: int
      StackMap stack:
            aload 3 /* elements */
            iload 5 /* i */
            aaload
            invokevirtual java.lang.StackTraceElement.getClassName:()Ljava/lang/String;
        18: .line 353
            ldc "org.apache.catalina.core."
        19: .line 352
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
        20: .line 353
            ifne 22
        21: .line 354
            aload 2 /* trace */
            bipush 9
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            aload 3 /* elements */
            iload 5 /* i */
            aaload
            invokevirtual java.lang.StackTraceElement.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokestatic java.lang.System.lineSeparator:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        22: .line 351
      StackMap locals:
      StackMap stack:
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        23: iload 5 /* i */
            iload 4 /* pos */
            if_icmplt 17
        end local 5 // int i
        24: .line 357
            aload 2 /* trace */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 4 // int pos
        end local 3 // java.lang.StackTraceElement[] elements
        end local 2 // java.lang.StringBuilder trace
        end local 1 // java.lang.Throwable t
        end local 0 // org.apache.catalina.valves.ErrorReportValve this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   25     0      this  Lorg/apache/catalina/valves/ErrorReportValve;
            0   25     1         t  Ljava/lang/Throwable;
            1   25     2     trace  Ljava/lang/StringBuilder;
            3   25     3  elements  [Ljava/lang/StackTraceElement;
            4   25     4       pos  I
            5   15     5         i  I
           16   24     5         i  I
    MethodParameters:
      Name  Flags
      t     

  private boolean sendErrorPage(java.lang.String, org.apache.catalina.connector.Response);
    descriptor: (Ljava/lang/String;Lorg/apache/catalina/connector/Response;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=8, args_size=3
        start local 0 // org.apache.catalina.valves.ErrorReportValve this
        start local 1 // java.lang.String location
        start local 2 // org.apache.catalina.connector.Response response
         0: .line 362
            new java.io.File
            dup
            aload 1 /* location */
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            astore 3 /* file */
        start local 3 // java.io.File file
         1: .line 363
            aload 3 /* file */
            invokevirtual java.io.File.isAbsolute:()Z
            ifne 3
         2: .line 364
            new java.io.File
            dup
            aload 0 /* this */
            invokevirtual org.apache.catalina.valves.ErrorReportValve.getContainer:()Lorg/apache/catalina/Container;
            invokeinterface org.apache.catalina.Container.getCatalinaBase:()Ljava/io/File;
            aload 1 /* location */
            invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
            astore 3 /* file */
         3: .line 366
      StackMap locals: java.io.File
      StackMap stack:
            aload 3 /* file */
            invokevirtual java.io.File.isFile:()Z
            ifeq 4
            aload 3 /* file */
            invokevirtual java.io.File.canRead:()Z
            ifne 8
         4: .line 367
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.apache.catalina.valves.ErrorReportValve.getContainer:()Lorg/apache/catalina/Container;
            invokeinterface org.apache.catalina.Container.getLogger:()Lorg/apache/juli/logging/Log;
         5: .line 368
            getstatic org.apache.catalina.valves.ErrorReportValve.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "errorReportValve.errorPageNotFound"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* location */
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
         6: .line 367
            invokeinterface org.apache.juli.logging.Log.warn:(Ljava/lang/Object;)V
         7: .line 369
            iconst_0
            ireturn
         8: .line 374
      StackMap locals:
      StackMap stack:
            aload 2 /* response */
            ldc "text/html"
            invokevirtual org.apache.catalina.connector.Response.setContentType:(Ljava/lang/String;)V
         9: .line 375
            aload 2 /* response */
            ldc "UTF-8"
            invokevirtual org.apache.catalina.connector.Response.setCharacterEncoding:(Ljava/lang/String;)V
        10: .line 377
            aconst_null
            astore 4
            aconst_null
            astore 5
        11: aload 2 /* response */
            invokevirtual org.apache.catalina.connector.Response.getOutputStream:()Ljakarta/servlet/ServletOutputStream;
            astore 6 /* os */
        start local 6 // java.io.OutputStream os
        12: .line 378
            new java.io.FileInputStream
            dup
            aload 3 /* file */
            invokespecial java.io.FileInputStream.<init>:(Ljava/io/File;)V
            astore 7 /* is */
        start local 7 // java.io.InputStream is
        13: .line 379
            aload 7 /* is */
            aload 6 /* os */
            invokestatic org.apache.catalina.util.IOTools.flow:(Ljava/io/InputStream;Ljava/io/OutputStream;)V
        14: .line 380
            aload 7 /* is */
            ifnull 17
            aload 7 /* is */
            invokevirtual java.io.InputStream.close:()V
            goto 17
      StackMap locals: org.apache.catalina.valves.ErrorReportValve java.lang.String org.apache.catalina.connector.Response java.io.File java.lang.Throwable java.lang.Throwable java.io.OutputStream java.io.InputStream
      StackMap stack: java.lang.Throwable
        15: astore 4
            aload 7 /* is */
            ifnull 16
            aload 7 /* is */
            invokevirtual java.io.InputStream.close:()V
        end local 7 // java.io.InputStream is
      StackMap locals:
      StackMap stack:
        16: aload 4
            athrow
      StackMap locals:
      StackMap stack:
        17: aload 6 /* os */
            ifnull 30
            aload 6 /* os */
            invokevirtual java.io.OutputStream.close:()V
            goto 30
      StackMap locals:
      StackMap stack: java.lang.Throwable
        18: astore 5
            aload 4
            ifnonnull 19
            aload 5
            astore 4
            goto 20
      StackMap locals:
      StackMap stack:
        19: aload 4
            aload 5
            if_acmpeq 20
            aload 4
            aload 5
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        20: aload 6 /* os */
            ifnull 21
            aload 6 /* os */
            invokevirtual java.io.OutputStream.close:()V
        end local 6 // java.io.OutputStream os
      StackMap locals:
      StackMap stack:
        21: aload 4
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        22: astore 5
            aload 4
            ifnonnull 23
            aload 5
            astore 4
            goto 24
      StackMap locals:
      StackMap stack:
        23: aload 4
            aload 5
            if_acmpeq 24
            aload 4
            aload 5
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        24: aload 4
            athrow
      StackMap locals: org.apache.catalina.valves.ErrorReportValve java.lang.String org.apache.catalina.connector.Response java.io.File
      StackMap stack: java.io.IOException
        25: astore 4 /* e */
        start local 4 // java.io.IOException e
        26: .line 381
            aload 0 /* this */
            invokevirtual org.apache.catalina.valves.ErrorReportValve.getContainer:()Lorg/apache/catalina/Container;
            invokeinterface org.apache.catalina.Container.getLogger:()Lorg/apache/juli/logging/Log;
        27: .line 382
            getstatic org.apache.catalina.valves.ErrorReportValve.sm:Lorg/apache/tomcat/util/res/StringManager;
            ldc "errorReportValve.errorPageIOException"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* location */
            aastore
            invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            aload 4 /* e */
        28: .line 381
            invokeinterface org.apache.juli.logging.Log.warn:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        29: .line 383
            iconst_0
            ireturn
        end local 4 // java.io.IOException e
        30: .line 386
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 3 // java.io.File file
        end local 2 // org.apache.catalina.connector.Response response
        end local 1 // java.lang.String location
        end local 0 // org.apache.catalina.valves.ErrorReportValve this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   31     0      this  Lorg/apache/catalina/valves/ErrorReportValve;
            0   31     1  location  Ljava/lang/String;
            0   31     2  response  Lorg/apache/catalina/connector/Response;
            1   31     3      file  Ljava/io/File;
           12   21     6        os  Ljava/io/OutputStream;
           13   16     7        is  Ljava/io/InputStream;
           26   30     4         e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
          13    14      15  any
          12    17      18  any
          11    22      22  any
          10    25      25  Class java.io.IOException
    MethodParameters:
          Name  Flags
      location  
      response  

  public void setShowReport(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.catalina.valves.ErrorReportValve this
        start local 1 // boolean showReport
         0: .line 396
            aload 0 /* this */
            iload 1 /* showReport */
            putfield org.apache.catalina.valves.ErrorReportValve.showReport:Z
         1: .line 397
            return
        end local 1 // boolean showReport
        end local 0 // org.apache.catalina.valves.ErrorReportValve this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0        this  Lorg/apache/catalina/valves/ErrorReportValve;
            0    2     1  showReport  Z
    MethodParameters:
            Name  Flags
      showReport  

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

  public void setShowServerInfo(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.catalina.valves.ErrorReportValve this
        start local 1 // boolean showServerInfo
         0: .line 409
            aload 0 /* this */
            iload 1 /* showServerInfo */
            putfield org.apache.catalina.valves.ErrorReportValve.showServerInfo:Z
         1: .line 410
            return
        end local 1 // boolean showServerInfo
        end local 0 // org.apache.catalina.valves.ErrorReportValve this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    2     0            this  Lorg/apache/catalina/valves/ErrorReportValve;
            0    2     1  showServerInfo  Z
    MethodParameters:
                Name  Flags
      showServerInfo  

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

  public boolean setProperty(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=5, args_size=3
        start local 0 // org.apache.catalina.valves.ErrorReportValve this
        start local 1 // java.lang.String name
        start local 2 // java.lang.String value
         0: .line 418
            aload 1 /* name */
            ldc "errorCode."
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 7
         1: .line 419
            aload 1 /* name */
            bipush 10
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;)I
            istore 3 /* code */
        start local 3 // int code
         2: .line 420
            new org.apache.tomcat.util.descriptor.web.ErrorPage
            dup
            invokespecial org.apache.tomcat.util.descriptor.web.ErrorPage.<init>:()V
            astore 4 /* ep */
        start local 4 // org.apache.tomcat.util.descriptor.web.ErrorPage ep
         3: .line 421
            aload 4 /* ep */
            iload 3 /* code */
            invokevirtual org.apache.tomcat.util.descriptor.web.ErrorPage.setErrorCode:(I)V
         4: .line 422
            aload 4 /* ep */
            aload 2 /* value */
            invokevirtual org.apache.tomcat.util.descriptor.web.ErrorPage.setLocation:(Ljava/lang/String;)V
         5: .line 423
            aload 0 /* this */
            getfield org.apache.catalina.valves.ErrorReportValve.errorPageSupport:Lorg/apache/catalina/util/ErrorPageSupport;
            aload 4 /* ep */
            invokevirtual org.apache.catalina.util.ErrorPageSupport.add:(Lorg/apache/tomcat/util/descriptor/web/ErrorPage;)V
         6: .line 424
            iconst_1
            ireturn
        end local 4 // org.apache.tomcat.util.descriptor.web.ErrorPage ep
        end local 3 // int code
         7: .line 425
      StackMap locals:
      StackMap stack:
            aload 1 /* name */
            ldc "exceptionType."
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 14
         8: .line 426
            aload 1 /* name */
            bipush 14
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 3 /* className */
        start local 3 // java.lang.String className
         9: .line 427
            new org.apache.tomcat.util.descriptor.web.ErrorPage
            dup
            invokespecial org.apache.tomcat.util.descriptor.web.ErrorPage.<init>:()V
            astore 4 /* ep */
        start local 4 // org.apache.tomcat.util.descriptor.web.ErrorPage ep
        10: .line 428
            aload 4 /* ep */
            aload 3 /* className */
            invokevirtual org.apache.tomcat.util.descriptor.web.ErrorPage.setExceptionType:(Ljava/lang/String;)V
        11: .line 429
            aload 4 /* ep */
            aload 2 /* value */
            invokevirtual org.apache.tomcat.util.descriptor.web.ErrorPage.setLocation:(Ljava/lang/String;)V
        12: .line 430
            aload 0 /* this */
            getfield org.apache.catalina.valves.ErrorReportValve.errorPageSupport:Lorg/apache/catalina/util/ErrorPageSupport;
            aload 4 /* ep */
            invokevirtual org.apache.catalina.util.ErrorPageSupport.add:(Lorg/apache/tomcat/util/descriptor/web/ErrorPage;)V
        13: .line 431
            iconst_1
            ireturn
        end local 4 // org.apache.tomcat.util.descriptor.web.ErrorPage ep
        end local 3 // java.lang.String className
        14: .line 433
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 2 // java.lang.String value
        end local 1 // java.lang.String name
        end local 0 // org.apache.catalina.valves.ErrorReportValve this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   15     0       this  Lorg/apache/catalina/valves/ErrorReportValve;
            0   15     1       name  Ljava/lang/String;
            0   15     2      value  Ljava/lang/String;
            2    7     3       code  I
            3    7     4         ep  Lorg/apache/tomcat/util/descriptor/web/ErrorPage;
            9   14     3  className  Ljava/lang/String;
           10   14     4         ep  Lorg/apache/tomcat/util/descriptor/web/ErrorPage;
    MethodParameters:
       Name  Flags
      name   
      value  

  public java.lang.String getProperty(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=5, args_size=2
        start local 0 // org.apache.catalina.valves.ErrorReportValve this
        start local 1 // java.lang.String name
         0: .line 438
            aload 1 /* name */
            ldc "errorCode."
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 8
         1: .line 439
            aload 1 /* name */
            bipush 10
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;)I
            istore 3 /* code */
        start local 3 // int code
         2: .line 440
            aload 0 /* this */
            getfield org.apache.catalina.valves.ErrorReportValve.errorPageSupport:Lorg/apache/catalina/util/ErrorPageSupport;
            iload 3 /* code */
            invokevirtual org.apache.catalina.util.ErrorPageSupport.find:(I)Lorg/apache/tomcat/util/descriptor/web/ErrorPage;
            astore 4 /* ep */
        start local 4 // org.apache.tomcat.util.descriptor.web.ErrorPage ep
         3: .line 441
            aload 4 /* ep */
            ifnonnull 6
         4: .line 442
            aconst_null
            astore 2 /* result */
        start local 2 // java.lang.String result
         5: .line 443
            goto 17
        end local 2 // java.lang.String result
         6: .line 444
      StackMap locals: org.apache.catalina.valves.ErrorReportValve java.lang.String top int org.apache.tomcat.util.descriptor.web.ErrorPage
      StackMap stack:
            aload 4 /* ep */
            invokevirtual org.apache.tomcat.util.descriptor.web.ErrorPage.getLocation:()Ljava/lang/String;
            astore 2 /* result */
        end local 4 // org.apache.tomcat.util.descriptor.web.ErrorPage ep
        end local 3 // int code
        start local 2 // java.lang.String result
         7: .line 446
            goto 17
        end local 2 // java.lang.String result
      StackMap locals: org.apache.catalina.valves.ErrorReportValve java.lang.String
      StackMap stack:
         8: aload 1 /* name */
            ldc "exceptionType."
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 16
         9: .line 447
            aload 1 /* name */
            bipush 14
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 3 /* className */
        start local 3 // java.lang.String className
        10: .line 448
            aload 0 /* this */
            getfield org.apache.catalina.valves.ErrorReportValve.errorPageSupport:Lorg/apache/catalina/util/ErrorPageSupport;
            aload 3 /* className */
            invokevirtual org.apache.catalina.util.ErrorPageSupport.find:(Ljava/lang/String;)Lorg/apache/tomcat/util/descriptor/web/ErrorPage;
            astore 4 /* ep */
        start local 4 // org.apache.tomcat.util.descriptor.web.ErrorPage ep
        11: .line 449
            aload 4 /* ep */
            ifnonnull 14
        12: .line 450
            aconst_null
            astore 2 /* result */
        start local 2 // java.lang.String result
        13: .line 451
            goto 17
        end local 2 // java.lang.String result
        14: .line 452
      StackMap locals: org.apache.catalina.valves.ErrorReportValve java.lang.String top java.lang.String org.apache.tomcat.util.descriptor.web.ErrorPage
      StackMap stack:
            aload 4 /* ep */
            invokevirtual org.apache.tomcat.util.descriptor.web.ErrorPage.getLocation:()Ljava/lang/String;
            astore 2 /* result */
        end local 4 // org.apache.tomcat.util.descriptor.web.ErrorPage ep
        end local 3 // java.lang.String className
        start local 2 // java.lang.String result
        15: .line 454
            goto 17
        end local 2 // java.lang.String result
        16: .line 455
      StackMap locals: org.apache.catalina.valves.ErrorReportValve java.lang.String
      StackMap stack:
            aconst_null
            astore 2 /* result */
        start local 2 // java.lang.String result
        17: .line 457
      StackMap locals: java.lang.String
      StackMap stack:
            aload 2 /* result */
            areturn
        end local 2 // java.lang.String result
        end local 1 // java.lang.String name
        end local 0 // org.apache.catalina.valves.ErrorReportValve this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   18     0       this  Lorg/apache/catalina/valves/ErrorReportValve;
            0   18     1       name  Ljava/lang/String;
            5    6     2     result  Ljava/lang/String;
            7    8     2     result  Ljava/lang/String;
           13   14     2     result  Ljava/lang/String;
           15   16     2     result  Ljava/lang/String;
           17   18     2     result  Ljava/lang/String;
            2    7     3       code  I
            3    7     4         ep  Lorg/apache/tomcat/util/descriptor/web/ErrorPage;
           10   15     3  className  Ljava/lang/String;
           11   15     4         ep  Lorg/apache/tomcat/util/descriptor/web/ErrorPage;
    MethodParameters:
      Name  Flags
      name  
}
SourceFile: "ErrorReportValve.java"