package com.l7tech.policy.assertion;

import com.l7tech.objectmodel.ExternalEntityHeader;
import com.l7tech.objectmodel.migration.Migration;
import com.l7tech.objectmodel.migration.MigrationMappingSelection;
import com.l7tech.objectmodel.migration.PropertyResolver;
import com.l7tech.policy.assertion.annotation.ProcessesRequest;
import com.l7tech.policy.variable.Syntax;
import com.l7tech.util.InetAddressUtil;
import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;

@ProcessesRequest
public class RemoteIpRange extends Assertion implements UsesVariables {
   public static final int IPV4_MAX_NETWORK_MASK = 32;
   public static final int IPV6_MAX_NETWORK_MASK = 128;
   private static final String baseName;
   static final AssertionNodeNameFactory policyNameFactory;
   private static final String DEFAULT_START_IP;
   private static final String DEFAULT_NETWORK_MASK;
   private static final String DEFAULT_NUM = "1";
   private String startIp;
   private String networkMask;
   private boolean allowRange;
   private String ipSourceContextVariable = null;
   static final long serialVersionUID = 8046302820257572028L;
   private static final String[] b;

   public RemoteIpRange() {
      String[] var1 = b;
      this.startIp = var1[13];
      this.networkMask = var1[1];
      this.allowRange = true;
   }

   public RemoteIpRange(String var1, int var2, boolean var3) {
      this(var1, String.valueOf(var2), var3);
   }

   public RemoteIpRange(String var1, String var2, boolean var3) {
      validateUnformattedRange(var1, var2);
      this.startIp = var1;
      this.networkMask = var2;
      this.allowRange = var3;
   }

   public String getStartIp() {
      return this.startIp;
   }

   public void setStartIp(String var1) {
      this.startIp = var1;
   }

   public String getNetworkMask() {
      return this.networkMask;
   }

   public void setNetworkMask(int var1) {
      this.networkMask = String.valueOf(var1);
   }

   public void setNetworkMask(String var1) {
      this.networkMask = var1;
   }

   public void setAddressRange(String var1, String var2) {
      validateUnformattedRange(var1, var2);
      this.startIp = var1;
      this.networkMask = var2;
   }

   public boolean isAllowRange() {
      return this.allowRange;
   }

   public void setAllowRange(boolean var1) {
      this.allowRange = var1;
   }

   public String getIpSourceContextVariable() {
      return this.ipSourceContextVariable;
   }

   public void setIpSourceContextVariable(String var1) {
      this.ipSourceContextVariable = var1;
   }

   @Override
   public AssertionMetadata meta() {
      DefaultAssertionMetadata var1 = this.defaultMeta();
      String[] var2 = b;
      var1.put(var2[11], new String[]{var2[3]});
      var1.put(var2[9], var2[12]);
      var1.put(var2[15], var2[10]);
      var1.put(var2[0], var2[6]);
      var1.put(var2[17], policyNameFactory);
      var1.put(var2[18], var2[5]);
      var1.put(var2[14], var2[23]);
      var1.put(var2[16], var2[22]);
      return var1;
   }

   @Migration(
      mapName = MigrationMappingSelection.NONE,
      mapValue = MigrationMappingSelection.REQUIRED,
      export = false,
      valueType = ExternalEntityHeader.ValueType.TEXT_ARRAY,
      resolver = PropertyResolver.Type.SERVER_VARIABLE
   )
   @Override
   public String[] getVariablesUsed() {
      // $VF: Couldn't be decompiled
      // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
      // java.lang.RuntimeException: parsing failure!
      //   at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211)
      //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174)
      //
      // Bytecode:
      // 00: new java/util/ArrayList
      // 03: dup
      // 04: invokespecial java/util/ArrayList.<init> ()V
      // 07: astore 1
      // 08: aload 0
      // 09: getfield com/l7tech/policy/assertion/RemoteIpRange.ipSourceContextVariable Ljava/lang/String;
      // 0c: ifnull 32
      // 0f: aload 0
      // 10: getfield com/l7tech/policy/assertion/RemoteIpRange.ipSourceContextVariable Ljava/lang/String;
      // 13: invokevirtual java/lang/String.length ()I
      // 16: ifle 32
      // 19: goto 20
      // 1c: invokestatic com/l7tech/policy/assertion/RemoteIpRange.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 1f: athrow
      // 20: aload 1
      // 21: aload 0
      // 22: getfield com/l7tech/policy/assertion/RemoteIpRange.ipSourceContextVariable Ljava/lang/String;
      // 25: invokeinterface java/util/List.add (Ljava/lang/Object;)Z 2
      // 2a: pop
      // 2b: goto 32
      // 2e: invokestatic com/l7tech/policy/assertion/RemoteIpRange.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 31: athrow
      // 32: aload 0
      // 33: aload 1
      // 34: aload 0
      // 35: invokevirtual com/l7tech/policy/assertion/RemoteIpRange.getStartIp ()Ljava/lang/String;
      // 38: invokevirtual com/l7tech/policy/assertion/RemoteIpRange.addVariables (Ljava/util/List;Ljava/lang/String;)V
      // 3b: aload 0
      // 3c: aload 1
      // 3d: aload 0
      // 3e: invokevirtual com/l7tech/policy/assertion/RemoteIpRange.getNetworkMask ()Ljava/lang/String;
      // 41: invokevirtual com/l7tech/policy/assertion/RemoteIpRange.addVariables (Ljava/util/List;Ljava/lang/String;)V
      // 44: aload 1
      // 45: invokeinterface java/util/List.size ()I 1
      // 4a: anewarray 258
      // 4d: astore 2
      // 4e: aload 1
      // 4f: aload 2
      // 50: invokeinterface java/util/List.toArray ([Ljava/lang/Object;)[Ljava/lang/Object; 2
      // 55: checkcast [Ljava/lang/String;
      // 58: areturn
      // try (4 -> 11): 12 java/lang/IllegalArgumentException
      // try (7 -> 19): 20 java/lang/IllegalArgumentException
   }

   private void addVariables(List<String> var1, String var2) {
      String[] var3 = Syntax.getReferencedNames(var2);

      for (String var7 : var3) {
         var1.add(var7);
      }
   }

   public static void validateUnformattedRange(String var0, String var1) {
      validateRange(formatStartIpStringWithDefaultValue(var0), formatNetworkMaskStringWithDefaultValue(var1));
   }

   public static void validateRange(String var0, String var1) {
      String var2 = null;
      String var3 = var0 + "/" + var1;

      label44: {
         label48: {
            try {
               if (InetAddressUtil.isValidIpv4Pattern(var3)) {
                  if (isValidNetworkPrefix(var1, 32)) {
                     break label44;
                  }
                  break label48;
               }
            } catch (IllegalArgumentException var7) {
               throw a(var7);
            }

            label34: {
               try {
                  if (InetAddressUtil.isValidIpv6Pattern(var3)) {
                     if (isValidNetworkPrefix(var1, 128)) {
                        break label44;
                     }
                     break label34;
                  }
               } catch (IllegalArgumentException var6) {
                  throw a(var6);
               }

               var2 = b[2] + var3;
               break label44;
            }

            String[] var4 = b;
            var2 = var4[21] + var1;
            break label44;
         }

         String[] var8 = b;
         var2 = var8[7] + var1;
      }

      try {
         if (var2 != null) {
            throw new IllegalArgumentException(var2);
         }
      } catch (IllegalArgumentException var5) {
         throw a(var5);
      }
   }

   public static boolean isValidNetworkPrefix(String param0, int param1) {
      // $VF: Couldn't be decompiled
      // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
      // java.lang.RuntimeException: parsing failure!
      //   at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211)
      //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174)
      //
      // Bytecode:
      // 00: aload 0
      // 01: invokestatic java/lang/Integer.parseInt (Ljava/lang/String;)I
      // 04: istore 2
      // 05: iload 2
      // 06: ifle 1d
      // 09: iload 2
      // 0a: iload 1
      // 0b: if_icmpgt 1d
      // 0e: goto 15
      // 11: invokestatic com/l7tech/policy/assertion/RemoteIpRange.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 14: athrow
      // 15: bipush 1
      // 16: goto 1e
      // 19: invokestatic com/l7tech/policy/assertion/RemoteIpRange.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 1c: athrow
      // 1d: bipush 0
      // 1e: ireturn
      // 1f: astore 2
      // 20: bipush 0
      // 21: ireturn
      // try (5 -> 13): 13 java/lang/NumberFormatException
      // try (3 -> 8): 9 java/lang/NumberFormatException
      // try (0 -> 16): 17 java/lang/NumberFormatException
   }

   private static Pattern getSearchPattern(String var0, Map<String, Pattern> var1) {
      try {
         if (var1.containsKey(var0)) {
            return (Pattern)var1.get(var0);
         }
      } catch (IllegalArgumentException var3) {
         throw a(var3);
      }

      Pattern var2 = Pattern.compile(b[19] + var0 + "}", 16);
      var1.put(var0, var2);
      return var2;
   }

   public static String formatStartIpStringWithDefaultValue(String var0) {
      return formatStringWithVariablesWithDefaultValue(var0, "1", b[20]);
   }

   public static String formatNetworkMaskStringWithDefaultValue(String var0) {
      return formatStringWithVariablesWithDefaultValue(var0, "1", b[4]);
   }

   private static String formatStringWithVariablesWithDefaultValue(String param0, String param1, String param2) {
      // $VF: Couldn't be decompiled
      // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
      // java.lang.RuntimeException: parsing failure!
      //   at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211)
      //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174)
      //
      // Bytecode:
      // 00: aload 0
      // 01: invokestatic com/l7tech/policy/variable/Syntax.getReferencedNamesIndexedVarsNotOmitted (Ljava/lang/String;)[Ljava/lang/String;
      // 04: astore 3
      // 05: aload 3
      // 06: arraylength
      // 07: ifle 77
      // 0a: new java/util/HashMap
      // 0d: dup
      // 0e: invokespecial java/util/HashMap.<init> ()V
      // 11: astore 4
      // 13: bipush 0
      // 14: istore 5
      // 16: aload 3
      // 17: astore 6
      // 19: aload 6
      // 1b: arraylength
      // 1c: istore 7
      // 1e: bipush 0
      // 1f: istore 8
      // 21: iload 8
      // 23: iload 7
      // 25: if_icmpge 50
      // 28: aload 6
      // 2a: iload 8
      // 2c: aaload
      // 2d: astore 9
      // 2f: aload 9
      // 31: aload 4
      // 33: invokestatic com/l7tech/policy/assertion/RemoteIpRange.getSearchPattern (Ljava/lang/String;Ljava/util/Map;)Ljava/util/regex/Pattern;
      // 36: astore 10
      // 38: aload 10
      // 3a: aload 0
      // 3b: invokevirtual java/util/regex/Pattern.matcher (Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
      // 3e: astore 11
      // 40: aload 11
      // 42: aload 1
      // 43: invokevirtual java/util/regex/Matcher.replaceFirst (Ljava/lang/String;)Ljava/lang/String;
      // 46: astore 0
      // 47: bipush 1
      // 48: istore 5
      // 4a: iinc 8 1
      // 4d: goto 21
      // 50: aload 1
      // 51: aload 0
      // 52: invokevirtual java/lang/String.equals (Ljava/lang/Object;)Z
      // 55: ifeq 77
      // 58: aload 3
      // 59: arraylength
      // 5a: bipush 1
      // 5b: if_icmpne 77
      // 5e: goto 65
      // 61: invokestatic com/l7tech/policy/assertion/RemoteIpRange.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 64: athrow
      // 65: iload 5
      // 67: ifeq 77
      // 6a: goto 71
      // 6d: invokestatic com/l7tech/policy/assertion/RemoteIpRange.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 70: athrow
      // 71: aload 2
      // 72: areturn
      // 73: invokestatic com/l7tech/policy/assertion/RemoteIpRange.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 76: athrow
      // 77: aload 0
      // 78: areturn
      // try (42 -> 50): 51 java/lang/IllegalArgumentException
      // try (46 -> 55): 56 java/lang/IllegalArgumentException
      // try (53 -> 60): 60 java/lang/IllegalArgumentException
   }

   static {
      String[] var5 = new String[24];
      int var3 = 0;
      String var2 = "\f^?xrIv2P7xO^|\u0012\u0002N\u000b\u001a5Q%|jTw\\v\u0003=gYw\u000eZ n&Or\u0012X6'&\u0004\u0011V ~\u0002N\u000b7\u001fP>3j\ng\u0019\\;3eR}\u000fP?x(\\p\bV<s(ov\u0011P'xOMA\u001dQ4xVO|\fZ!ioX`=\\'tiS(\u001fP>2j\ng\u0019\\;2eR}\u000fP?x)Ov\u000fP&oeX`SQ6iqRa\u0017\u00114t`\u001d5Q%|jTw\\v\u0003k2\u001d}\u0019K$rtV3\fM6{oE)\\#.Z itTp\b\u001f\u0012~eX`\u000f\u001f'r&tC\\~7ytX`\u000f\u001f\u0001|hZv\t\u000fW<orsr\u0011Zi.Z itTp\b\u001f<o&\\\u007f\u0010P$=uXa\nV0x&\\p\u001fZ n&_r\u000fZ7=iS3\bW6=Om3\u001d[7ocN`\\P5=rUv\\h6\u007f&Nv\u000eI:~c\u001d|\u000e\u001f\u000bPJ\u001dr\fO?te\\g\u0015P==tXb\tZ iiO=\u000e\f^?xrIv:P?ycO`#.Z itTp\b\u001f\u0012~eX`\u000f\u001f'r&tC\\~7ytX`\u000f\u001f\u0001|hZv\u000bM\u0006a37\u000b+R\u000e}-\u0014\fM<mcOg\u0015Z \\eIz\u0013Q\u001d|kX\u000b\u0018Z ~tTc\bV<s\u0018\fP?teDE\u001dS:ygI|\u000e|?|uN}\u001dR6\u0015\fP?teD]\u0013[6SgPv:^0iiOj\u0019\fM<mcOg\u0015Z \\eIz\u0013Q\u0010qgN`\u0012^>x\u0002XD\u000bM\u0006a37\u000b+R\u000e}-\u001d5Q%|jTw\\v\u0003k0\u001d}\u0019K$rtV3\fM6{oE)\\";
      int var4 = "\f^?xrIv2P7xO^|\u0012\u0002N\u000b\u001a5Q%|jTw\\v\u0003=gYw\u000eZ n&Or\u0012X6'&\u0004\u0011V ~\u0002N\u000b7\u001fP>3j\ng\u0019\\;3eR}\u000fP?x(\\p\bV<s(ov\u0011P'xOMA\u001dQ4xVO|\fZ!ioX`=\\'tiS(\u001fP>2j\ng\u0019\\;2eR}\u000fP?x)Ov\u000fP&oeX`SQ6iqRa\u0017\u00114t`\u001d5Q%|jTw\\v\u0003k2\u001d}\u0019K$rtV3\fM6{oE)\\#.Z itTp\b\u001f\u0012~eX`\u000f\u001f'r&tC\\~7ytX`\u000f\u001f\u0001|hZv\t\u000fW<orsr\u0011Zi.Z itTp\b\u001f<o&\\\u007f\u0010P$=uXa\nV0x&\\p\u001fZ n&_r\u000fZ7=iS3\bW6=Om3\u001d[7ocN`\\P5=rUv\\h6\u007f&Nv\u000eI:~c\u001d|\u000e\u001f\u000bPJ\u001dr\fO?te\\g\u0015P==tXb\tZ iiO=\u000e\f^?xrIv:P?ycO`#.Z itTp\b\u001f\u0012~eX`\u000f\u001f'r&tC\\~7ytX`\u000f\u001f\u0001|hZv\u000bM\u0006a37\u000b+R\u000e}-\u0014\fM<mcOg\u0015Z \\eIz\u0013Q\u001d|kX\u000b\u0018Z ~tTc\bV<s\u0018\fP?teDE\u001dS:ygI|\u000e|?|uN}\u001dR6\u0015\fP?teD]\u0013[6SgPv:^0iiOj\u0019\fM<mcOg\u0015Z \\eIz\u0013Q\u0010qgN`\u0012^>x\u0002XD\u000bM\u0006a37\u000b+R\u000e}-\u001d5Q%|jTw\\v\u0003k0\u001d}\u0019K$rtV3\fM6{oE)\\"
         .length();
      char var1 = 15;
      int var7 = -1;

      label24:
      while (true) {
         byte var10000 = 10;
         String var10001 = var2.substring(++var7, var7 + var1);
         byte var10002 = -1;

         while (true) {
            String var8 = b(var10000, b(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var8;
                  if ((var7 += var1) >= var4) {
                     b = var5;
                     String[] var9 = b;
                     DEFAULT_NETWORK_MASK = b[4];
                     baseName = var9[8];
                     DEFAULT_START_IP = var9[20];
                     policyNameFactory = new be();
                     return;
                  }

                  var1 = var2.charAt(var7);
                  break;
               default:
                  var5[var3++] = var8;
                  if ((var7 += var1) < var4) {
                     var1 = var2.charAt(var7);
                     continue label24;
                  }

                  var2 = "F\tgj3S>@\u0005bj/\u000b&L\u0005sj)\u0005&L\u0002k00\u0016dw\u0003g++\u0001\u0003U4k*8\u0001\u001cD\nc >\u0010%W\u001bl6*\u0005;\u00008@\u0015yd\r\u0005$B\u0003*\u0014-\u000b:@\u0014~-:\u0017";
                  var4 = "F\tgj3S>@\u0005bj/\u000b&L\u0005sj)\u0005&L\u0002k00\u0016dw\u0003g++\u0001\u0003U4k*8\u0001\u001cD\nc >\u0010%W\u001bl6*\u0005;\u00008@\u0015yd\r\u0005$B\u0003*\u0014-\u000b:@\u0014~-:\u0017"
                     .length();
                  var1 = '2';
                  var7 = -1;
            }

            var10000 = 83;
            var10001 = var2.substring(++var7, var7 + var1);
            var10002 = 0;
         }
      }
   }

   private static IllegalArgumentException a(IllegalArgumentException var0) {
      return var0;
   }

   private static char[] b(String var0) {
      char[] var10000 = var0.toCharArray();
      if (var10000.length < 2) {
         var10000[0] = (char)(var10000[0] ^ 25);
      }

      return var10000;
   }

   private static String b(int var0, char[] var1) {
      int var10003 = var1.length;
      int var10002 = var0;
      char[] var10001 = var1;
      int var10000 = var10003;

      for (int var2 = 0; var10000 > var2; var2++) {
         var10001[var2] = (char)(var10001[var2] ^ var10002 ^ switch (var2 % 7) {
            case 0 -> 118;
            case 1 -> 53;
            case 2 -> 89;
            case 3 -> 23;
            case 4 -> 12;
            case 5 -> 55;
            default -> 25;
         });
      }

      return new String(var10001).intern();
   }
}
