package com.l7tech.gateway.common.custom;

import com.l7tech.policy.assertion.CustomAssertionHolder;
import com.l7tech.policy.assertion.ext.Category;
import com.l7tech.policy.assertion.ext.CustomAssertion;
import com.l7tech.policy.assertion.ext.ServiceInvocation;
import com.l7tech.policy.assertion.ext.cei.CustomExtensionInterfaceBinding;
import com.l7tech.policy.assertion.ext.entity.CustomEntitySerializer;
import com.l7tech.util.DeserializeSafe;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;

@DeserializeSafe
public class CustomAssertionDescriptor {
   private final Class a;
   private final Class b;
   private final String c;
   private final Set<Category> d;
   private final String e;
   private Class f;
   private Class g;
   private String h;
   private String i;
   private String j;
   private String k;
   private boolean l;
   private String[] m = new String[0];
   private Set<String> n = new HashSet<>();
   private Class<? extends CustomExtensionInterfaceBinding> o;
   private Collection<Class<? extends CustomEntitySerializer>> p = new ArrayList<>();
   private String q;
   private static final String[] r;

   public CustomAssertionDescriptor(String var1, Class var2, Class var3, Set<Category> var4) {
      this.c = var1;
      this.a = var2;
      this.d = var4;
      this.e = CustomAssertionHolder.friendlyPrintCategories(this.d);
      if (!CustomAssertion.class.isAssignableFrom(var2)) {
         String var10002 = String.valueOf(var2);
         String[] var5 = r;
         throw new IllegalArgumentException(var5[4] + var10002);
      }

      try {
         this.b = var3;
         if (!ServiceInvocation.class.isAssignableFrom(var3)) {
            throw new IllegalArgumentException(r[6] + var3);
         }
      } catch (IllegalArgumentException var6) {
         throw a(var6);
      }
   }

   public String getName() {
      return this.c;
   }

   public String getModuleFileName() {
      return this.h;
   }

   public String getDescription() {
      return this.i;
   }

   public String getPaletteNodeName() {
      return this.j;
   }

   public String getPolicyNodeName() {
      return this.k;
   }

   public boolean getIsUiAutoOpen() {
      return this.l;
   }

   public String[] getUiAllowedPackages() {
      return this.m;
   }

   public Set<String> getUiAllowedResources() {
      return this.n;
   }

   public Class getAssertion() {
      return this.a;
   }

   public Class getServerAssertion() {
      return this.b;
   }

   public Set<Category> getCategories() {
      return this.d;
   }

   public boolean hasCategory(Category var1) {
      return this.d.contains(var1);
   }

   public Class getUiClass() {
      return this.f;
   }

   public Class getTakActionUiClass() {
      return this.g;
   }

   public Class<? extends CustomExtensionInterfaceBinding> getExtensionInterfaceClass() {
      return this.o;
   }

   public Collection<Class<? extends CustomEntitySerializer>> getExternalEntitySerializers() {
      return Collections.unmodifiableCollection(this.p);
   }

   @Override
   public String toString() {
      String var10000 = this.c;
      String var10001 = this.e;
      String var10002 = this.a(this.a);
      String var10003 = this.a(this.b);
      String var10004 = this.a(this.f);
      String var1 = super.toString();
      String var2 = var10004;
      String var3 = var10003;
      String var4 = var10002;
      String var5 = var10001;
      String var6 = var10000;
      String[] var7 = r;
      return var7[5] + var6 + var7[9] + var5 + var7[3] + var4 + var7[1] + var3 + var7[2] + var2 + "]" + var1;
   }

   private String a(Class var1) {
      try {
         if (var1 != null) {
            return var1.getName();
         }
      } catch (IllegalArgumentException var2) {
         throw a(var2);
      }

      return r[7];
   }

   public void setUiClass(Class 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: aload 1
      // 02: putfield com/l7tech/gateway/common/custom/CustomAssertionDescriptor.f Ljava/lang/Class;
      // 05: aload 1
      // 06: ifnull 34
      // 09: ldc com/l7tech/policy/assertion/ext/CustomAssertionUI
      // 0b: aload 1
      // 0c: invokevirtual java/lang/Class.isAssignableFrom (Ljava/lang/Class;)Z
      // 0f: ifne 34
      // 12: goto 19
      // 15: invokestatic com/l7tech/gateway/common/custom/CustomAssertionDescriptor.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 18: athrow
      // 19: new java/lang/IllegalArgumentException
      // 1c: dup
      // 1d: aload 1
      // 1e: invokestatic java/lang/String.valueOf (Ljava/lang/Object;)Ljava/lang/String;
      // 21: getstatic com/l7tech/gateway/common/custom/CustomAssertionDescriptor.r [Ljava/lang/String;
      // 24: bipush 0
      // 25: aaload
      // 26: swap
      // 27: 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" ]
      // 2c: invokespecial java/lang/IllegalArgumentException.<init> (Ljava/lang/String;)V
      // 2f: athrow
      // 30: invokestatic com/l7tech/gateway/common/custom/CustomAssertionDescriptor.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 33: athrow
      // 34: return
      // try (0 -> 9): 10 java/lang/IllegalArgumentException
      // try (5 -> 23): 23 java/lang/IllegalArgumentException
   }

   public void setTaskActionUiClass(Class 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: aload 1
      // 02: putfield com/l7tech/gateway/common/custom/CustomAssertionDescriptor.g Ljava/lang/Class;
      // 05: aload 1
      // 06: ifnull 35
      // 09: ldc com/l7tech/policy/assertion/ext/action/CustomTaskActionUI
      // 0b: aload 1
      // 0c: invokevirtual java/lang/Class.isAssignableFrom (Ljava/lang/Class;)Z
      // 0f: ifne 35
      // 12: goto 19
      // 15: invokestatic com/l7tech/gateway/common/custom/CustomAssertionDescriptor.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 18: athrow
      // 19: new java/lang/IllegalArgumentException
      // 1c: dup
      // 1d: aload 1
      // 1e: invokestatic java/lang/String.valueOf (Ljava/lang/Object;)Ljava/lang/String;
      // 21: getstatic com/l7tech/gateway/common/custom/CustomAssertionDescriptor.r [Ljava/lang/String;
      // 24: bipush 8
      // 26: aaload
      // 27: swap
      // 28: 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" ]
      // 2d: invokespecial java/lang/IllegalArgumentException.<init> (Ljava/lang/String;)V
      // 30: athrow
      // 31: invokestatic com/l7tech/gateway/common/custom/CustomAssertionDescriptor.a (Ljava/lang/IllegalArgumentException;)Ljava/lang/IllegalArgumentException;
      // 34: athrow
      // 35: return
      // try (0 -> 9): 10 java/lang/IllegalArgumentException
      // try (5 -> 23): 23 java/lang/IllegalArgumentException
   }

   public void setModuleFileName(String var1) {
      this.h = var1;
   }

   public void setDescription(String var1) {
      this.i = var1;
   }

   public void setPaletteNodeName(String var1) {
      this.j = var1;
   }

   public void setPolicyNodeName(String var1) {
      this.k = var1;
   }

   public void setUiAutoOpen(boolean var1) {
      this.l = var1;
   }

   public void setUiAllowedPackages(String var1) {
      if (var1 != null) {
         this.m = var1.split(",");
         int var2 = 0;

         try {
            while (var2 < this.m.length) {
               this.m[var2] = this.m[var2].replace('.', '/').trim();
               var2++;
            }
         } catch (IllegalArgumentException var3) {
            throw a(var3);
         }
      }
   }

   public void setUiAllowedResources(String var1) {
      if (var1 != null) {
         String[] var2 = var1.split(",");

         for (String var6 : var2) {
            this.n.add(var6.trim());
         }
      }
   }

   public void setExtensionInterfaceClass(Class<? extends CustomExtensionInterfaceBinding> var1) {
      this.o = var1;
   }

   public void setExternalEntitySerializers(Collection<Class<? extends CustomEntitySerializer>> var1) {
      try {
         if (var1 != null) {
            this.p = var1;
         }
      } catch (IllegalArgumentException var2) {
         throw a(var2);
      }
   }

   public String getModuleEntityName() {
      return this.q;
   }

   public void setModuleEntityName(String var1) {
      this.q = var1;
   }

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

   static {
      String[] var5 = new String[10];
      int var3 = 0;
      String var2 = "F0i@rJ\u001bb'sQoLRl: \u00128tsQoN^q\u0015sGxJOj;n\t\u000e8tePtLTq\u0017lUnK\u0006\f8taGn]Iw=oZ \nB'sQoLRl: \tXo Z|U^>s\u0011P1rBxJ\u001bb'sQoLRl: \u0004m!lX";
      int var4 = "F0i@rJ\u001bb'sQoLRl: \u00128tsQoN^q\u0015sGxJOj;n\t\u000e8tePtLTq\u0017lUnK\u0006\f8taGn]Iw=oZ \nB'sQoLRl: \tXo Z|U^>s\u0011P1rBxJ\u001bb'sQoLRl: \u0004m!lX"
         .length();
      char var1 = 17;
      int var7 = -1;

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

         while (true) {
            String var8 = a(var10000, a(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var8;
                  if ((var7 += var1) >= var4) {
                     r = var5;
                     return;
                  }

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

                  var2 = ";Y\u001f3Q\u00154\u001bQ\u00036Q\u0001\u001eO\u000eH\u0003L;\u0010 2\bW\u001e1\u0014'j";
                  var4 = ";Y\u001f3Q\u00154\u001bQ\u00036Q\u0001\u001eO\u000eH\u0003L;\u0010 2\bW\u001e1\u0014'j".length();
                  var1 = 15;
                  var7 = -1;
            }

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

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

      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 -> 49;
            case 2 -> 101;
            case 3 -> 81;
            case 4 -> 120;
            case 5 -> 93;
            default -> 94;
         });
      }

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