package com.l7tech.server.policy.variable;

import com.l7tech.gateway.common.DefaultSyntaxErrorHandler;
import com.l7tech.gateway.common.audit.Audit;
import com.l7tech.gateway.common.audit.CommonMessages;
import com.l7tech.policy.variable.Syntax;
import com.l7tech.policy.variable.VariableNameSyntaxException;
import com.l7tech.policy.variable.Syntax.SyntaxErrorHandler;
import com.l7tech.util.ConfigFactory;
import com.l7tech.util.Pair;
import com.l7tech.util.Functions.Unary;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.logging.Logger;
import java.util.regex.Matcher;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

public final class ExpandVariables {
   static Logger a;
   private static final String[] b;
   private static final List<ExpandVariables.Selector<?>> c;
   private static final String[] d;
   private static final List<bf> e;
   private static final String[] g;

   @Nullable
   public static Object processSingleVariableAsObject(String var0, Map<String, ?> var1, Audit var2) {
      return processSingleVariableAsObject(var0, var1, var2, a());
   }

   @Nullable
   public static Object processSingleVariableAsDisplayableObject(String var0, Map<String, ?> var1, Audit var2) {
      return processSingleVariableAsDisplayableObject(var0, var1, var2, a());
   }

   static boolean a() {
      return ConfigFactory.getBooleanProperty(g[22], false);
   }

   public static Object processSingleVariableAsObject(String param0, Map<String, ?> param1, Audit param2, boolean param3) {
      // $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: ifnonnull 10
      // 04: new java/lang/IllegalArgumentException
      // 07: dup
      // 08: invokespecial java/lang/IllegalArgumentException.<init> ()V
      // 0b: athrow
      // 0c: invokestatic com/l7tech/server/policy/variable/ExpandVariables.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 0f: athrow
      // 10: getstatic com/l7tech/policy/variable/Syntax.oneVarPattern Ljava/util/regex/Pattern;
      // 13: aload 0
      // 14: invokevirtual java/util/regex/Pattern.matcher (Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
      // 17: astore 4
      // 19: aload 4
      // 1b: invokevirtual java/util/regex/Matcher.matches ()Z
      // 1e: ifeq 68
      // 21: aload 4
      // 23: bipush 1
      // 24: invokevirtual java/util/regex/Matcher.group (I)Ljava/lang/String;
      // 27: astore 5
      // 29: aload 5
      // 2b: invokestatic com/l7tech/server/policy/variable/ExpandVariables.defaultDelimiter ()Ljava/lang/String;
      // 2e: invokestatic com/l7tech/policy/variable/Syntax.parse (Ljava/lang/String;Ljava/lang/String;)Lcom/l7tech/policy/variable/Syntax;
      // 31: astore 6
      // 33: aload 1
      // 34: aload 6
      // 36: aload 2
      // 37: iload 3
      // 38: invokestatic com/l7tech/server/policy/variable/ExpandVariables.a (Ljava/util/Map;Lcom/l7tech/policy/variable/Syntax;Lcom/l7tech/gateway/common/audit/Audit;Z)[Ljava/lang/Object;
      // 3b: astore 7
      // 3d: aload 7
      // 3f: ifnull 4f
      // 42: aload 7
      // 44: arraylength
      // 45: ifne 55
      // 48: goto 4f
      // 4b: invokestatic com/l7tech/server/policy/variable/ExpandVariables.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 4e: athrow
      // 4f: aconst_null
      // 50: areturn
      // 51: invokestatic com/l7tech/server/policy/variable/ExpandVariables.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 54: athrow
      // 55: aload 7
      // 57: arraylength
      // 58: bipush 1
      // 59: if_icmpne 65
      // 5c: aload 7
      // 5e: bipush 0
      // 5f: aaload
      // 60: areturn
      // 61: invokestatic com/l7tech/server/policy/variable/ExpandVariables.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 64: athrow
      // 65: aload 7
      // 67: areturn
      // 68: aload 0
      // 69: aload 1
      // 6a: aload 2
      // 6b: iload 3
      // 6c: invokestatic com/l7tech/server/policy/variable/ExpandVariables.process (Ljava/lang/String;Ljava/util/Map;Lcom/l7tech/gateway/common/audit/Audit;Z)Ljava/lang/String;
      // 6f: areturn
      // try (0 -> 6): 6 java/lang/IllegalArgumentException
      // try (29 -> 34): 35 java/lang/IllegalArgumentException
      // try (31 -> 39): 39 java/lang/IllegalArgumentException
      // try (41 -> 49): 49 java/lang/IllegalArgumentException
   }

   @Nullable
   public static Object processSingleVariableAsDisplayableObject(String param0, Map<String, ?> param1, Audit param2, boolean param3) {
      // $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: ifnonnull 10
      // 04: new java/lang/IllegalArgumentException
      // 07: dup
      // 08: invokespecial java/lang/IllegalArgumentException.<init> ()V
      // 0b: athrow
      // 0c: invokestatic com/l7tech/server/policy/variable/ExpandVariables.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 0f: athrow
      // 10: getstatic com/l7tech/policy/variable/Syntax.oneVarPattern Ljava/util/regex/Pattern;
      // 13: aload 0
      // 14: invokevirtual java/util/regex/Pattern.matcher (Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
      // 17: astore 4
      // 19: aload 4
      // 1b: invokevirtual java/util/regex/Matcher.matches ()Z
      // 1e: ifeq cb
      // 21: aload 4
      // 23: bipush 1
      // 24: invokevirtual java/util/regex/Matcher.group (I)Ljava/lang/String;
      // 27: astore 5
      // 29: aload 5
      // 2b: invokestatic com/l7tech/server/policy/variable/ExpandVariables.defaultDelimiter ()Ljava/lang/String;
      // 2e: invokestatic com/l7tech/policy/variable/Syntax.parse (Ljava/lang/String;Ljava/lang/String;)Lcom/l7tech/policy/variable/Syntax;
      // 31: astore 6
      // 33: aload 1
      // 34: aload 6
      // 36: aload 2
      // 37: iload 3
      // 38: invokestatic com/l7tech/server/policy/variable/ExpandVariables.a (Ljava/util/Map;Lcom/l7tech/policy/variable/Syntax;Lcom/l7tech/gateway/common/audit/Audit;Z)[Ljava/lang/Object;
      // 3b: astore 7
      // 3d: new com/l7tech/gateway/common/DefaultSyntaxErrorHandler
      // 40: dup
      // 41: aload 2
      // 42: invokespecial com/l7tech/gateway/common/DefaultSyntaxErrorHandler.<init> (Lcom/l7tech/gateway/common/audit/Audit;)V
      // 45: astore 8
      // 47: aload 7
      // 49: ifnull 59
      // 4c: aload 7
      // 4e: arraylength
      // 4f: ifne 5f
      // 52: goto 59
      // 55: invokestatic com/l7tech/server/policy/variable/ExpandVariables.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 58: athrow
      // 59: aconst_null
      // 5a: areturn
      // 5b: invokestatic com/l7tech/server/policy/variable/ExpandVariables.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 5e: athrow
      // 5f: aload 7
      // 61: arraylength
      // 62: bipush 1
      // 63: if_icmpne 85
      // 66: aload 6
      // 68: bipush 1
      // 69: anewarray 73
      // 6c: dup
      // 6d: bipush 0
      // 6e: aload 7
      // 70: bipush 0
      // 71: aaload
      // 72: aastore
      // 73: aload 7
      // 75: bipush 0
      // 76: aaload
      // 77: invokestatic com/l7tech/policy/variable/Syntax.getFormatter (Ljava/lang/Object;)Lcom/l7tech/policy/variable/j;
      // 7a: aload 8
      // 7c: iload 3
      // 7d: invokevirtual com/l7tech/policy/variable/Syntax.format ([Ljava/lang/Object;Lcom/l7tech/policy/variable/j;Lcom/l7tech/policy/variable/Syntax$SyntaxErrorHandler;Z)Ljava/lang/String;
      // 80: areturn
      // 81: invokestatic com/l7tech/server/policy/variable/ExpandVariables.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 84: athrow
      // 85: aload 7
      // 87: arraylength
      // 88: anewarray 73
      // 8b: astore 9
      // 8d: bipush 1
      // 8e: anewarray 73
      // 91: astore 10
      // 93: bipush 0
      // 94: istore 11
      // 96: iload 11
      // 98: aload 7
      // 9a: arraylength
      // 9b: if_icmpge c8
      // 9e: aload 10
      // a0: bipush 0
      // a1: aload 7
      // a3: iload 11
      // a5: aaload
      // a6: aastore
      // a7: aload 9
      // a9: iload 11
      // ab: aload 6
      // ad: aload 10
      // af: aload 7
      // b1: iload 11
      // b3: aaload
      // b4: invokestatic com/l7tech/policy/variable/Syntax.getFormatter (Ljava/lang/Object;)Lcom/l7tech/policy/variable/j;
      // b7: aload 8
      // b9: iload 3
      // ba: invokevirtual com/l7tech/policy/variable/Syntax.format ([Ljava/lang/Object;Lcom/l7tech/policy/variable/j;Lcom/l7tech/policy/variable/Syntax$SyntaxErrorHandler;Z)Ljava/lang/String;
      // bd: aastore
      // be: iinc 11 1
      // c1: goto 96
      // c4: invokestatic com/l7tech/server/policy/variable/ExpandVariables.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // c7: athrow
      // c8: aload 9
      // ca: areturn
      // cb: aload 0
      // cc: aload 1
      // cd: aload 2
      // ce: iload 3
      // cf: invokestatic com/l7tech/server/policy/variable/ExpandVariables.process (Ljava/lang/String;Ljava/util/Map;Lcom/l7tech/gateway/common/audit/Audit;Z)Ljava/lang/String;
      // d2: areturn
      // try (0 -> 6): 6 java/lang/IllegalArgumentException
      // try (34 -> 39): 40 java/lang/IllegalArgumentException
      // try (36 -> 44): 44 java/lang/IllegalArgumentException
      // try (46 -> 67): 67 java/lang/IllegalArgumentException
      // try (78 -> 102): 102 java/lang/IllegalArgumentException
   }

   public static String defaultDelimiter() {
      String var0 = ConfigFactory.getProperty(g[28], null);

      try {
         if (var0 != null) {
            return var0;
         }
      } catch (IllegalArgumentException var1) {
         throw a(var1);
      }

      return Syntax.DEFAULT_MV_DELIMITER;
   }

   public static void badVariable(String var0, boolean var1, Audit var2) {
      try {
         var2.logAndAudit(CommonMessages.TEMPLATE_UNSUPPORTED_VARIABLE, new String[]{var0});
         if (var1) {
            throw new VariableNameSyntaxException(var0);
         }
      } catch (IllegalArgumentException var3) {
         throw a(var3);
      }
   }

   public static boolean isVariableReferencedNotFound(@Nullable String var0, @NotNull Map<String, Object> var1, @NotNull Audit var2) {
      try {
         if (var1 == null) {
            a(0);
         }
      } catch (VariableNameSyntaxException var10) {
         throw a(var10);
      }

      try {
         if (var2 == null) {
            a(1);
         }
      } catch (VariableNameSyntaxException var11) {
         throw a(var11);
      }

      String[] var3 = Syntax.getReferencedNames(var0);

      for (String var7 : var3) {
         try {
            process(Syntax.getVariableExpression(var7), var1, var2, true);
         } catch (VariableNameSyntaxException var9) {
            return true;
         }
      }

      return false;
   }

   @Nullable
   static Object[] a(Map<String, ?> param0, Syntax param1, Audit param2, boolean param3) {
      // $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:
      // 000: aload 1
      // 001: getfield com/l7tech/policy/variable/Syntax.remainingName Ljava/lang/String;
      // 004: invokevirtual java/lang/String.toLowerCase ()Ljava/lang/String;
      // 007: aload 0
      // 008: invokeinterface java/util/Map.keySet ()Ljava/util/Set; 1
      // 00d: invokestatic com/l7tech/policy/variable/Syntax.getMatchingName (Ljava/lang/String;Ljava/util/Set;)Ljava/lang/String;
      // 010: astore 4
      // 012: aload 4
      // 014: ifnonnull 026
      // 017: aload 1
      // 018: getfield com/l7tech/policy/variable/Syntax.remainingName Ljava/lang/String;
      // 01b: iload 3
      // 01c: aload 2
      // 01d: invokestatic com/l7tech/server/policy/variable/ExpandVariables.badVariable (Ljava/lang/String;ZLcom/l7tech/gateway/common/audit/Audit;)V
      // 020: aconst_null
      // 021: areturn
      // 022: invokestatic com/l7tech/server/policy/variable/ExpandVariables.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 025: athrow
      // 026: aload 0
      // 027: aload 4
      // 029: invokeinterface java/util/Map.get (Ljava/lang/Object;)Ljava/lang/Object; 2
      // 02e: astore 5
      // 030: new com/l7tech/gateway/common/DefaultSyntaxErrorHandler
      // 033: dup
      // 034: aload 2
      // 035: invokespecial com/l7tech/gateway/common/DefaultSyntaxErrorHandler.<init> (Lcom/l7tech/gateway/common/audit/Audit;)V
      // 038: astore 6
      // 03a: aload 4
      // 03c: invokevirtual java/lang/String.toLowerCase ()Ljava/lang/String;
      // 03f: aload 1
      // 040: getfield com/l7tech/policy/variable/Syntax.remainingName Ljava/lang/String;
      // 043: invokevirtual java/lang/String.toLowerCase ()Ljava/lang/String;
      // 046: invokevirtual java/lang/String.trim ()Ljava/lang/String;
      // 049: invokevirtual java/lang/String.equals (Ljava/lang/Object;)Z
      // 04c: ifne 0f3
      // 04f: aload 5
      // 051: ifnonnull 07c
      // 054: goto 05b
      // 057: invokestatic com/l7tech/server/policy/variable/ExpandVariables.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 05a: athrow
      // 05b: aload 6
      // 05d: aload 1
      // 05e: getfield com/l7tech/policy/variable/Syntax.remainingName Ljava/lang/String;
      // 061: invokeinterface com/l7tech/policy/variable/Syntax$SyntaxErrorHandler.handleBadVariable (Ljava/lang/String;)Ljava/lang/String; 2
      // 066: astore 8
      // 068: iload 3
      // 069: ifeq 07a
      // 06c: new java/lang/IllegalArgumentException
      // 06f: dup
      // 070: aload 8
      // 072: invokespecial java/lang/IllegalArgumentException.<init> (Ljava/lang/String;)V
      // 075: athrow
      // 076: invokestatic com/l7tech/server/policy/variable/ExpandVariables.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 079: athrow
      // 07a: aconst_null
      // 07b: areturn
      // 07c: getstatic com/l7tech/server/policy/variable/ExpandVariables.f Z
      // 07f: ifne 0a4
      // 082: aload 1
      // 083: getfield com/l7tech/policy/variable/Syntax.remainingName Ljava/lang/String;
      // 086: invokevirtual java/lang/String.toLowerCase ()Ljava/lang/String;
      // 089: aload 4
      // 08b: invokevirtual java/lang/String.startsWith (Ljava/lang/String;)Z
      // 08e: ifne 0a4
      // 091: goto 098
      // 094: invokestatic com/l7tech/server/policy/variable/ExpandVariables.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 097: athrow
      // 098: new java/lang/AssertionError
      // 09b: dup
      // 09c: invokespecial java/lang/AssertionError.<init> ()V
      // 09f: athrow
      // 0a0: invokestatic com/l7tech/server/policy/variable/ExpandVariables.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 0a3: athrow
      // 0a4: aload 4
      // 0a6: invokevirtual java/lang/String.length ()I
      // 0a9: istore 8
      // 0ab: getstatic com/l7tech/server/policy/variable/ExpandVariables.f Z
      // 0ae: ifne 0d9
      // 0b1: aload 1
      // 0b2: getfield com/l7tech/policy/variable/Syntax.remainingName Ljava/lang/String;
      // 0b5: iload 8
      // 0b7: iload 8
      // 0b9: bipush 1
      // 0ba: iadd
      // 0bb: invokevirtual java/lang/String.substring (II)Ljava/lang/String;
      // 0be: ldc "."
      // 0c0: invokevirtual java/lang/String.equals (Ljava/lang/Object;)Z
      // 0c3: ifne 0d9
      // 0c6: goto 0cd
      // 0c9: invokestatic com/l7tech/server/policy/variable/ExpandVariables.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 0cc: athrow
      // 0cd: new java/lang/AssertionError
      // 0d0: dup
      // 0d1: invokespecial java/lang/AssertionError.<init> ()V
      // 0d4: athrow
      // 0d5: invokestatic com/l7tech/server/policy/variable/ExpandVariables.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 0d8: athrow
      // 0d9: aload 4
      // 0db: aload 5
      // 0dd: aload 1
      // 0de: getfield com/l7tech/policy/variable/Syntax.remainingName Ljava/lang/String;
      // 0e1: iload 8
      // 0e3: bipush 1
      // 0e4: iadd
      // 0e5: invokevirtual java/lang/String.substring (I)Ljava/lang/String;
      // 0e8: aload 6
      // 0ea: iload 3
      // 0eb: invokestatic com/l7tech/server/policy/variable/ExpandVariables.a (Ljava/lang/String;Ljava/lang/Object;Ljava/lang/String;Lcom/l7tech/policy/variable/Syntax$SyntaxErrorHandler;Z)Lcom/l7tech/server/policy/variable/ExpandVariables$Selector$Selection;
      // 0ee: astore 7
      // 0f0: goto 0fe
      // 0f3: new com/l7tech/server/policy/variable/ExpandVariables$Selector$Selection
      // 0f6: dup
      // 0f7: aload 5
      // 0f9: invokespecial com/l7tech/server/policy/variable/ExpandVariables$Selector$Selection.<init> (Ljava/lang/Object;)V
      // 0fc: astore 7
      // 0fe: aload 7
      // 100: ifnull 112
      // 103: aload 7
      // 105: getstatic com/l7tech/server/policy/variable/ExpandVariables$Selector.NOT_PRESENT Lcom/l7tech/server/policy/variable/ExpandVariables$Selector$Selection;
      // 108: if_acmpne 133
      // 10b: goto 112
      // 10e: invokestatic com/l7tech/server/policy/variable/ExpandVariables.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 111: athrow
      // 112: aload 6
      // 114: aload 1
      // 115: getfield com/l7tech/policy/variable/Syntax.remainingName Ljava/lang/String;
      // 118: invokeinterface com/l7tech/policy/variable/Syntax$SyntaxErrorHandler.handleBadVariable (Ljava/lang/String;)Ljava/lang/String; 2
      // 11d: astore 8
      // 11f: iload 3
      // 120: ifeq 131
      // 123: new java/lang/IllegalArgumentException
      // 126: dup
      // 127: aload 8
      // 129: invokespecial java/lang/IllegalArgumentException.<init> (Ljava/lang/String;)V
      // 12c: athrow
      // 12d: invokestatic com/l7tech/server/policy/variable/ExpandVariables.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 130: athrow
      // 131: aconst_null
      // 132: areturn
      // 133: aload 7
      // 135: invokevirtual com/l7tech/server/policy/variable/ExpandVariables$Selector$Selection.getRemainingName ()Ljava/lang/String;
      // 138: astore 8
      // 13a: aload 8
      // 13c: ifnull 16d
      // 13f: aload 8
      // 141: invokevirtual java/lang/String.length ()I
      // 144: ifle 16d
      // 147: goto 14e
      // 14a: invokestatic com/l7tech/server/policy/variable/ExpandVariables.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 14d: athrow
      // 14e: aload 6
      // 150: aload 8
      // 152: invokeinterface com/l7tech/policy/variable/Syntax$SyntaxErrorHandler.handleBadVariable (Ljava/lang/String;)Ljava/lang/String; 2
      // 157: astore 9
      // 159: iload 3
      // 15a: ifeq 16b
      // 15d: new java/lang/IllegalArgumentException
      // 160: dup
      // 161: aload 9
      // 163: invokespecial java/lang/IllegalArgumentException.<init> (Ljava/lang/String;)V
      // 166: athrow
      // 167: invokestatic com/l7tech/server/policy/variable/ExpandVariables.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 16a: athrow
      // 16b: aconst_null
      // 16c: areturn
      // 16d: aload 7
      // 16f: invokevirtual com/l7tech/server/policy/variable/ExpandVariables$Selector$Selection.getSelectedValue ()Ljava/lang/Object;
      // 172: astore 5
      // 174: aload 5
      // 176: instanceof [Ljava/lang/Object;
      // 179: ifeq 186
      // 17c: aload 5
      // 17e: checkcast [Ljava/lang/Object;
      // 181: astore 8
      // 183: goto 1b6
      // 186: aload 5
      // 188: instanceof java/util/List
      // 18b: ifeq 1ab
      // 18e: aload 5
      // 190: checkcast java/util/List
      // 193: astore 9
      // 195: aload 9
      // 197: aload 9
      // 199: invokeinterface java/util/List.size ()I 1
      // 19e: anewarray 73
      // 1a1: invokeinterface java/util/List.toArray ([Ljava/lang/Object;)[Ljava/lang/Object; 2
      // 1a6: astore 8
      // 1a8: goto 1b6
      // 1ab: bipush 1
      // 1ac: anewarray 73
      // 1af: dup
      // 1b0: bipush 0
      // 1b1: aload 5
      // 1b3: aastore
      // 1b4: astore 8
      // 1b6: aload 1
      // 1b7: aload 8
      // 1b9: aload 6
      // 1bb: iload 3
      // 1bc: invokevirtual com/l7tech/policy/variable/Syntax.filter ([Ljava/lang/Object;Lcom/l7tech/policy/variable/Syntax$SyntaxErrorHandler;Z)[Ljava/lang/Object;
      // 1bf: areturn
      // try (7 -> 16): 16 java/lang/IllegalArgumentException
      // try (27 -> 37): 38 java/lang/IllegalArgumentException
      // try (45 -> 52): 52 java/lang/IllegalArgumentException
      // try (56 -> 64): 65 java/lang/IllegalArgumentException
      // try (58 -> 71): 71 java/lang/IllegalArgumentException
      // try (76 -> 88): 89 java/lang/IllegalArgumentException
      // try (78 -> 95): 95 java/lang/IllegalArgumentException
      // try (115 -> 120): 121 java/lang/IllegalArgumentException
      // try (128 -> 135): 135 java/lang/IllegalArgumentException
      // try (142 -> 147): 148 java/lang/IllegalArgumentException
      // try (154 -> 161): 161 java/lang/IllegalArgumentException
   }

   private static ExpandVariables.Selector.Selection a(String param0, Object param1, String param2, SyntaxErrorHandler param3, boolean param4) {
      // $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:
      // 000: aload 0
      // 001: astore 5
      // 003: aload 1
      // 004: astore 6
      // 006: aload 2
      // 007: astore 7
      // 009: aload 7
      // 00b: ifnull 1c2
      // 00e: aload 7
      // 010: invokevirtual java/lang/String.length ()I
      // 013: ifle 1c2
      // 016: goto 01d
      // 019: invokestatic com/l7tech/server/policy/variable/ExpandVariables.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 01c: athrow
      // 01d: aconst_null
      // 01e: astore 8
      // 020: aload 6
      // 022: instanceof com/l7tech/server/policy/variable/ExpandVariables$Selector
      // 025: ifeq 032
      // 028: aload 6
      // 02a: checkcast com/l7tech/server/policy/variable/ExpandVariables$Selector
      // 02d: astore 8
      // 02f: goto 06e
      // 032: getstatic com/l7tech/server/policy/variable/ExpandVariables.c Ljava/util/List;
      // 035: invokeinterface java/util/List.iterator ()Ljava/util/Iterator; 1
      // 03a: astore 9
      // 03c: aload 9
      // 03e: invokeinterface java/util/Iterator.hasNext ()Z 1
      // 043: ifeq 06e
      // 046: aload 9
      // 048: invokeinterface java/util/Iterator.next ()Ljava/lang/Object; 1
      // 04d: checkcast com/l7tech/server/policy/variable/ExpandVariables$Selector
      // 050: astore 10
      // 052: aload 10
      // 054: invokeinterface com/l7tech/server/policy/variable/ExpandVariables$Selector.getContextObjectClass ()Ljava/lang/Class; 1
      // 059: aload 6
      // 05b: invokevirtual java/lang/Object.getClass ()Ljava/lang/Class;
      // 05e: invokevirtual java/lang/Class.isAssignableFrom (Ljava/lang/Class;)Z
      // 061: ifeq 06b
      // 064: aload 10
      // 066: astore 8
      // 068: goto 06e
      // 06b: goto 03c
      // 06e: aload 8
      // 070: ifnonnull 083
      // 073: new com/l7tech/server/policy/variable/ExpandVariables$Selector$Selection
      // 076: dup
      // 077: aload 6
      // 079: aload 7
      // 07b: invokespecial com/l7tech/server/policy/variable/ExpandVariables$Selector$Selection.<init> (Ljava/lang/Object;Ljava/lang/String;)V
      // 07e: areturn
      // 07f: invokestatic com/l7tech/server/policy/variable/ExpandVariables.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 082: athrow
      // 083: aconst_null
      // 084: astore 9
      // 086: new com/l7tech/gateway/common/QueuingSyntaxErrorHandler
      // 089: dup
      // 08a: aload 3
      // 08b: invokespecial com/l7tech/gateway/common/QueuingSyntaxErrorHandler.<init> (Lcom/l7tech/policy/variable/Syntax$SyntaxErrorHandler;)V
      // 08e: astore 10
      // 090: aload 8
      // 092: aload 5
      // 094: aload 6
      // 096: aload 7
      // 098: aload 10
      // 09a: iload 4
      // 09c: invokeinterface com/l7tech/server/policy/variable/ExpandVariables$Selector.select (Ljava/lang/String;Ljava/lang/Object;Ljava/lang/String;Lcom/l7tech/policy/variable/Syntax$SyntaxErrorHandler;Z)Lcom/l7tech/server/policy/variable/ExpandVariables$Selector$Selection; 6
      // 0a1: astore 9
      // 0a3: goto 0b9
      // 0a6: astore 11
      // 0a8: aload 5
      // 0aa: aload 6
      // 0ac: aload 7
      // 0ae: aload 10
      // 0b0: iload 4
      // 0b2: aload 8
      // 0b4: invokestatic com/l7tech/server/policy/variable/ExpandVariables.a (Ljava/lang/String;Ljava/lang/Object;Ljava/lang/String;Lcom/l7tech/policy/variable/Syntax$SyntaxErrorHandler;ZLcom/l7tech/server/policy/variable/ExpandVariables$Selector;)Lcom/l7tech/server/policy/variable/ExpandVariables$Selector$Selection;
      // 0b7: astore 9
      // 0b9: aload 9
      // 0bb: ifnonnull 117
      // 0be: aload 5
      // 0c0: aload 6
      // 0c2: aload 7
      // 0c4: aload 10
      // 0c6: iload 4
      // 0c8: aload 8
      // 0ca: invokestatic com/l7tech/server/policy/variable/ExpandVariables.a (Ljava/lang/String;Ljava/lang/Object;Ljava/lang/String;Lcom/l7tech/policy/variable/Syntax$SyntaxErrorHandler;ZLcom/l7tech/server/policy/variable/ExpandVariables$Selector;)Lcom/l7tech/server/policy/variable/ExpandVariables$Selector$Selection;
      // 0cd: astore 9
      // 0cf: aload 9
      // 0d1: ifnonnull 117
      // 0d4: aload 10
      // 0d6: invokevirtual com/l7tech/gateway/common/QueuingSyntaxErrorHandler.flushLogAuditEvents ()V
      // 0d9: aload 3
      // 0da: getstatic com/l7tech/server/policy/variable/ExpandVariables.g [Ljava/lang/String;
      // 0dd: astore 13
      // 0df: aload 13
      // 0e1: bipush 1
      // 0e2: aaload
      // 0e3: bipush 2
      // 0e4: anewarray 73
      // 0e7: dup
      // 0e8: bipush 0
      // 0e9: aload 7
      // 0eb: aastore
      // 0ec: dup
      // 0ed: bipush 1
      // 0ee: aload 1
      // 0ef: invokevirtual java/lang/Object.getClass ()Ljava/lang/Class;
      // 0f2: invokevirtual java/lang/Class.getName ()Ljava/lang/String;
      // 0f5: aastore
      // 0f6: invokestatic java/text/MessageFormat.format (Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
      // 0f9: invokeinterface com/l7tech/policy/variable/Syntax$SyntaxErrorHandler.handleBadVariable (Ljava/lang/String;)Ljava/lang/String; 2
      // 0fe: astore 11
      // 100: iload 4
      // 102: ifeq 113
      // 105: new java/lang/IllegalArgumentException
      // 108: dup
      // 109: aload 11
      // 10b: invokespecial java/lang/IllegalArgumentException.<init> (Ljava/lang/String;)V
      // 10e: athrow
      // 10f: invokestatic com/l7tech/server/policy/variable/ExpandVariables.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 112: athrow
      // 113: getstatic com/l7tech/server/policy/variable/ExpandVariables$Selector.NOT_PRESENT Lcom/l7tech/server/policy/variable/ExpandVariables$Selector$Selection;
      // 116: areturn
      // 117: aload 9
      // 119: invokevirtual com/l7tech/server/policy/variable/ExpandVariables$Selector$Selection.getRemainingName ()Ljava/lang/String;
      // 11c: astore 11
      // 11e: aload 11
      // 120: ifnull 132
      // 123: aload 11
      // 125: invokevirtual java/lang/String.length ()I
      // 128: ifne 139
      // 12b: goto 132
      // 12e: invokestatic com/l7tech/server/policy/variable/ExpandVariables.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 131: athrow
      // 132: aload 9
      // 134: areturn
      // 135: invokestatic com/l7tech/server/policy/variable/ExpandVariables.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 138: athrow
      // 139: aload 11
      // 13b: invokevirtual java/lang/String.length ()I
      // 13e: ifle 19c
      // 141: aload 7
      // 143: bipush 0
      // 144: aload 7
      // 146: invokevirtual java/lang/String.length ()I
      // 149: aload 9
      // 14b: invokevirtual com/l7tech/server/policy/variable/ExpandVariables$Selector$Selection.getRemainingName ()Ljava/lang/String;
      // 14e: invokevirtual java/lang/String.length ()I
      // 151: isub
      // 152: invokevirtual java/lang/String.substring (II)Ljava/lang/String;
      // 155: astore 12
      // 157: aload 12
      // 159: ldc "."
      // 15b: invokevirtual java/lang/String.endsWith (Ljava/lang/String;)Z
      // 15e: ifeq 170
      // 161: aload 12
      // 163: bipush 0
      // 164: aload 12
      // 166: invokevirtual java/lang/String.length ()I
      // 169: bipush 1
      // 16a: isub
      // 16b: invokevirtual java/lang/String.substring (II)Ljava/lang/String;
      // 16e: astore 12
      // 170: aload 5
      // 172: ldc "."
      // 174: invokevirtual java/lang/String.endsWith (Ljava/lang/String;)Z
      // 177: ifne 183
      // 17a: aload 12
      // 17c: invokedynamic makeConcatWithConstants (Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ ".\u0001" ]
      // 181: astore 12
      // 183: aload 5
      // 185: aload 12
      // 187: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001" ]
      // 18c: astore 5
      // 18e: aload 9
      // 190: invokevirtual com/l7tech/server/policy/variable/ExpandVariables$Selector$Selection.getSelectedValue ()Ljava/lang/Object;
      // 193: astore 6
      // 195: aload 11
      // 197: astore 7
      // 199: goto 009
      // 19c: new java/lang/IllegalStateException
      // 19f: dup
      // 1a0: aload 7
      // 1a2: aload 9
      // 1a4: invokestatic java/lang/String.valueOf (Ljava/lang/Object;)Ljava/lang/String;
      // 1a7: getstatic com/l7tech/server/policy/variable/ExpandVariables.g [Ljava/lang/String;
      // 1aa: astore 13
      // 1ac: aload 13
      // 1ae: bipush 17
      // 1b0: aaload
      // 1b1: dup_x2
      // 1b2: pop
      // 1b3: aload 13
      // 1b5: bipush 11
      // 1b7: aaload
      // 1b8: swap
      // 1b9: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001\u0001\u0001" ]
      // 1be: invokespecial java/lang/IllegalStateException.<init> (Ljava/lang/String;)V
      // 1c1: athrow
      // 1c2: new java/lang/IllegalStateException
      // 1c5: dup
      // 1c6: aload 2
      // 1c7: aload 1
      // 1c8: invokevirtual java/lang/Object.getClass ()Ljava/lang/Class;
      // 1cb: invokevirtual java/lang/Class.getName ()Ljava/lang/String;
      // 1ce: getstatic com/l7tech/server/policy/variable/ExpandVariables.g [Ljava/lang/String;
      // 1d1: astore 13
      // 1d3: aload 13
      // 1d5: bipush 0
      // 1d6: aaload
      // 1d7: dup_x2
      // 1d8: pop
      // 1d9: aload 13
      // 1db: bipush 32
      // 1dd: aaload
      // 1de: swap
      // 1df: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001\u0001\u0001" ]
      // 1e4: invokespecial java/lang/IllegalStateException.<init> (Ljava/lang/String;)V
      // 1e7: athrow
      // try (43 -> 51): 51 java/lang/IllegalArgumentException
      // try (6 -> 11): 12 java/lang/IllegalArgumentException
      // try (60 -> 68): 69 java/lang/IllegalArgumentException
      // try (113 -> 120): 120 java/lang/IllegalArgumentException
      // try (127 -> 132): 133 java/lang/IllegalArgumentException
      // try (129 -> 137): 137 java/lang/IllegalArgumentException
   }

   private static ExpandVariables.Selector.Selection a(
      String var0, Object var1, String var2, SyntaxErrorHandler var3, boolean var4, ExpandVariables.Selector var5
   ) {
      bf var6 = a(var2);
      if (var6 != null) {
         Pair var7 = a(var2, var6);
         if (var7.left == null) {
            return var6.select(var1, var3, var4);
         }

         ExpandVariables.Selector.Selection var8 = var5.select(var0, var1, (String)var7.left, var3, var4);

         try {
            if (var8 != null) {
               return var6.select(var8.getSelectedValue(), var3, var4);
            }
         } catch (IllegalArgumentException var9) {
            throw a(var9);
         }
      }

      return null;
   }

   private static bf a(String var0) {
      if (var0 != null) {
         for (bf var2 : e) {
            try {
               if (var0.equalsIgnoreCase(var2.getSuffix())) {
                  return var2;
               }
            } catch (IllegalArgumentException var4) {
               throw a(var4);
            }

            try {
               if (var0.toLowerCase().endsWith("." + var2.getSuffix())) {
                  return var2;
               }
            } catch (IllegalArgumentException var3) {
               throw a(var3);
            }
         }
      }

      return null;
   }

   private static Pair<String, String> a(String param0, bf 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: ifnull 6a
      // 04: aload 1
      // 05: ifnull 6a
      // 08: goto 0f
      // 0b: invokestatic com/l7tech/server/policy/variable/ExpandVariables.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 0e: athrow
      // 0f: aload 0
      // 10: aload 1
      // 11: invokeinterface com/l7tech/server/policy/variable/bf.getSuffix ()Ljava/lang/String; 1
      // 16: invokevirtual java/lang/String.equalsIgnoreCase (Ljava/lang/String;)Z
      // 19: ifeq 31
      // 1c: goto 23
      // 1f: invokestatic com/l7tech/server/policy/variable/ExpandVariables.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 22: athrow
      // 23: new com/l7tech/util/Pair
      // 26: dup
      // 27: aconst_null
      // 28: aload 0
      // 29: invokespecial com/l7tech/util/Pair.<init> (Ljava/lang/Object;Ljava/lang/Object;)V
      // 2c: areturn
      // 2d: invokestatic com/l7tech/server/policy/variable/ExpandVariables.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 30: athrow
      // 31: aload 0
      // 32: invokevirtual java/lang/String.toLowerCase ()Ljava/lang/String;
      // 35: aload 1
      // 36: invokeinterface com/l7tech/server/policy/variable/bf.getSuffix ()Ljava/lang/String; 1
      // 3b: invokedynamic makeConcatWithConstants (Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ ".\u0001" ]
      // 40: invokevirtual java/lang/String.endsWith (Ljava/lang/String;)Z
      // 43: ifeq 6a
      // 46: aload 0
      // 47: invokevirtual java/lang/String.length ()I
      // 4a: aload 1
      // 4b: invokeinterface com/l7tech/server/policy/variable/bf.getSuffix ()Ljava/lang/String; 1
      // 50: invokevirtual java/lang/String.length ()I
      // 53: bipush 1
      // 54: iadd
      // 55: isub
      // 56: istore 2
      // 57: new com/l7tech/util/Pair
      // 5a: dup
      // 5b: aload 0
      // 5c: bipush 0
      // 5d: iload 2
      // 5e: invokevirtual java/lang/String.substring (II)Ljava/lang/String;
      // 61: aload 0
      // 62: iload 2
      // 63: invokevirtual java/lang/String.substring (I)Ljava/lang/String;
      // 66: invokespecial com/l7tech/util/Pair.<init> (Ljava/lang/Object;Ljava/lang/Object;)V
      // 69: areturn
      // 6a: new com/l7tech/util/Pair
      // 6d: dup
      // 6e: aload 0
      // 6f: aconst_null
      // 70: invokespecial com/l7tech/util/Pair.<init> (Ljava/lang/Object;Ljava/lang/Object;)V
      // 73: areturn
      // try (0 -> 4): 5 java/lang/IllegalArgumentException
      // try (2 -> 12): 13 java/lang/IllegalArgumentException
      // try (7 -> 21): 21 java/lang/IllegalArgumentException
   }

   @NotNull
   public static String process(String var0, Map<String, ?> var1, Audit var2) {
      return process(var0, var1, var2, a(), null);
   }

   public static String process(String var0, Map<String, ?> var1, Audit var2, Unary<String, String> var3) {
      return process(var0, var1, var2, a(), var3);
   }

   public static String process(String var0, Map<String, ?> var1, Audit var2, boolean var3) {
      return process(var0, var1, var2, var3, null);
   }

   public static String process(String var0, Map<String, ?> var1, Audit var2, boolean var3, int var4) {
      return process(var0, var1, var2, var3, new be(var4));
   }

   @NotNull
   public static String process(String var0, Map<String, ?> var1, Audit var2, boolean var3, @Nullable Unary<String, String> var4) {
      try {
         if (var0 == null) {
            throw new IllegalArgumentException();
         }
      } catch (IllegalArgumentException var16) {
         throw a(var16);
      }

      Matcher var5 = Syntax.regexPattern.matcher(var0);
      StringBuffer var6 = new StringBuffer();

      while (var5.find()) {
         int var7 = var5.groupCount();

         try {
            if (var7 != 1) {
               throw new IllegalStateException(g[21] + var7);
            }
         } catch (IllegalArgumentException var15) {
            throw a(var15);
         }

         Syntax var8 = Syntax.parse(var5.group(1), defaultDelimiter());
         Object[] var9 = a(var1, var8, var2, var3);

         String var10;
         label54: {
            label53: {
               try {
                  if (var9 == null || var9.length == 0) {
                     break label53;
                  }
               } catch (IllegalArgumentException var14) {
                  throw a(var14);
               }

               DefaultSyntaxErrorHandler var11 = new DefaultSyntaxErrorHandler(var2);
               var10 = var8.format(var9, Syntax.getFormatter(var9[0]), var11, var3);
               break label54;
            }

            var10 = "";
         }

         String var10000;
         label45: {
            try {
               if (var4 != null) {
                  var10000 = (String)var4.call(var10);
                  break label45;
               }
            } catch (IllegalArgumentException var13) {
               throw a(var13);
            }

            var10000 = var10;
         }

         var10 = var10000;
         var10 = Matcher.quoteReplacement(var10);
         var5.appendReplacement(var6, var10);
      }

      try {
         var5.appendTail(var6);
         String var19 = var6.toString();
         if (var19 == null) {
            a(2);
         }

         return var19;
      } catch (IllegalArgumentException var12) {
         throw a(var12);
      }
   }

   @NotNull("Values of the list may be null")
   public static List<Object> processNoFormat(@NotNull String var0, @NotNull Map<String, ?> var1, @NotNull Audit var2, boolean var3) throws VariableNameSyntaxException {
      try {
         if (var0 == null) {
            a(3);
         }
      } catch (VariableNameSyntaxException var17) {
         throw a(var17);
      }

      try {
         if (var1 == null) {
            a(4);
         }
      } catch (VariableNameSyntaxException var11) {
         throw a(var11);
      }

      try {
         if (var2 == null) {
            a(5);
         }
      } catch (VariableNameSyntaxException var16) {
         throw a(var16);
      }

      Matcher var4 = Syntax.regexPattern.matcher(var0);
      ArrayList var5 = new ArrayList();

      int var6;
      for (var6 = 0; var4.find(); var6 = var4.end()) {
         int var7 = var4.groupCount();

         try {
            if (var7 != 1) {
               throw new IllegalStateException(g[44] + var7);
            }
         } catch (VariableNameSyntaxException var15) {
            throw a(var15);
         }

         String var8 = var0.substring(var6, var4.start());

         try {
            if (!var8.isEmpty()) {
               var5.add(var0.substring(var6, var4.start()));
            }
         } catch (VariableNameSyntaxException var14) {
            throw a(var14);
         }

         Object[] var9 = a(var1, Syntax.parse(var4.group(1), defaultDelimiter()), var2, var3);

         try {
            if (var9 != null) {
               Collections.addAll(var5, var9);
            }
         } catch (VariableNameSyntaxException var13) {
            throw a(var13);
         }
      }

      try {
         if (var6 < var0.length()) {
            var5.add(var0.substring(var6, var0.length()));
         }
      } catch (VariableNameSyntaxException var12) {
         throw a(var12);
      }

      try {
         if (var5 == null) {
            a(6);
         }

         return var5;
      } catch (VariableNameSyntaxException var10) {
         throw a(var10);
      }
   }

   @NotNull
   public static List<Object> processNoFormat(@NotNull String var0, @NotNull Map<String, ?> var1, @NotNull Audit var2) {
      try {
         if (var0 == null) {
            a(7);
         }
      } catch (IllegalArgumentException var5) {
         throw a(var5);
      }

      try {
         if (var1 == null) {
            a(8);
         }
      } catch (IllegalArgumentException var3) {
         throw a(var3);
      }

      try {
         if (var2 == null) {
            a(9);
         }
      } catch (IllegalArgumentException var4) {
         throw a(var4);
      }

      return processNoFormat(var0, var1, var2, a());
   }

   @Nullable
   public static String processEnvVar(@Nullable String param0) {
      // $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: ifnonnull 0c
      // 04: aconst_null
      // 05: goto 10
      // 08: invokestatic com/l7tech/server/policy/variable/ExpandVariables.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 0b: athrow
      // 0c: aload 0
      // 0d: invokestatic com/l7tech/policy/variable/Syntax.getSingleVariableReferenced (Ljava/lang/String;)Ljava/lang/String;
      // 10: astore 1
      // 11: aload 1
      // 12: ifnull 26
      // 15: aload 1
      // 16: getstatic com/l7tech/policy/variable/BuiltinVariables.SSGNODE_ENV_VAR Ljava/lang/String;
      // 19: invokevirtual java/lang/String.startsWith (Ljava/lang/String;)Z
      // 1c: ifne 2c
      // 1f: goto 26
      // 22: invokestatic com/l7tech/server/policy/variable/ExpandVariables.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 25: athrow
      // 26: aload 0
      // 27: areturn
      // 28: invokestatic com/l7tech/server/policy/variable/ExpandVariables.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 2b: athrow
      // 2c: aload 1
      // 2d: getstatic com/l7tech/policy/variable/BuiltinVariables.SSGNODE_ENV_VAR_DOT_LENGTH I
      // 30: invokevirtual java/lang/String.substring (I)Ljava/lang/String;
      // 33: astore 2
      // 34: aconst_null
      // 35: astore 3
      // 36: getstatic com/l7tech/server/policy/variable/ServerVariables.o Ljava/util/regex/Pattern;
      // 39: aload 2
      // 3a: invokevirtual java/util/regex/Pattern.matcher (Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
      // 3d: invokevirtual java/util/regex/Matcher.find ()Z
      // 40: ifeq 4b
      // 43: aload 2
      // 44: invokestatic java/lang/System.getenv (Ljava/lang/String;)Ljava/lang/String;
      // 47: astore 3
      // 48: goto 6c
      // 4b: getstatic com/l7tech/server/policy/variable/ExpandVariables.a Ljava/util/logging/Logger;
      // 4e: aload 2
      // 4f: getstatic com/l7tech/server/policy/variable/ServerVariables.n Ljava/lang/String;
      // 52: getstatic com/l7tech/server/policy/variable/ExpandVariables.g [Ljava/lang/String;
      // 55: astore 4
      // 57: aload 4
      // 59: bipush 24
      // 5b: aaload
      // 5c: dup_x2
      // 5d: pop
      // 5e: aload 4
      // 60: bipush 29
      // 62: aaload
      // 63: swap
      // 64: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001\u0001\u0001" ]
      // 69: invokevirtual java/util/logging/Logger.warning (Ljava/lang/String;)V
      // 6c: aload 3
      // 6d: ifnonnull 78
      // 70: aload 0
      // 71: goto 79
      // 74: invokestatic com/l7tech/server/policy/variable/ExpandVariables.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 77: athrow
      // 78: aload 3
      // 79: areturn
      // try (0 -> 4): 4 java/lang/IllegalArgumentException
      // try (9 -> 15): 16 java/lang/IllegalArgumentException
      // try (11 -> 20): 20 java/lang/IllegalArgumentException
      // try (53 -> 57): 57 java/lang/IllegalArgumentException
   }

   private ExpandVariables() {
   }

   static {
      String[] var5 = new String[47];
      int var3 = 0;
      String var2 = "pDCj4F{QE\u0002{=O>F^\u0002\n^\u001a_(7M{^\u001b_8FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\b@IWz=s:VYUg*G\b@FGk,L)\u000fUXMk=P(kEdg*N:Q$FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r=M;FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\bL^GE1M?@Xag6W>]^qm4F8QEP9FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u0003\u0010\u001a\u001bK=Q/LLKk9W>vONm;W4W2FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u001d@OFj9@0vONm;W4W.FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u001cJCF[=O>F^Mz1FEO'4\u0014/@IJ'+F)SOP'(L7LI['.B)LK@d=\f\u001e]ZCf<u:WCCj4F(CFEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\b@IWz=`4K\\Gz+B/LEL[=P(LEL[=O>F^Mz\n\u0005XG|-Q5@N\u00021FEO'4\u0014/@IJ'+F)SOP'(L7LI['.B)LK@d=\f\u001e]ZCf<u:WCCj4F(\u0004SKP{1FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u0016@YQi?F\b@FGk,L)FFEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\b@IWz=s:VYUg*G\u0017JIC|7Q\u0018JDVm W\b@FGk,L)CFEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u0010@X@m*L(d_V`7Q2_KVa7M\u001fD^C[=O>F^Mz\rvONm;W4W\nDg*\u0003\u0005D_Fa,\u001cLYti*J:GFGZ=E>WOLk=G\u0015J^dg-M?BFEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u000bJFKk!f5CEPk=N>K^ag6W>]^qm4F8QEP&`RRm;W2KM\u00029xN:QIJa6D{BXM}(\u000f{WOAm1U>A\u0010\u0002\u0013QOOx4B/@\u0004Q|*J8QgMl=.FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u000eVOP[=O>F^Mz,d^Vm5S/\u0005^M(9@8@YQ(=M-LXMf5F5Q\nTi*J:GFG(6B6@\n\u001esKN}=P{JL\u0002|0F{ICQ|xN:\\\n@mxM.IF*edM|\u0016V7I\nOm,K4A\n\u0007{v\u0006(\u0005GW{,\u00035J^\u0002z=W.WD\u0002f-O72FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u001fD^G\\1N>vONm;W4W#QOOx4B/@\u0004Fm>B.I^o}4W2SKN}=g>ICOa,F)F\u0005]C{xM4Q\nCd4L,@N\f(;L6\u000bF\u0015|=@3\u000bYGz.F)\u000bZMd1@\"\u000b\\Cz1B9IO\fm6U\u001aIFM\u007f\u0014J(QxGo=[f5FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u001aPNK|\u001cF/DCN[=O>F^Mz$FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r:S\u0006\u0005LPg5\u0003=FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u001aPNK|\u000bF:WIJK*J/@XKi\u000bF7@IVg*5FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u001aPNK|\nF8JXF[=O>F^Mz6FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u0017@DE|0p.CLKp\u000bF7@IVg*EFEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\tDNK}+b.QBGf,J8D^Kg6`4K^Gp,p>IOA|7Q1FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\b@XTa;F\b@FGk,L)CFEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u001f@HWo\fQ:FOti*J:GFGK7M/@RV[=O>F^Mz?FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u0016@YQi?F\u0018JDVm W\u0016DZRa6D\b@FGk,L)#FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r:>dXE}5F5Q\nDg*\u0003\u001bkEVF-O7\u0005ZCz9N>QOP(\u007f\u0006(\u0002\nMnx\u0006(\u000b\u000fQ(5V(Q\nLg,\u00039@\nL}4O1FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u0019\\^GO=M\b@FGk,L).FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u0017LYV[=O>F^Mz&`RRm;W2KM\u00029xN:QIJa6D{BXM}(\u000f{WOAm1U>A\u0010\u0002";
      int var4 = "pDCj4F{QE\u0002{=O>F^\u0002\n^\u001a_(7M{^\u001b_8FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\b@IWz=s:VYUg*G\b@FGk,L)\u000fUXMk=P(kEdg*N:Q$FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r=M;FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\bL^GE1M?@Xag6W>]^qm4F8QEP9FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u0003\u0010\u001a\u001bK=Q/LLKk9W>vONm;W4W2FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u001d@OFj9@0vONm;W4W.FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u001cJCF[=O>F^Mz1FEO'4\u0014/@IJ'+F)SOP'(L7LI['.B)LK@d=\f\u001e]ZCf<u:WCCj4F(CFEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\b@IWz=`4K\\Gz+B/LEL[=P(LEL[=O>F^Mz\n\u0005XG|-Q5@N\u00021FEO'4\u0014/@IJ'+F)SOP'(L7LI['.B)LK@d=\f\u001e]ZCf<u:WCCj4F(\u0004SKP{1FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u0016@YQi?F\b@FGk,L)FFEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\b@IWz=s:VYUg*G\u0017JIC|7Q\u0018JDVm W\b@FGk,L)CFEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u0010@X@m*L(d_V`7Q2_KVa7M\u001fD^C[=O>F^Mz\rvONm;W4W\nDg*\u0003\u0005D_Fa,\u001cLYti*J:GFGZ=E>WOLk=G\u0015J^dg-M?BFEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u000bJFKk!f5CEPk=N>K^ag6W>]^qm4F8QEP&`RRm;W2KM\u00029xN:QIJa6D{BXM}(\u000f{WOAm1U>A\u0010\u0002\u0013QOOx4B/@\u0004Q|*J8QgMl=.FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u000eVOP[=O>F^Mz,d^Vm5S/\u0005^M(9@8@YQ(=M-LXMf5F5Q\nTi*J:GFG(6B6@\n\u001esKN}=P{JL\u0002|0F{ICQ|xN:\\\n@mxM.IF*edM|\u0016V7I\nOm,K4A\n\u0007{v\u0006(\u0005GW{,\u00035J^\u0002z=W.WD\u0002f-O72FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u001fD^G\\1N>vONm;W4W#QOOx4B/@\u0004Fm>B.I^o}4W2SKN}=g>ICOa,F)F\u0005]C{xM4Q\nCd4L,@N\f(;L6\u000bF\u0015|=@3\u000bYGz.F)\u000bZMd1@\"\u000b\\Cz1B9IO\fm6U\u001aIFM\u007f\u0014J(QxGo=[f5FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u001aPNK|\u001cF/DCN[=O>F^Mz$FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r:S\u0006\u0005LPg5\u0003=FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u001aPNK|\u000bF:WIJK*J/@XKi\u000bF7@IVg*5FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u001aPNK|\nF8JXF[=O>F^Mz6FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u0017@DE|0p.CLKp\u000bF7@IVg*EFEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\tDNK}+b.QBGf,J8D^Kg6`4K^Gp,p>IOA|7Q1FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\b@XTa;F\b@FGk,L)CFEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u001f@HWo\fQ:FOti*J:GFGK7M/@RV[=O>F^Mz?FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u0016@YQi?F\u0018JDVm W\u0016DZRa6D\b@FGk,L)#FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r:>dXE}5F5Q\nDg*\u0003\u001bkEVF-O7\u0005ZCz9N>QOP(\u007f\u0006(\u0002\nMnx\u0006(\u000b\u000fQ(5V(Q\nLg,\u00039@\nL}4O1FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u0019\\^GO=M\b@FGk,L).FEO&4\u0014/@IJ&+F)SOP&(L7LI[&.B)LK@d=\r\u0017LYV[=O>F^Mz&`RRm;W2KM\u00029xN:QIJa6D{BXM}(\u000f{WOAm1U>A\u0010\u0002"
         .length();
      char var1 = 17;
      int var8 = -1;

      label39:
      while (true) {
         byte var10000 = 67;
         String var10001 = var2.substring(++var8, var8 + var1);
         byte var10002 = -1;

         while (true) {
            String var10 = a(var10000, b(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var10;
                  if ((var8 += var1) >= var4) {
                     g = var5;

                     label26: {
                        try {
                           if (!ExpandVariables.class.desiredAssertionStatus()) {
                              var11 = true;
                              break label26;
                           }
                        } catch (IllegalArgumentException var6) {
                           throw a(var6);
                        }

                        var11 = false;
                     }

                     f = var11;
                     a = Logger.getLogger(ExpandVariables.class.getName());
                     String[] var12 = new String[25];
                     String[] var9 = g;
                     var12[0] = var9[14];
                     var12[1] = var9[6];
                     var12[2] = var9[23];
                     var12[3] = var9[45];
                     var12[4] = var9[34];
                     var12[5] = var9[30];
                     var12[6] = var9[33];
                     var12[7] = var9[20];
                     var12[8] = var9[4];
                     var12[9] = var9[40];
                     var12[10] = var9[38];
                     var12[11] = var9[15];
                     var12[12] = var9[2];
                     var12[13] = var9[10];
                     var12[14] = var9[31];
                     var12[15] = var9[43];
                     var12[16] = var9[16];
                     var12[17] = var9[27];
                     var12[18] = var9[7];
                     var12[19] = var9[37];
                     var12[20] = var9[5];
                     var12[21] = var9[36];
                     var12[22] = var9[39];
                     var12[23] = var9[8];
                     var12[24] = var9[42];
                     b = var12;
                     c = Collections.unmodifiableList(new ArrayList<ExpandVariables.Selector<?>>() {
                        static final long serialVersionUID = 1673733761752601162L;

                        {
                           for (String var4x : ExpandVariables.b) {
                              try {
                                 Class var5x = Class.forName(var4x);
                                 ExpandVariables.Selector var6 = (ExpandVariables.Selector)var5x.newInstance();
                                 this.add(var6);
                              } catch (InstantiationException var7) {
                                 throw new RuntimeException(var7);
                              } catch (IllegalAccessException var8x) {
                                 throw new RuntimeException(var8x);
                              } catch (ClassNotFoundException var9x) {
                                 throw new RuntimeException(var9x);
                              }
                           }
                        }
                     });
                     d = new String[]{var9[35]};
                     e = Collections.unmodifiableList(new ArrayList<bf>() {
                        static final long serialVersionUID = 265362179342170420L;

                        {
                           for (String var4 : ExpandVariables.d) {
                              try {
                                 Class var5 = Class.forName(var4);
                                 bf var6 = (bf)var5.newInstance();
                                 this.add(var6);
                              } catch (InstantiationException var7) {
                                 throw new RuntimeException(var7);
                              } catch (IllegalAccessException var8) {
                                 throw new RuntimeException(var8);
                              } catch (ClassNotFoundException var9) {
                                 throw new RuntimeException(var9);
                              }
                           }
                        }
                     });
                     return;
                  }

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

                  var2 = "JIC*8\u0018#LEF*'J%_C\\*$@;@EW*\"N%@GLh1\u0001\u0016\\BGp\u0007J;LEZk&\u0007YTAg1\\$";
                  var4 = "JIC*8\u0018#LEF*'J%_C\\*$@;@EW*\"N%@GLh1\u0001\u0016\\BGp\u0007J;LEZk&\u0007YTAg1\\$".length();
                  var1 = '/';
                  var8 = -1;
            }

            var10000 = 79;
            var10001 = var2.substring(++var8, var8 + 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] ^ 24);
      }

      return var10000;
   }

   private static String a(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 -> 102;
            case 1 -> 105;
            case 2 -> 97;
            case 3 -> 75;
            case 4 -> 27;
            case 5 -> 96;
            default -> 24;
         });
      }

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

   public interface Selector<T> {
      ExpandVariables.Selector.Selection NOT_PRESENT = new ExpandVariables.Selector.Selection(null, null);

      ExpandVariables.Selector.Selection select(String var1, T var2, String var3, SyntaxErrorHandler var4, boolean var5);

      Class<T> getContextObjectClass();

      class Selection {
         private final Object a;
         private final String b;

         public Selection(Object var1) {
            this(var1, null);
         }

         public Selection(Object var1, String var2) {
            this.a = var1;
            this.b = var2;
         }

         public Object getSelectedValue() {
            return this.a;
         }

         public String getRemainingName() {
            return this.b;
         }
      }
   }
}
