public final class io.netty.handler.proxy.Socks5ProxyHandler extends io.netty.handler.proxy.ProxyHandler
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: io.netty.handler.proxy.Socks5ProxyHandler
  super_class: io.netty.handler.proxy.ProxyHandler
{
  private static final java.lang.String PROTOCOL;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "socks5"

  private static final java.lang.String AUTH_PASSWORD;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "password"

  private static final io.netty.handler.codec.socksx.v5.Socks5InitialRequest INIT_REQUEST_NO_AUTH;
    descriptor: Lio/netty/handler/codec/socksx/v5/Socks5InitialRequest;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final io.netty.handler.codec.socksx.v5.Socks5InitialRequest INIT_REQUEST_PASSWORD;
    descriptor: Lio/netty/handler/codec/socksx/v5/Socks5InitialRequest;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private final java.lang.String username;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.String password;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private java.lang.String decoderName;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private java.lang.String encoderName;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=6, locals=0, args_size=0
         0: .line 51
            new io.netty.handler.codec.socksx.v5.DefaultSocks5InitialRequest
            dup
            getstatic io.netty.handler.codec.socksx.v5.Socks5AuthMethod.NO_AUTH:Lio/netty/handler/codec/socksx/v5/Socks5AuthMethod;
            invokestatic java.util.Collections.singletonList:(Ljava/lang/Object;)Ljava/util/List;
            invokespecial io.netty.handler.codec.socksx.v5.DefaultSocks5InitialRequest.<init>:(Ljava/lang/Iterable;)V
         1: .line 50
            putstatic io.netty.handler.proxy.Socks5ProxyHandler.INIT_REQUEST_NO_AUTH:Lio/netty/handler/codec/socksx/v5/Socks5InitialRequest;
         2: .line 54
            new io.netty.handler.codec.socksx.v5.DefaultSocks5InitialRequest
            dup
            iconst_2
            anewarray io.netty.handler.codec.socksx.v5.Socks5AuthMethod
            dup
            iconst_0
            getstatic io.netty.handler.codec.socksx.v5.Socks5AuthMethod.NO_AUTH:Lio/netty/handler/codec/socksx/v5/Socks5AuthMethod;
            aastore
            dup
            iconst_1
            getstatic io.netty.handler.codec.socksx.v5.Socks5AuthMethod.PASSWORD:Lio/netty/handler/codec/socksx/v5/Socks5AuthMethod;
            aastore
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            invokespecial io.netty.handler.codec.socksx.v5.DefaultSocks5InitialRequest.<init>:(Ljava/lang/Iterable;)V
         3: .line 53
            putstatic io.netty.handler.proxy.Socks5ProxyHandler.INIT_REQUEST_PASSWORD:Lio/netty/handler/codec/socksx/v5/Socks5InitialRequest;
         4: .line 54
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(java.net.SocketAddress);
    descriptor: (Ljava/net/SocketAddress;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // io.netty.handler.proxy.Socks5ProxyHandler this
        start local 1 // java.net.SocketAddress proxyAddress
         0: .line 63
            aload 0 /* this */
            aload 1 /* proxyAddress */
            aconst_null
            aconst_null
            invokespecial io.netty.handler.proxy.Socks5ProxyHandler.<init>:(Ljava/net/SocketAddress;Ljava/lang/String;Ljava/lang/String;)V
         1: .line 64
            return
        end local 1 // java.net.SocketAddress proxyAddress
        end local 0 // io.netty.handler.proxy.Socks5ProxyHandler this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    2     0          this  Lio/netty/handler/proxy/Socks5ProxyHandler;
            0    2     1  proxyAddress  Ljava/net/SocketAddress;
    MethodParameters:
              Name  Flags
      proxyAddress  

  public void <init>(java.net.SocketAddress, java.lang.String, java.lang.String);
    descriptor: (Ljava/net/SocketAddress;Ljava/lang/String;Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=4
        start local 0 // io.netty.handler.proxy.Socks5ProxyHandler this
        start local 1 // java.net.SocketAddress proxyAddress
        start local 2 // java.lang.String username
        start local 3 // java.lang.String password
         0: .line 67
            aload 0 /* this */
            aload 1 /* proxyAddress */
            invokespecial io.netty.handler.proxy.ProxyHandler.<init>:(Ljava/net/SocketAddress;)V
         1: .line 68
            aload 2 /* username */
            ifnull 3
            aload 2 /* username */
            invokevirtual java.lang.String.isEmpty:()Z
            ifeq 3
         2: .line 69
            aconst_null
            astore 2 /* username */
         3: .line 71
      StackMap locals: io.netty.handler.proxy.Socks5ProxyHandler java.net.SocketAddress java.lang.String java.lang.String
      StackMap stack:
            aload 3 /* password */
            ifnull 5
            aload 3 /* password */
            invokevirtual java.lang.String.isEmpty:()Z
            ifeq 5
         4: .line 72
            aconst_null
            astore 3 /* password */
         5: .line 74
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* username */
            putfield io.netty.handler.proxy.Socks5ProxyHandler.username:Ljava/lang/String;
         6: .line 75
            aload 0 /* this */
            aload 3 /* password */
            putfield io.netty.handler.proxy.Socks5ProxyHandler.password:Ljava/lang/String;
         7: .line 76
            return
        end local 3 // java.lang.String password
        end local 2 // java.lang.String username
        end local 1 // java.net.SocketAddress proxyAddress
        end local 0 // io.netty.handler.proxy.Socks5ProxyHandler this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    8     0          this  Lio/netty/handler/proxy/Socks5ProxyHandler;
            0    8     1  proxyAddress  Ljava/net/SocketAddress;
            0    8     2      username  Ljava/lang/String;
            0    8     3      password  Ljava/lang/String;
    MethodParameters:
              Name  Flags
      proxyAddress  
      username      
      password      

  public java.lang.String protocol();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.netty.handler.proxy.Socks5ProxyHandler this
         0: .line 80
            ldc "socks5"
            areturn
        end local 0 // io.netty.handler.proxy.Socks5ProxyHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/netty/handler/proxy/Socks5ProxyHandler;

  public java.lang.String authScheme();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // io.netty.handler.proxy.Socks5ProxyHandler this
         0: .line 85
            aload 0 /* this */
            invokevirtual io.netty.handler.proxy.Socks5ProxyHandler.socksAuthMethod:()Lio/netty/handler/codec/socksx/v5/Socks5AuthMethod;
            getstatic io.netty.handler.codec.socksx.v5.Socks5AuthMethod.PASSWORD:Lio/netty/handler/codec/socksx/v5/Socks5AuthMethod;
            if_acmpne 1
            ldc "password"
            goto 2
      StackMap locals:
      StackMap stack:
         1: ldc "none"
      StackMap locals:
      StackMap stack: java.lang.String
         2: areturn
        end local 0 // io.netty.handler.proxy.Socks5ProxyHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lio/netty/handler/proxy/Socks5ProxyHandler;

  public java.lang.String username();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.netty.handler.proxy.Socks5ProxyHandler this
         0: .line 89
            aload 0 /* this */
            getfield io.netty.handler.proxy.Socks5ProxyHandler.username:Ljava/lang/String;
            areturn
        end local 0 // io.netty.handler.proxy.Socks5ProxyHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/netty/handler/proxy/Socks5ProxyHandler;

  public java.lang.String password();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.netty.handler.proxy.Socks5ProxyHandler this
         0: .line 93
            aload 0 /* this */
            getfield io.netty.handler.proxy.Socks5ProxyHandler.password:Ljava/lang/String;
            areturn
        end local 0 // io.netty.handler.proxy.Socks5ProxyHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/netty/handler/proxy/Socks5ProxyHandler;

  protected void addCodec(io.netty.channel.ChannelHandlerContext);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // io.netty.handler.proxy.Socks5ProxyHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
         0: .line 98
            aload 1 /* ctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.pipeline:()Lio/netty/channel/ChannelPipeline;
            astore 2 /* p */
        start local 2 // io.netty.channel.ChannelPipeline p
         1: .line 99
            aload 1 /* ctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.name:()Ljava/lang/String;
            astore 3 /* name */
        start local 3 // java.lang.String name
         2: .line 101
            new io.netty.handler.codec.socksx.v5.Socks5InitialResponseDecoder
            dup
            invokespecial io.netty.handler.codec.socksx.v5.Socks5InitialResponseDecoder.<init>:()V
            astore 4 /* decoder */
        start local 4 // io.netty.handler.codec.socksx.v5.Socks5InitialResponseDecoder decoder
         3: .line 102
            aload 2 /* p */
            aload 3 /* name */
            aconst_null
            aload 4 /* decoder */
            invokeinterface io.netty.channel.ChannelPipeline.addBefore:(Ljava/lang/String;Ljava/lang/String;Lio/netty/channel/ChannelHandler;)Lio/netty/channel/ChannelPipeline;
            pop
         4: .line 104
            aload 0 /* this */
            aload 2 /* p */
            aload 4 /* decoder */
            invokeinterface io.netty.channel.ChannelPipeline.context:(Lio/netty/channel/ChannelHandler;)Lio/netty/channel/ChannelHandlerContext;
            invokeinterface io.netty.channel.ChannelHandlerContext.name:()Ljava/lang/String;
            putfield io.netty.handler.proxy.Socks5ProxyHandler.decoderName:Ljava/lang/String;
         5: .line 105
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            getfield io.netty.handler.proxy.Socks5ProxyHandler.decoderName:Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ".encoder"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            putfield io.netty.handler.proxy.Socks5ProxyHandler.encoderName:Ljava/lang/String;
         6: .line 107
            aload 2 /* p */
            aload 3 /* name */
            aload 0 /* this */
            getfield io.netty.handler.proxy.Socks5ProxyHandler.encoderName:Ljava/lang/String;
            getstatic io.netty.handler.codec.socksx.v5.Socks5ClientEncoder.DEFAULT:Lio/netty/handler/codec/socksx/v5/Socks5ClientEncoder;
            invokeinterface io.netty.channel.ChannelPipeline.addBefore:(Ljava/lang/String;Ljava/lang/String;Lio/netty/channel/ChannelHandler;)Lio/netty/channel/ChannelPipeline;
            pop
         7: .line 108
            return
        end local 4 // io.netty.handler.codec.socksx.v5.Socks5InitialResponseDecoder decoder
        end local 3 // java.lang.String name
        end local 2 // io.netty.channel.ChannelPipeline p
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.netty.handler.proxy.Socks5ProxyHandler this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    8     0     this  Lio/netty/handler/proxy/Socks5ProxyHandler;
            0    8     1      ctx  Lio/netty/channel/ChannelHandlerContext;
            1    8     2        p  Lio/netty/channel/ChannelPipeline;
            2    8     3     name  Ljava/lang/String;
            3    8     4  decoder  Lio/netty/handler/codec/socksx/v5/Socks5InitialResponseDecoder;
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
      Name  Flags
      ctx   

  protected void removeEncoder(io.netty.channel.ChannelHandlerContext);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.netty.handler.proxy.Socks5ProxyHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
         0: .line 112
            aload 1 /* ctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.pipeline:()Lio/netty/channel/ChannelPipeline;
            aload 0 /* this */
            getfield io.netty.handler.proxy.Socks5ProxyHandler.encoderName:Ljava/lang/String;
            invokeinterface io.netty.channel.ChannelPipeline.remove:(Ljava/lang/String;)Lio/netty/channel/ChannelHandler;
            pop
         1: .line 113
            return
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.netty.handler.proxy.Socks5ProxyHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lio/netty/handler/proxy/Socks5ProxyHandler;
            0    2     1   ctx  Lio/netty/channel/ChannelHandlerContext;
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
      Name  Flags
      ctx   

  protected void removeDecoder(io.netty.channel.ChannelHandlerContext);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // io.netty.handler.proxy.Socks5ProxyHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
         0: .line 117
            aload 1 /* ctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.pipeline:()Lio/netty/channel/ChannelPipeline;
            astore 2 /* p */
        start local 2 // io.netty.channel.ChannelPipeline p
         1: .line 118
            aload 2 /* p */
            aload 0 /* this */
            getfield io.netty.handler.proxy.Socks5ProxyHandler.decoderName:Ljava/lang/String;
            invokeinterface io.netty.channel.ChannelPipeline.context:(Ljava/lang/String;)Lio/netty/channel/ChannelHandlerContext;
            ifnull 3
         2: .line 119
            aload 2 /* p */
            aload 0 /* this */
            getfield io.netty.handler.proxy.Socks5ProxyHandler.decoderName:Ljava/lang/String;
            invokeinterface io.netty.channel.ChannelPipeline.remove:(Ljava/lang/String;)Lio/netty/channel/ChannelHandler;
            pop
         3: .line 121
      StackMap locals: io.netty.channel.ChannelPipeline
      StackMap stack:
            return
        end local 2 // io.netty.channel.ChannelPipeline p
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.netty.handler.proxy.Socks5ProxyHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lio/netty/handler/proxy/Socks5ProxyHandler;
            0    4     1   ctx  Lio/netty/channel/ChannelHandlerContext;
            1    4     2     p  Lio/netty/channel/ChannelPipeline;
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
      Name  Flags
      ctx   

  protected java.lang.Object newInitialMessage(io.netty.channel.ChannelHandlerContext);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;)Ljava/lang/Object;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.netty.handler.proxy.Socks5ProxyHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
         0: .line 125
            aload 0 /* this */
            invokevirtual io.netty.handler.proxy.Socks5ProxyHandler.socksAuthMethod:()Lio/netty/handler/codec/socksx/v5/Socks5AuthMethod;
            getstatic io.netty.handler.codec.socksx.v5.Socks5AuthMethod.PASSWORD:Lio/netty/handler/codec/socksx/v5/Socks5AuthMethod;
            if_acmpne 1
            getstatic io.netty.handler.proxy.Socks5ProxyHandler.INIT_REQUEST_PASSWORD:Lio/netty/handler/codec/socksx/v5/Socks5InitialRequest;
            goto 2
      StackMap locals:
      StackMap stack:
         1: getstatic io.netty.handler.proxy.Socks5ProxyHandler.INIT_REQUEST_NO_AUTH:Lio/netty/handler/codec/socksx/v5/Socks5InitialRequest;
      StackMap locals:
      StackMap stack: io.netty.handler.codec.socksx.v5.Socks5InitialRequest
         2: areturn
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.netty.handler.proxy.Socks5ProxyHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lio/netty/handler/proxy/Socks5ProxyHandler;
            0    3     1   ctx  Lio/netty/channel/ChannelHandlerContext;
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
      Name  Flags
      ctx   

  protected boolean handleResponse(io.netty.channel.ChannelHandlerContext, java.lang.Object);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=6, locals=5, args_size=3
        start local 0 // io.netty.handler.proxy.Socks5ProxyHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
        start local 2 // java.lang.Object response
         0: .line 130
            aload 2 /* response */
            instanceof io.netty.handler.codec.socksx.v5.Socks5InitialResponse
            ifeq 21
         1: .line 131
            aload 2 /* response */
            checkcast io.netty.handler.codec.socksx.v5.Socks5InitialResponse
            astore 3 /* res */
        start local 3 // io.netty.handler.codec.socksx.v5.Socks5InitialResponse res
         2: .line 132
            aload 0 /* this */
            invokevirtual io.netty.handler.proxy.Socks5ProxyHandler.socksAuthMethod:()Lio/netty/handler/codec/socksx/v5/Socks5AuthMethod;
            astore 4 /* authMethod */
        start local 4 // io.netty.handler.codec.socksx.v5.Socks5AuthMethod authMethod
         3: .line 134
            aload 3 /* res */
            invokeinterface io.netty.handler.codec.socksx.v5.Socks5InitialResponse.authMethod:()Lio/netty/handler/codec/socksx/v5/Socks5AuthMethod;
            getstatic io.netty.handler.codec.socksx.v5.Socks5AuthMethod.NO_AUTH:Lio/netty/handler/codec/socksx/v5/Socks5AuthMethod;
            if_acmpeq 5
            aload 3 /* res */
            invokeinterface io.netty.handler.codec.socksx.v5.Socks5InitialResponse.authMethod:()Lio/netty/handler/codec/socksx/v5/Socks5AuthMethod;
            aload 4 /* authMethod */
            if_acmpeq 5
         4: .line 136
            new io.netty.handler.proxy.ProxyConnectException
            dup
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "unexpected authMethod: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* res */
            invokeinterface io.netty.handler.codec.socksx.v5.Socks5InitialResponse.authMethod:()Lio/netty/handler/codec/socksx/v5/Socks5AuthMethod;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual io.netty.handler.proxy.Socks5ProxyHandler.exceptionMessage:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial io.netty.handler.proxy.ProxyConnectException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 139
      StackMap locals: io.netty.handler.codec.socksx.v5.Socks5InitialResponse io.netty.handler.codec.socksx.v5.Socks5AuthMethod
      StackMap stack:
            aload 4 /* authMethod */
            getstatic io.netty.handler.codec.socksx.v5.Socks5AuthMethod.NO_AUTH:Lio/netty/handler/codec/socksx/v5/Socks5AuthMethod;
            if_acmpne 8
         6: .line 140
            aload 0 /* this */
            aload 1 /* ctx */
            invokevirtual io.netty.handler.proxy.Socks5ProxyHandler.sendConnectCommand:(Lio/netty/channel/ChannelHandlerContext;)V
         7: .line 141
            goto 20
      StackMap locals:
      StackMap stack:
         8: aload 4 /* authMethod */
            getstatic io.netty.handler.codec.socksx.v5.Socks5AuthMethod.PASSWORD:Lio/netty/handler/codec/socksx/v5/Socks5AuthMethod;
            if_acmpne 19
         9: .line 143
            aload 1 /* ctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.pipeline:()Lio/netty/channel/ChannelPipeline;
            aload 0 /* this */
            getfield io.netty.handler.proxy.Socks5ProxyHandler.decoderName:Ljava/lang/String;
            aload 0 /* this */
            getfield io.netty.handler.proxy.Socks5ProxyHandler.decoderName:Ljava/lang/String;
            new io.netty.handler.codec.socksx.v5.Socks5PasswordAuthResponseDecoder
            dup
            invokespecial io.netty.handler.codec.socksx.v5.Socks5PasswordAuthResponseDecoder.<init>:()V
            invokeinterface io.netty.channel.ChannelPipeline.replace:(Ljava/lang/String;Ljava/lang/String;Lio/netty/channel/ChannelHandler;)Lio/netty/channel/ChannelHandler;
            pop
        10: .line 144
            aload 0 /* this */
        11: new io.netty.handler.codec.socksx.v5.DefaultSocks5PasswordAuthRequest
            dup
        12: .line 145
            aload 0 /* this */
            getfield io.netty.handler.proxy.Socks5ProxyHandler.username:Ljava/lang/String;
            ifnull 13
            aload 0 /* this */
            getfield io.netty.handler.proxy.Socks5ProxyHandler.username:Ljava/lang/String;
            goto 14
      StackMap locals: io.netty.handler.proxy.Socks5ProxyHandler io.netty.channel.ChannelHandlerContext java.lang.Object io.netty.handler.codec.socksx.v5.Socks5InitialResponse io.netty.handler.codec.socksx.v5.Socks5AuthMethod
      StackMap stack: io.netty.handler.proxy.Socks5ProxyHandler new 11 new 11
        13: ldc ""
      StackMap locals: io.netty.handler.proxy.Socks5ProxyHandler io.netty.channel.ChannelHandlerContext java.lang.Object io.netty.handler.codec.socksx.v5.Socks5InitialResponse io.netty.handler.codec.socksx.v5.Socks5AuthMethod
      StackMap stack: io.netty.handler.proxy.Socks5ProxyHandler new 11 new 11 java.lang.String
        14: aload 0 /* this */
            getfield io.netty.handler.proxy.Socks5ProxyHandler.password:Ljava/lang/String;
            ifnull 15
            aload 0 /* this */
            getfield io.netty.handler.proxy.Socks5ProxyHandler.password:Ljava/lang/String;
            goto 16
      StackMap locals: io.netty.handler.proxy.Socks5ProxyHandler io.netty.channel.ChannelHandlerContext java.lang.Object io.netty.handler.codec.socksx.v5.Socks5InitialResponse io.netty.handler.codec.socksx.v5.Socks5AuthMethod
      StackMap stack: io.netty.handler.proxy.Socks5ProxyHandler new 11 new 11 java.lang.String
        15: ldc ""
      StackMap locals: io.netty.handler.proxy.Socks5ProxyHandler io.netty.channel.ChannelHandlerContext java.lang.Object io.netty.handler.codec.socksx.v5.Socks5InitialResponse io.netty.handler.codec.socksx.v5.Socks5AuthMethod
      StackMap stack: io.netty.handler.proxy.Socks5ProxyHandler new 11 new 11 java.lang.String java.lang.String
        16: invokespecial io.netty.handler.codec.socksx.v5.DefaultSocks5PasswordAuthRequest.<init>:(Ljava/lang/String;Ljava/lang/String;)V
        17: .line 144
            invokevirtual io.netty.handler.proxy.Socks5ProxyHandler.sendToProxyServer:(Ljava/lang/Object;)V
        18: .line 146
            goto 20
        19: .line 148
      StackMap locals:
      StackMap stack:
            new java.lang.Error
            dup
            invokespecial java.lang.Error.<init>:()V
            athrow
        20: .line 151
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 4 // io.netty.handler.codec.socksx.v5.Socks5AuthMethod authMethod
        end local 3 // io.netty.handler.codec.socksx.v5.Socks5InitialResponse res
        21: .line 154
      StackMap locals:
      StackMap stack:
            aload 2 /* response */
            instanceof io.netty.handler.codec.socksx.v5.Socks5PasswordAuthResponse
            ifeq 27
        22: .line 156
            aload 2 /* response */
            checkcast io.netty.handler.codec.socksx.v5.Socks5PasswordAuthResponse
            astore 3 /* res */
        start local 3 // io.netty.handler.codec.socksx.v5.Socks5PasswordAuthResponse res
        23: .line 157
            aload 3 /* res */
            invokeinterface io.netty.handler.codec.socksx.v5.Socks5PasswordAuthResponse.status:()Lio/netty/handler/codec/socksx/v5/Socks5PasswordAuthStatus;
            getstatic io.netty.handler.codec.socksx.v5.Socks5PasswordAuthStatus.SUCCESS:Lio/netty/handler/codec/socksx/v5/Socks5PasswordAuthStatus;
            if_acmpeq 25
        24: .line 158
            new io.netty.handler.proxy.ProxyConnectException
            dup
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "authStatus: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* res */
            invokeinterface io.netty.handler.codec.socksx.v5.Socks5PasswordAuthResponse.status:()Lio/netty/handler/codec/socksx/v5/Socks5PasswordAuthStatus;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual io.netty.handler.proxy.Socks5ProxyHandler.exceptionMessage:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial io.netty.handler.proxy.ProxyConnectException.<init>:(Ljava/lang/String;)V
            athrow
        25: .line 161
      StackMap locals: io.netty.handler.codec.socksx.v5.Socks5PasswordAuthResponse
      StackMap stack:
            aload 0 /* this */
            aload 1 /* ctx */
            invokevirtual io.netty.handler.proxy.Socks5ProxyHandler.sendConnectCommand:(Lio/netty/channel/ChannelHandlerContext;)V
        26: .line 162
            iconst_0
            ireturn
        end local 3 // io.netty.handler.codec.socksx.v5.Socks5PasswordAuthResponse res
        27: .line 166
      StackMap locals:
      StackMap stack:
            aload 2 /* response */
            checkcast io.netty.handler.codec.socksx.v5.Socks5CommandResponse
            astore 3 /* res */
        start local 3 // io.netty.handler.codec.socksx.v5.Socks5CommandResponse res
        28: .line 167
            aload 3 /* res */
            invokeinterface io.netty.handler.codec.socksx.v5.Socks5CommandResponse.status:()Lio/netty/handler/codec/socksx/v5/Socks5CommandStatus;
            getstatic io.netty.handler.codec.socksx.v5.Socks5CommandStatus.SUCCESS:Lio/netty/handler/codec/socksx/v5/Socks5CommandStatus;
            if_acmpeq 30
        29: .line 168
            new io.netty.handler.proxy.ProxyConnectException
            dup
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "status: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* res */
            invokeinterface io.netty.handler.codec.socksx.v5.Socks5CommandResponse.status:()Lio/netty/handler/codec/socksx/v5/Socks5CommandStatus;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual io.netty.handler.proxy.Socks5ProxyHandler.exceptionMessage:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial io.netty.handler.proxy.ProxyConnectException.<init>:(Ljava/lang/String;)V
            athrow
        30: .line 171
      StackMap locals: io.netty.handler.codec.socksx.v5.Socks5CommandResponse
      StackMap stack:
            iconst_1
            ireturn
        end local 3 // io.netty.handler.codec.socksx.v5.Socks5CommandResponse res
        end local 2 // java.lang.Object response
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.netty.handler.proxy.Socks5ProxyHandler this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   31     0        this  Lio/netty/handler/proxy/Socks5ProxyHandler;
            0   31     1         ctx  Lio/netty/channel/ChannelHandlerContext;
            0   31     2    response  Ljava/lang/Object;
            2   21     3         res  Lio/netty/handler/codec/socksx/v5/Socks5InitialResponse;
            3   21     4  authMethod  Lio/netty/handler/codec/socksx/v5/Socks5AuthMethod;
           23   27     3         res  Lio/netty/handler/codec/socksx/v5/Socks5PasswordAuthResponse;
           28   31     3         res  Lio/netty/handler/codec/socksx/v5/Socks5CommandResponse;
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
          Name  Flags
      ctx       
      response  

  private io.netty.handler.codec.socksx.v5.Socks5AuthMethod socksAuthMethod();
    descriptor: ()Lio/netty/handler/codec/socksx/v5/Socks5AuthMethod;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // io.netty.handler.proxy.Socks5ProxyHandler this
         0: .line 176
            aload 0 /* this */
            getfield io.netty.handler.proxy.Socks5ProxyHandler.username:Ljava/lang/String;
            ifnonnull 3
            aload 0 /* this */
            getfield io.netty.handler.proxy.Socks5ProxyHandler.password:Ljava/lang/String;
            ifnonnull 3
         1: .line 177
            getstatic io.netty.handler.codec.socksx.v5.Socks5AuthMethod.NO_AUTH:Lio/netty/handler/codec/socksx/v5/Socks5AuthMethod;
            astore 1 /* authMethod */
        start local 1 // io.netty.handler.codec.socksx.v5.Socks5AuthMethod authMethod
         2: .line 178
            goto 4
        end local 1 // io.netty.handler.codec.socksx.v5.Socks5AuthMethod authMethod
         3: .line 179
      StackMap locals:
      StackMap stack:
            getstatic io.netty.handler.codec.socksx.v5.Socks5AuthMethod.PASSWORD:Lio/netty/handler/codec/socksx/v5/Socks5AuthMethod;
            astore 1 /* authMethod */
        start local 1 // io.netty.handler.codec.socksx.v5.Socks5AuthMethod authMethod
         4: .line 181
      StackMap locals: io.netty.handler.codec.socksx.v5.Socks5AuthMethod
      StackMap stack:
            aload 1 /* authMethod */
            areturn
        end local 1 // io.netty.handler.codec.socksx.v5.Socks5AuthMethod authMethod
        end local 0 // io.netty.handler.proxy.Socks5ProxyHandler this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    5     0        this  Lio/netty/handler/proxy/Socks5ProxyHandler;
            2    3     1  authMethod  Lio/netty/handler/codec/socksx/v5/Socks5AuthMethod;
            4    5     1  authMethod  Lio/netty/handler/codec/socksx/v5/Socks5AuthMethod;

  private void sendConnectCommand(io.netty.channel.ChannelHandlerContext);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=5, args_size=2
        start local 0 // io.netty.handler.proxy.Socks5ProxyHandler this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
         0: .line 185
            aload 0 /* this */
            invokevirtual io.netty.handler.proxy.Socks5ProxyHandler.destinationAddress:()Ljava/net/SocketAddress;
            checkcast java.net.InetSocketAddress
            astore 2 /* raddr */
        start local 2 // java.net.InetSocketAddress raddr
         1: .line 188
            aload 2 /* raddr */
            invokevirtual java.net.InetSocketAddress.isUnresolved:()Z
            ifeq 5
         2: .line 189
            getstatic io.netty.handler.codec.socksx.v5.Socks5AddressType.DOMAIN:Lio/netty/handler/codec/socksx/v5/Socks5AddressType;
            astore 3 /* addrType */
        start local 3 // io.netty.handler.codec.socksx.v5.Socks5AddressType addrType
         3: .line 190
            aload 2 /* raddr */
            invokevirtual java.net.InetSocketAddress.getHostString:()Ljava/lang/String;
            astore 4 /* rhost */
        start local 4 // java.lang.String rhost
         4: .line 191
            goto 15
        end local 4 // java.lang.String rhost
        end local 3 // io.netty.handler.codec.socksx.v5.Socks5AddressType addrType
         5: .line 192
      StackMap locals: java.net.InetSocketAddress
      StackMap stack:
            aload 2 /* raddr */
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
            invokevirtual java.net.InetAddress.getHostAddress:()Ljava/lang/String;
            astore 4 /* rhost */
        start local 4 // java.lang.String rhost
         6: .line 193
            aload 4 /* rhost */
            invokestatic io.netty.util.NetUtil.isValidIpV4Address:(Ljava/lang/String;)Z
            ifeq 9
         7: .line 194
            getstatic io.netty.handler.codec.socksx.v5.Socks5AddressType.IPv4:Lio/netty/handler/codec/socksx/v5/Socks5AddressType;
            astore 3 /* addrType */
        start local 3 // io.netty.handler.codec.socksx.v5.Socks5AddressType addrType
         8: .line 195
            goto 15
        end local 3 // io.netty.handler.codec.socksx.v5.Socks5AddressType addrType
      StackMap locals: io.netty.handler.proxy.Socks5ProxyHandler io.netty.channel.ChannelHandlerContext java.net.InetSocketAddress top java.lang.String
      StackMap stack:
         9: aload 4 /* rhost */
            invokestatic io.netty.util.NetUtil.isValidIpV6Address:(Ljava/lang/String;)Z
            ifeq 12
        10: .line 196
            getstatic io.netty.handler.codec.socksx.v5.Socks5AddressType.IPv6:Lio/netty/handler/codec/socksx/v5/Socks5AddressType;
            astore 3 /* addrType */
        start local 3 // io.netty.handler.codec.socksx.v5.Socks5AddressType addrType
        11: .line 197
            goto 15
        end local 3 // io.netty.handler.codec.socksx.v5.Socks5AddressType addrType
        12: .line 198
      StackMap locals:
      StackMap stack:
            new io.netty.handler.proxy.ProxyConnectException
            dup
        13: .line 199
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "unknown address type: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* rhost */
            invokestatic io.netty.util.internal.StringUtil.simpleClassName:(Ljava/lang/Object;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual io.netty.handler.proxy.Socks5ProxyHandler.exceptionMessage:(Ljava/lang/String;)Ljava/lang/String;
        14: .line 198
            invokespecial io.netty.handler.proxy.ProxyConnectException.<init>:(Ljava/lang/String;)V
            athrow
        start local 3 // io.netty.handler.codec.socksx.v5.Socks5AddressType addrType
        15: .line 203
      StackMap locals: io.netty.handler.proxy.Socks5ProxyHandler io.netty.channel.ChannelHandlerContext java.net.InetSocketAddress io.netty.handler.codec.socksx.v5.Socks5AddressType java.lang.String
      StackMap stack:
            aload 1 /* ctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.pipeline:()Lio/netty/channel/ChannelPipeline;
            aload 0 /* this */
            getfield io.netty.handler.proxy.Socks5ProxyHandler.decoderName:Ljava/lang/String;
            aload 0 /* this */
            getfield io.netty.handler.proxy.Socks5ProxyHandler.decoderName:Ljava/lang/String;
            new io.netty.handler.codec.socksx.v5.Socks5CommandResponseDecoder
            dup
            invokespecial io.netty.handler.codec.socksx.v5.Socks5CommandResponseDecoder.<init>:()V
            invokeinterface io.netty.channel.ChannelPipeline.replace:(Ljava/lang/String;Ljava/lang/String;Lio/netty/channel/ChannelHandler;)Lio/netty/channel/ChannelHandler;
            pop
        16: .line 204
            aload 0 /* this */
            new io.netty.handler.codec.socksx.v5.DefaultSocks5CommandRequest
            dup
            getstatic io.netty.handler.codec.socksx.v5.Socks5CommandType.CONNECT:Lio/netty/handler/codec/socksx/v5/Socks5CommandType;
            aload 3 /* addrType */
            aload 4 /* rhost */
            aload 2 /* raddr */
            invokevirtual java.net.InetSocketAddress.getPort:()I
            invokespecial io.netty.handler.codec.socksx.v5.DefaultSocks5CommandRequest.<init>:(Lio/netty/handler/codec/socksx/v5/Socks5CommandType;Lio/netty/handler/codec/socksx/v5/Socks5AddressType;Ljava/lang/String;I)V
            invokevirtual io.netty.handler.proxy.Socks5ProxyHandler.sendToProxyServer:(Ljava/lang/Object;)V
        17: .line 205
            return
        end local 4 // java.lang.String rhost
        end local 3 // io.netty.handler.codec.socksx.v5.Socks5AddressType addrType
        end local 2 // java.net.InetSocketAddress raddr
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.netty.handler.proxy.Socks5ProxyHandler this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   18     0      this  Lio/netty/handler/proxy/Socks5ProxyHandler;
            0   18     1       ctx  Lio/netty/channel/ChannelHandlerContext;
            1   18     2     raddr  Ljava/net/InetSocketAddress;
            3    5     3  addrType  Lio/netty/handler/codec/socksx/v5/Socks5AddressType;
            8    9     3  addrType  Lio/netty/handler/codec/socksx/v5/Socks5AddressType;
           11   12     3  addrType  Lio/netty/handler/codec/socksx/v5/Socks5AddressType;
           15   18     3  addrType  Lio/netty/handler/codec/socksx/v5/Socks5AddressType;
            4    5     4     rhost  Ljava/lang/String;
            6   18     4     rhost  Ljava/lang/String;
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
      Name  Flags
      ctx   
}
SourceFile: "Socks5ProxyHandler.java"