package com.l7tech.objectmodel;

import com.l7tech.objectmodel.imp.NamedEntityImp;
import com.l7tech.policy.variable.DataType;
import java.io.ObjectStreamException;
import java.io.Serializable;
import java.text.MessageFormat;
import java.util.HashMap;
import java.util.Map;

public class AttributeHeader extends NamedEntityImp implements Serializable {
   private static final Map<String, AttributeHeader> nameCache;
   public static final AttributeHeader ID;
   public static final AttributeHeader PROVIDER_GOID;
   public static final AttributeHeader NAME;
   public static final AttributeHeader SUBJECT_DN;
   public static final AttributeHeader EMAIL;
   public static final AttributeHeader LOGIN;
   public static final AttributeHeader FIRST_NAME;
   public static final AttributeHeader LAST_NAME;
   public static final AttributeHeader DEPARTMENT;
   public static final AttributeHeader DESCRIPTION;
   private String variableName;
   private String description;
   private DataType type;
   private UsersOrGroups usersOrGroups;
   private final AttributeHeader.Builtin builtin;
   static final long serialVersionUID = -3442169554678558539L;
   private static final String[] b;

   public AttributeHeader() {
      this.builtin = AttributeHeader.Builtin.CUSTOM;
   }

   public AttributeHeader(String var1, String var2, DataType var3, UsersOrGroups var4) {
      this(var1, var2, var3, var4, AttributeHeader.Builtin.CUSTOM);
   }

   public AttributeHeader(String var1, String var2, DataType var3, UsersOrGroups var4, AttributeHeader.Builtin var5) {
      if (nameCache.get(var1) != null) {
         throw new IllegalArgumentException(MessageFormat.format(b[7], var1));
      }

      this.variableName = var1;
      this._name = var2;
      this.type = var3;
      this.usersOrGroups = var4;
      this.builtin = var5;
      nameCache.put(var1, this);
   }

   public String getVariableName() {
      return this.variableName;
   }

   public void setVariableName(String var1) {
      try {
         if (this.builtin == AttributeHeader.Builtin.BUILTIN) {
            throw new UnsupportedOperationException(b[8]);
         }
      } catch (IllegalArgumentException var2) {
         throw a(var2);
      }

      this.variableName = var1;
   }

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

   public void setDescription(String var1) {
      try {
         if (this.builtin == AttributeHeader.Builtin.BUILTIN) {
            throw new UnsupportedOperationException(b[8]);
         }
      } catch (IllegalArgumentException var2) {
         throw a(var2);
      }

      this.description = var1;
   }

   public DataType getType() {
      return this.type;
   }

   public void setType(DataType var1) {
      try {
         if (this.builtin == AttributeHeader.Builtin.BUILTIN) {
            throw new UnsupportedOperationException(b[8]);
         }
      } catch (IllegalArgumentException var2) {
         throw a(var2);
      }

      this.type = var1;
   }

   public UsersOrGroups getUsersOrGroups() {
      return this.usersOrGroups;
   }

   public void setUsersOrGroups(UsersOrGroups var1) {
      try {
         if (this.builtin == AttributeHeader.Builtin.BUILTIN) {
            throw new UnsupportedOperationException(b[22]);
         }
      } catch (IllegalArgumentException var2) {
         throw a(var2);
      }

      this.usersOrGroups = var1;
   }

   public boolean isBuiltin() {
      try {
         if (this.builtin == AttributeHeader.Builtin.BUILTIN) {
            return true;
         }
      } catch (IllegalArgumentException var1) {
         throw a(var1);
      }

      return false;
   }

   @Override
   public boolean equals(Object 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: if_acmpne 0b
      // 05: bipush 1
      // 06: ireturn
      // 07: invokestatic com/l7tech/objectmodel/AttributeHeader.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0a: athrow
      // 0b: aload 1
      // 0c: ifnull 21
      // 0f: aload 0
      // 10: invokevirtual java/lang/Object.getClass ()Ljava/lang/Class;
      // 13: aload 1
      // 14: invokevirtual java/lang/Object.getClass ()Ljava/lang/Class;
      // 17: if_acmpeq 27
      // 1a: goto 21
      // 1d: invokestatic com/l7tech/objectmodel/AttributeHeader.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 20: athrow
      // 21: bipush 0
      // 22: ireturn
      // 23: invokestatic com/l7tech/objectmodel/AttributeHeader.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 26: athrow
      // 27: aload 0
      // 28: aload 1
      // 29: invokespecial com/l7tech/objectmodel/imp/NamedEntityImp.equals (Ljava/lang/Object;)Z
      // 2c: ifne 35
      // 2f: bipush 0
      // 30: ireturn
      // 31: invokestatic com/l7tech/objectmodel/AttributeHeader.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 34: athrow
      // 35: aload 1
      // 36: checkcast com/l7tech/objectmodel/AttributeHeader
      // 39: astore 2
      // 3a: aload 0
      // 3b: getfield com/l7tech/objectmodel/AttributeHeader.builtin Lcom/l7tech/objectmodel/AttributeHeader$Builtin;
      // 3e: aload 2
      // 3f: getfield com/l7tech/objectmodel/AttributeHeader.builtin Lcom/l7tech/objectmodel/AttributeHeader$Builtin;
      // 42: if_acmpeq 4b
      // 45: bipush 0
      // 46: ireturn
      // 47: invokestatic com/l7tech/objectmodel/AttributeHeader.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 4a: athrow
      // 4b: aload 0
      // 4c: getfield com/l7tech/objectmodel/AttributeHeader.description Ljava/lang/String;
      // 4f: ifnull 6e
      // 52: aload 0
      // 53: getfield com/l7tech/objectmodel/AttributeHeader.description Ljava/lang/String;
      // 56: aload 2
      // 57: getfield com/l7tech/objectmodel/AttributeHeader.description Ljava/lang/String;
      // 5a: invokevirtual java/lang/String.equals (Ljava/lang/Object;)Z
      // 5d: ifne 7b
      // 60: goto 67
      // 63: invokestatic com/l7tech/objectmodel/AttributeHeader.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 66: athrow
      // 67: goto 75
      // 6a: invokestatic com/l7tech/objectmodel/AttributeHeader.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 6d: athrow
      // 6e: aload 2
      // 6f: getfield com/l7tech/objectmodel/AttributeHeader.description Ljava/lang/String;
      // 72: ifnull 7b
      // 75: bipush 0
      // 76: ireturn
      // 77: invokestatic com/l7tech/objectmodel/AttributeHeader.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 7a: athrow
      // 7b: aload 0
      // 7c: getfield com/l7tech/objectmodel/AttributeHeader.type Lcom/l7tech/policy/variable/DataType;
      // 7f: ifnull 9e
      // 82: aload 0
      // 83: getfield com/l7tech/objectmodel/AttributeHeader.type Lcom/l7tech/policy/variable/DataType;
      // 86: aload 2
      // 87: getfield com/l7tech/objectmodel/AttributeHeader.type Lcom/l7tech/policy/variable/DataType;
      // 8a: invokevirtual java/lang/Object.equals (Ljava/lang/Object;)Z
      // 8d: ifne ab
      // 90: goto 97
      // 93: invokestatic com/l7tech/objectmodel/AttributeHeader.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 96: athrow
      // 97: goto a5
      // 9a: invokestatic com/l7tech/objectmodel/AttributeHeader.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 9d: athrow
      // 9e: aload 2
      // 9f: getfield com/l7tech/objectmodel/AttributeHeader.type Lcom/l7tech/policy/variable/DataType;
      // a2: ifnull ab
      // a5: bipush 0
      // a6: ireturn
      // a7: invokestatic com/l7tech/objectmodel/AttributeHeader.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // aa: athrow
      // ab: aload 0
      // ac: getfield com/l7tech/objectmodel/AttributeHeader.usersOrGroups Lcom/l7tech/objectmodel/UsersOrGroups;
      // af: aload 2
      // b0: getfield com/l7tech/objectmodel/AttributeHeader.usersOrGroups Lcom/l7tech/objectmodel/UsersOrGroups;
      // b3: if_acmpeq bc
      // b6: bipush 0
      // b7: ireturn
      // b8: invokestatic com/l7tech/objectmodel/AttributeHeader.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // bb: athrow
      // bc: aload 0
      // bd: getfield com/l7tech/objectmodel/AttributeHeader.variableName Ljava/lang/String;
      // c0: ifnull df
      // c3: aload 0
      // c4: getfield com/l7tech/objectmodel/AttributeHeader.variableName Ljava/lang/String;
      // c7: aload 2
      // c8: getfield com/l7tech/objectmodel/AttributeHeader.variableName Ljava/lang/String;
      // cb: invokevirtual java/lang/String.equals (Ljava/lang/Object;)Z
      // ce: ifne ec
      // d1: goto d8
      // d4: invokestatic com/l7tech/objectmodel/AttributeHeader.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // d7: athrow
      // d8: goto e6
      // db: invokestatic com/l7tech/objectmodel/AttributeHeader.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // de: athrow
      // df: aload 2
      // e0: getfield com/l7tech/objectmodel/AttributeHeader.variableName Ljava/lang/String;
      // e3: ifnull ec
      // e6: bipush 0
      // e7: ireturn
      // e8: invokestatic com/l7tech/objectmodel/AttributeHeader.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // eb: athrow
      // ec: bipush 1
      // ed: ireturn
      // try (0 -> 5): 5 java/lang/IllegalArgumentException
      // try (7 -> 14): 15 java/lang/IllegalArgumentException
      // try (9 -> 19): 19 java/lang/IllegalArgumentException
      // try (21 -> 27): 27 java/lang/IllegalArgumentException
      // try (32 -> 39): 39 java/lang/IllegalArgumentException
      // try (41 -> 50): 51 java/lang/IllegalArgumentException
      // try (44 -> 54): 54 java/lang/IllegalArgumentException
      // try (56 -> 61): 61 java/lang/IllegalArgumentException
      // try (63 -> 72): 73 java/lang/IllegalArgumentException
      // try (66 -> 76): 76 java/lang/IllegalArgumentException
      // try (78 -> 83): 83 java/lang/IllegalArgumentException
      // try (85 -> 92): 92 java/lang/IllegalArgumentException
      // try (94 -> 103): 104 java/lang/IllegalArgumentException
      // try (97 -> 107): 107 java/lang/IllegalArgumentException
      // try (109 -> 114): 114 java/lang/IllegalArgumentException
   }

   @Override
   public int hashCode() {
      int var1 = super.hashCode();

      int var10000;
      int var10001;
      label73: {
         try {
            var10000 = 31 * var1;
            if (this.variableName != null) {
               var10001 = this.variableName.hashCode();
               break label73;
            }
         } catch (IllegalArgumentException var6) {
            throw a(var6);
         }

         var10001 = 0;
      }

      var1 = var10000 + var10001;

      label65: {
         try {
            var10000 = 31 * var1;
            if (this.description != null) {
               var10001 = this.description.hashCode();
               break label65;
            }
         } catch (IllegalArgumentException var5) {
            throw a(var5);
         }

         var10001 = 0;
      }

      var1 = var10000 + var10001;

      label57: {
         try {
            var10000 = 31 * var1;
            if (this.type != null) {
               var10001 = this.type.hashCode();
               break label57;
            }
         } catch (IllegalArgumentException var4) {
            throw a(var4);
         }

         var10001 = 0;
      }

      var1 = var10000 + var10001;

      label49: {
         try {
            var10000 = 31 * var1;
            if (this.usersOrGroups != null) {
               var10001 = this.usersOrGroups.hashCode();
               break label49;
            }
         } catch (IllegalArgumentException var3) {
            throw a(var3);
         }

         var10001 = 0;
      }

      var1 = var10000 + var10001;

      try {
         var10000 = 31 * var1;
         if (this.builtin != null) {
            return var10000 + this.builtin.hashCode();
         }
      } catch (IllegalArgumentException var2) {
         throw a(var2);
      }

      return var10000 + 0;
   }

   protected Object readResolve() throws ObjectStreamException {
      Object var1 = nameCache.get(this._name);

      try {
         return var1 != null ? var1 : this;
      } catch (ObjectStreamException var2) {
         throw a(var2);
      }
   }

   public static AttributeHeader forName(String var0) {
      return nameCache.get(var0);
   }

   @Override
   public String toString() {
      try {
         if (this._name == null) {
            return this.variableName;
         }
      } catch (IllegalArgumentException var1) {
         throw a(var1);
      }

      return this._name;
   }

   static {
      String[] var5 = new String[23];
      int var3 = 0;
      String var2 = "1)A%OT\u001e3\u0012J\n%>^2TD\u0016$5Z\u0005-4I:H\u0016\b?K=RY\u000f8{~!IF\u0012%>\\sa\u007f2\u0005\u0004/:C6\u000b\u00024C>I^[\u000f:C6\u0002(?O53KsPQ\t(:L?C\u0010\u0015 6Ks]\u0000\u0006a2]sG\\\t$:J*\u0006Y\u0015a.]6\u001d\u0010\r )G2D\\\u001ea5O>CC[,.]'\u0006R\u001ea<B<DQ\u0017-\"\u000e&HY\n4>2\u0002:@tR\u0010\b$/\u000e#T_\u000b$)Z:CC[.5\u000e1SY\u00175vG=\u0006Q\u000f5)G1SD\u001ea3K2BU\t2\t'2\\ R~\u001a,>\n\u0005>^2TD\u0016$5Z\u000b%>]0TY\u000b52A=\u000b\u0005>]0TY\u000b52A=\t\r:]'\u0006~\u001a,>\t2.L9CS\u000f\u00055\n\u00072\\ R\u00105 6K\u0010\u0019u\u001bc\u0016\u0010(49D6ED[\u0005\u0015\n\u0014(K!\u0006|\u0014&2@\b-:]'hQ\u0016$\u0005$6O:J\u000e\u0004vC2O\\[\u0000?J!CC\b";
      int var4 = "1)A%OT\u001e3\u0012J\n%>^2TD\u0016$5Z\u0005-4I:H\u0016\b?K=RY\u000f8{~!IF\u0012%>\\sa\u007f2\u0005\u0004/:C6\u000b\u00024C>I^[\u000f:C6\u0002(?O53KsPQ\t(:L?C\u0010\u0015 6Ks]\u0000\u0006a2]sG\\\t$:J*\u0006Y\u0015a.]6\u001d\u0010\r )G2D\\\u001ea5O>CC[,.]'\u0006R\u001ea<B<DQ\u0017-\"\u000e&HY\n4>2\u0002:@tR\u0010\b$/\u000e#T_\u000b$)Z:CC[.5\u000e1SY\u00175vG=\u0006Q\u000f5)G1SD\u001ea3K2BU\t2\t'2\\ R~\u001a,>\n\u0005>^2TD\u0016$5Z\u000b%>]0TY\u000b52A=\u000b\u0005>]0TY\u000b52A=\t\r:]'\u0006~\u001a,>\t2.L9CS\u000f\u00055\n\u00072\\ R\u00105 6K\u0010\u0019u\u001bc\u0016\u0010(49D6ED[\u0005\u0015\n\u0014(K!\u0006|\u0014&2@\b-:]'hQ\u0016$\u0005$6O:J\u000e\u0004vC2O\\[\u0000?J!CC\b"
         .length();
      char var1 = '\n';
      int var7 = -1;

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

         while (true) {
            String var9 = b(var10000, b(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var9;
                  if ((var7 += var1) >= var4) {
                     b = var5;
                     nameCache = new HashMap<>();
                     String[] var8 = b;
                     ID = new AttributeHeader(var8[6], var8[21], DataType.STRING, UsersOrGroups.BOTH, AttributeHeader.Builtin.BUILTIN);
                     PROVIDER_GOID = new AttributeHeader(var8[0], var8[3], DataType.INTEGER, UsersOrGroups.BOTH, AttributeHeader.Builtin.BUILTIN);
                     NAME = new AttributeHeader(var8[4], var8[5], DataType.STRING, UsersOrGroups.BOTH, AttributeHeader.Builtin.BUILTIN);
                     SUBJECT_DN = new AttributeHeader(var8[14], var8[16], DataType.STRING, UsersOrGroups.BOTH, AttributeHeader.Builtin.BUILTIN);
                     EMAIL = new AttributeHeader(var8[19], var8[20], DataType.STRING, UsersOrGroups.USERS, AttributeHeader.Builtin.BUILTIN);
                     LOGIN = new AttributeHeader(var8[2], var8[17], DataType.STRING, UsersOrGroups.USERS, AttributeHeader.Builtin.BUILTIN);
                     FIRST_NAME = new AttributeHeader(var8[9], var8[15], DataType.STRING, UsersOrGroups.USERS, AttributeHeader.Builtin.BUILTIN);
                     LAST_NAME = new AttributeHeader(var8[18], var8[13], DataType.STRING, UsersOrGroups.USERS, AttributeHeader.Builtin.BUILTIN);
                     DEPARTMENT = new AttributeHeader(var8[1], var8[10], DataType.STRING, UsersOrGroups.USERS, AttributeHeader.Builtin.BUILTIN);
                     DESCRIPTION = new AttributeHeader(var8[11], var8[12], DataType.STRING, UsersOrGroups.GROUPS, AttributeHeader.Builtin.BUILTIN);
                     return;
                  }

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

                  var2 = "8\u0019k\u000e\u007fyw$32.\u0016lX~<$\b\u0003\"\u000fxs'\b\u0005v\u0016oow\u0002\u0019\"\u001d\u007fu;\u0019Zk\u0011*}#\u0019\u0005k\u001d\u007fh2M\u001fg\u001eny%\u001e";
                  var4 = "8\u0019k\u000e\u007fyw$32.\u0016lX~<$\b\u0003\"\u000fxs'\b\u0005v\u0016oow\u0002\u0019\"\u001d\u007fu;\u0019Zk\u0011*}#\u0019\u0005k\u001d\u007fh2M\u001fg\u001eny%\u001e"
                     .length();
                  var1 = '\t';
                  var7 = -1;
            }

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

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

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

      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 -> 21;
            case 1 -> 15;
            case 2 -> 122;
            case 3 -> 7;
            case 4 -> 114;
            case 5 -> 100;
            default -> 47;
         });
      }

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

   public enum Builtin {
      BUILTIN,
      CUSTOM;

      // $VF: Failed to inline enum fields
      // 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!)
      static {
         String[] var0 = new String[2];
         int var4 = 0;
         String var3 = "l\u0006!!it\u0007m\u0006;9rp\u001a";
         int var5 = "l\u0006!!it\u0007m\u0006;9rp\u001a".length();
         char var2 = 6;
         int var1 = -1;

         while (true) {
            String var10002 = a(112, a(var3.substring(++var1, var1 + var2)));
            byte var10001 = -1;
            var0[var4++] = var10002;
            if ((var1 += var2) >= var5) {
               BUILTIN = new AttributeHeader.Builtin();
               CUSTOM = new AttributeHeader.Builtin();
               return;
            }

            var2 = var3.charAt(var1);
         }
      }

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

         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 -> 95;
               case 1 -> 35;
               case 2 -> 2;
               case 3 -> 5;
               case 4 -> 86;
               case 5 -> 73;
               default -> 36;
            });
         }

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