public final class org.apache.tomcat.util.buf.UEncoder
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: org.apache.tomcat.util.buf.UEncoder
  super_class: java.lang.Object
{
  private java.util.BitSet safeChars;
    descriptor: Ljava/util/BitSet;
    flags: (0x0002) ACC_PRIVATE

  private org.apache.tomcat.util.buf.C2BConverter c2b;
    descriptor: Lorg/apache/tomcat/util/buf/C2BConverter;
    flags: (0x0002) ACC_PRIVATE

  private org.apache.tomcat.util.buf.ByteChunk bb;
    descriptor: Lorg/apache/tomcat/util/buf/ByteChunk;
    flags: (0x0002) ACC_PRIVATE

  private org.apache.tomcat.util.buf.CharChunk cb;
    descriptor: Lorg/apache/tomcat/util/buf/CharChunk;
    flags: (0x0002) ACC_PRIVATE

  private org.apache.tomcat.util.buf.CharChunk output;
    descriptor: Lorg/apache/tomcat/util/buf/CharChunk;
    flags: (0x0002) ACC_PRIVATE

  public void <init>(org.apache.tomcat.util.buf.UEncoder$SafeCharsSet);
    descriptor: (Lorg/apache/tomcat/util/buf/UEncoder$SafeCharsSet;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.tomcat.util.buf.UEncoder this
        start local 1 // org.apache.tomcat.util.buf.UEncoder$SafeCharsSet safeCharsSet
         0: .line 65
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 54
            aload 0 /* this */
            aconst_null
            putfield org.apache.tomcat.util.buf.UEncoder.safeChars:Ljava/util/BitSet;
         2: .line 55
            aload 0 /* this */
            aconst_null
            putfield org.apache.tomcat.util.buf.UEncoder.c2b:Lorg/apache/tomcat/util/buf/C2BConverter;
         3: .line 56
            aload 0 /* this */
            aconst_null
            putfield org.apache.tomcat.util.buf.UEncoder.bb:Lorg/apache/tomcat/util/buf/ByteChunk;
         4: .line 57
            aload 0 /* this */
            aconst_null
            putfield org.apache.tomcat.util.buf.UEncoder.cb:Lorg/apache/tomcat/util/buf/CharChunk;
         5: .line 58
            aload 0 /* this */
            aconst_null
            putfield org.apache.tomcat.util.buf.UEncoder.output:Lorg/apache/tomcat/util/buf/CharChunk;
         6: .line 66
            aload 0 /* this */
            aload 1 /* safeCharsSet */
            invokevirtual org.apache.tomcat.util.buf.UEncoder$SafeCharsSet.getSafeChars:()Ljava/util/BitSet;
            putfield org.apache.tomcat.util.buf.UEncoder.safeChars:Ljava/util/BitSet;
         7: .line 67
            return
        end local 1 // org.apache.tomcat.util.buf.UEncoder$SafeCharsSet safeCharsSet
        end local 0 // org.apache.tomcat.util.buf.UEncoder this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    8     0          this  Lorg/apache/tomcat/util/buf/UEncoder;
            0    8     1  safeCharsSet  Lorg/apache/tomcat/util/buf/UEncoder$SafeCharsSet;
    MethodParameters:
              Name  Flags
      safeCharsSet  

  public org.apache.tomcat.util.buf.CharChunk encodeURL(java.lang.String, int, int);
    descriptor: (Ljava/lang/String;II)Lorg/apache/tomcat/util/buf/CharChunk;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=7, args_size=4
        start local 0 // org.apache.tomcat.util.buf.UEncoder this
        start local 1 // java.lang.String s
        start local 2 // int start
        start local 3 // int end
         0: .line 82
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.UEncoder.c2b:Lorg/apache/tomcat/util/buf/C2BConverter;
            ifnonnull 6
         1: .line 83
            aload 0 /* this */
            new org.apache.tomcat.util.buf.ByteChunk
            dup
            bipush 8
            invokespecial org.apache.tomcat.util.buf.ByteChunk.<init>:(I)V
            putfield org.apache.tomcat.util.buf.UEncoder.bb:Lorg/apache/tomcat/util/buf/ByteChunk;
         2: .line 84
            aload 0 /* this */
            new org.apache.tomcat.util.buf.CharChunk
            dup
            iconst_2
            invokespecial org.apache.tomcat.util.buf.CharChunk.<init>:(I)V
            putfield org.apache.tomcat.util.buf.UEncoder.cb:Lorg/apache/tomcat/util/buf/CharChunk;
         3: .line 85
            aload 0 /* this */
            new org.apache.tomcat.util.buf.CharChunk
            dup
            bipush 64
            invokespecial org.apache.tomcat.util.buf.CharChunk.<init>:(I)V
            putfield org.apache.tomcat.util.buf.UEncoder.output:Lorg/apache/tomcat/util/buf/CharChunk;
         4: .line 86
            aload 0 /* this */
            new org.apache.tomcat.util.buf.C2BConverter
            dup
            getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
            invokespecial org.apache.tomcat.util.buf.C2BConverter.<init>:(Ljava/nio/charset/Charset;)V
            putfield org.apache.tomcat.util.buf.UEncoder.c2b:Lorg/apache/tomcat/util/buf/C2BConverter;
         5: .line 87
            goto 9
         6: .line 88
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.UEncoder.bb:Lorg/apache/tomcat/util/buf/ByteChunk;
            invokevirtual org.apache.tomcat.util.buf.ByteChunk.recycle:()V
         7: .line 89
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.UEncoder.cb:Lorg/apache/tomcat/util/buf/CharChunk;
            invokevirtual org.apache.tomcat.util.buf.CharChunk.recycle:()V
         8: .line 90
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.UEncoder.output:Lorg/apache/tomcat/util/buf/CharChunk;
            invokevirtual org.apache.tomcat.util.buf.CharChunk.recycle:()V
         9: .line 93
      StackMap locals:
      StackMap stack:
            iload 2 /* start */
            istore 4 /* i */
        start local 4 // int i
        10: goto 28
        11: .line 94
      StackMap locals: int
      StackMap stack:
            aload 1 /* s */
            iload 4 /* i */
            invokevirtual java.lang.String.charAt:(I)C
            istore 5 /* c */
        start local 5 // char c
        12: .line 95
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.UEncoder.safeChars:Ljava/util/BitSet;
            iload 5 /* c */
            invokevirtual java.util.BitSet.get:(I)Z
            ifeq 15
        13: .line 96
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.UEncoder.output:Lorg/apache/tomcat/util/buf/CharChunk;
            iload 5 /* c */
            invokevirtual org.apache.tomcat.util.buf.CharChunk.append:(C)V
        14: .line 97
            goto 27
        15: .line 98
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.UEncoder.cb:Lorg/apache/tomcat/util/buf/CharChunk;
            iload 5 /* c */
            invokevirtual org.apache.tomcat.util.buf.CharChunk.append:(C)V
        16: .line 99
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.UEncoder.c2b:Lorg/apache/tomcat/util/buf/C2BConverter;
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.UEncoder.cb:Lorg/apache/tomcat/util/buf/CharChunk;
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.UEncoder.bb:Lorg/apache/tomcat/util/buf/ByteChunk;
            invokevirtual org.apache.tomcat.util.buf.C2BConverter.convert:(Lorg/apache/tomcat/util/buf/CharChunk;Lorg/apache/tomcat/util/buf/ByteChunk;)V
        17: .line 103
            iload 5 /* c */
            ldc 55296
            if_icmplt 24
            iload 5 /* c */
            ldc 56319
            if_icmpgt 24
        18: .line 104
            iload 4 /* i */
            iconst_1
            iadd
            iload 3 /* end */
            if_icmpge 24
        19: .line 105
            aload 1 /* s */
            iload 4 /* i */
            iconst_1
            iadd
            invokevirtual java.lang.String.charAt:(I)C
            istore 6 /* d */
        start local 6 // char d
        20: .line 106
            iload 6 /* d */
            ldc 56320
            if_icmplt 24
            iload 6 /* d */
            ldc 57343
            if_icmpgt 24
        21: .line 107
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.UEncoder.cb:Lorg/apache/tomcat/util/buf/CharChunk;
            iload 6 /* d */
            invokevirtual org.apache.tomcat.util.buf.CharChunk.append:(C)V
        22: .line 108
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.UEncoder.c2b:Lorg/apache/tomcat/util/buf/C2BConverter;
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.UEncoder.cb:Lorg/apache/tomcat/util/buf/CharChunk;
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.UEncoder.bb:Lorg/apache/tomcat/util/buf/ByteChunk;
            invokevirtual org.apache.tomcat.util.buf.C2BConverter.convert:(Lorg/apache/tomcat/util/buf/CharChunk;Lorg/apache/tomcat/util/buf/ByteChunk;)V
        23: .line 109
            iinc 4 /* i */ 1
        end local 6 // char d
        24: .line 114
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.UEncoder.output:Lorg/apache/tomcat/util/buf/CharChunk;
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.UEncoder.bb:Lorg/apache/tomcat/util/buf/ByteChunk;
            invokevirtual org.apache.tomcat.util.buf.UEncoder.urlEncode:(Lorg/apache/tomcat/util/buf/CharChunk;Lorg/apache/tomcat/util/buf/ByteChunk;)V
        25: .line 115
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.UEncoder.cb:Lorg/apache/tomcat/util/buf/CharChunk;
            invokevirtual org.apache.tomcat.util.buf.CharChunk.recycle:()V
        26: .line 116
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.UEncoder.bb:Lorg/apache/tomcat/util/buf/ByteChunk;
            invokevirtual org.apache.tomcat.util.buf.ByteChunk.recycle:()V
        end local 5 // char c
        27: .line 93
      StackMap locals:
      StackMap stack:
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        28: iload 4 /* i */
            iload 3 /* end */
            if_icmplt 11
        end local 4 // int i
        29: .line 120
            aload 0 /* this */
            getfield org.apache.tomcat.util.buf.UEncoder.output:Lorg/apache/tomcat/util/buf/CharChunk;
            areturn
        end local 3 // int end
        end local 2 // int start
        end local 1 // java.lang.String s
        end local 0 // org.apache.tomcat.util.buf.UEncoder this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   30     0   this  Lorg/apache/tomcat/util/buf/UEncoder;
            0   30     1      s  Ljava/lang/String;
            0   30     2  start  I
            0   30     3    end  I
           10   29     4      i  I
           12   27     5      c  C
           20   24     6      d  C
    Exceptions:
      throws java.io.IOException
    MethodParameters:
       Name  Flags
      s      
      start  
      end    

  protected void urlEncode(org.apache.tomcat.util.buf.CharChunk, org.apache.tomcat.util.buf.ByteChunk);
    descriptor: (Lorg/apache/tomcat/util/buf/CharChunk;Lorg/apache/tomcat/util/buf/ByteChunk;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=6, args_size=3
        start local 0 // org.apache.tomcat.util.buf.UEncoder this
        start local 1 // org.apache.tomcat.util.buf.CharChunk out
        start local 2 // org.apache.tomcat.util.buf.ByteChunk bb
         0: .line 125
            aload 2 /* bb */
            invokevirtual org.apache.tomcat.util.buf.ByteChunk.getBuffer:()[B
            astore 3 /* bytes */
        start local 3 // byte[] bytes
         1: .line 126
            aload 2 /* bb */
            invokevirtual org.apache.tomcat.util.buf.ByteChunk.getStart:()I
            istore 4 /* j */
        start local 4 // int j
         2: goto 9
         3: .line 127
      StackMap locals: byte[] int
      StackMap stack:
            aload 1 /* out */
            bipush 37
            invokevirtual org.apache.tomcat.util.buf.CharChunk.append:(C)V
         4: .line 128
            aload 3 /* bytes */
            iload 4 /* j */
            baload
            iconst_4
            ishr
            bipush 15
            iand
            bipush 16
            invokestatic java.lang.Character.forDigit:(II)C
            istore 5 /* ch */
        start local 5 // char ch
         5: .line 129
            aload 1 /* out */
            iload 5 /* ch */
            invokevirtual org.apache.tomcat.util.buf.CharChunk.append:(C)V
         6: .line 130
            aload 3 /* bytes */
            iload 4 /* j */
            baload
            bipush 15
            iand
            bipush 16
            invokestatic java.lang.Character.forDigit:(II)C
            istore 5 /* ch */
         7: .line 131
            aload 1 /* out */
            iload 5 /* ch */
            invokevirtual org.apache.tomcat.util.buf.CharChunk.append:(C)V
        end local 5 // char ch
         8: .line 126
            iinc 4 /* j */ 1
      StackMap locals:
      StackMap stack:
         9: iload 4 /* j */
            aload 2 /* bb */
            invokevirtual org.apache.tomcat.util.buf.ByteChunk.getEnd:()I
            if_icmplt 3
        end local 4 // int j
        10: .line 133
            return
        end local 3 // byte[] bytes
        end local 2 // org.apache.tomcat.util.buf.ByteChunk bb
        end local 1 // org.apache.tomcat.util.buf.CharChunk out
        end local 0 // org.apache.tomcat.util.buf.UEncoder this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   11     0   this  Lorg/apache/tomcat/util/buf/UEncoder;
            0   11     1    out  Lorg/apache/tomcat/util/buf/CharChunk;
            0   11     2     bb  Lorg/apache/tomcat/util/buf/ByteChunk;
            1   11     3  bytes  [B
            2   10     4      j  I
            5    8     5     ch  C
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      out   
      bb    

  private static java.util.BitSet initialSafeChars();
    descriptor: ()Ljava/util/BitSet;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=0
         0: .line 138
            new java.util.BitSet
            dup
            sipush 128
            invokespecial java.util.BitSet.<init>:(I)V
            astore 0 /* initialSafeChars */
        start local 0 // java.util.BitSet initialSafeChars
         1: .line 140
            bipush 97
            istore 1 /* i */
        start local 1 // int i
         2: goto 5
         3: .line 141
      StackMap locals: java.util.BitSet int
      StackMap stack:
            aload 0 /* initialSafeChars */
            iload 1 /* i */
            invokevirtual java.util.BitSet.set:(I)V
         4: .line 140
            iinc 1 /* i */ 1
      StackMap locals:
      StackMap stack:
         5: iload 1 /* i */
            bipush 122
            if_icmple 3
         6: .line 143
            bipush 65
            istore 1 /* i */
            goto 9
         7: .line 144
      StackMap locals:
      StackMap stack:
            aload 0 /* initialSafeChars */
            iload 1 /* i */
            invokevirtual java.util.BitSet.set:(I)V
         8: .line 143
            iinc 1 /* i */ 1
      StackMap locals:
      StackMap stack:
         9: iload 1 /* i */
            bipush 90
            if_icmple 7
        10: .line 146
            bipush 48
            istore 1 /* i */
            goto 13
        11: .line 147
      StackMap locals:
      StackMap stack:
            aload 0 /* initialSafeChars */
            iload 1 /* i */
            invokevirtual java.util.BitSet.set:(I)V
        12: .line 146
            iinc 1 /* i */ 1
      StackMap locals:
      StackMap stack:
        13: iload 1 /* i */
            bipush 57
            if_icmple 11
        14: .line 150
            aload 0 /* initialSafeChars */
            bipush 36
            invokevirtual java.util.BitSet.set:(I)V
        15: .line 151
            aload 0 /* initialSafeChars */
            bipush 45
            invokevirtual java.util.BitSet.set:(I)V
        16: .line 152
            aload 0 /* initialSafeChars */
            bipush 95
            invokevirtual java.util.BitSet.set:(I)V
        17: .line 153
            aload 0 /* initialSafeChars */
            bipush 46
            invokevirtual java.util.BitSet.set:(I)V
        18: .line 159
            aload 0 /* initialSafeChars */
            bipush 33
            invokevirtual java.util.BitSet.set:(I)V
        19: .line 160
            aload 0 /* initialSafeChars */
            bipush 42
            invokevirtual java.util.BitSet.set:(I)V
        20: .line 161
            aload 0 /* initialSafeChars */
            bipush 39
            invokevirtual java.util.BitSet.set:(I)V
        21: .line 162
            aload 0 /* initialSafeChars */
            bipush 40
            invokevirtual java.util.BitSet.set:(I)V
        22: .line 163
            aload 0 /* initialSafeChars */
            bipush 41
            invokevirtual java.util.BitSet.set:(I)V
        23: .line 164
            aload 0 /* initialSafeChars */
            bipush 44
            invokevirtual java.util.BitSet.set:(I)V
        24: .line 165
            aload 0 /* initialSafeChars */
            areturn
        end local 1 // int i
        end local 0 // java.util.BitSet initialSafeChars
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            1   25     0  initialSafeChars  Ljava/util/BitSet;
            2   25     1                 i  I
}
SourceFile: "UEncoder.java"
NestMembers:
  org.apache.tomcat.util.buf.UEncoder$SafeCharsSet
InnerClasses:
  public final SafeCharsSet = org.apache.tomcat.util.buf.UEncoder$SafeCharsSet of org.apache.tomcat.util.buf.UEncoder