package com.l7tech.policy.code.config;

import com.l7tech.policy.assertion.ext.Category;
import java.util.HashMap;
import java.util.Map;

public enum AssertionCategory {
   ACCESS_CONTROL,
   TRANSPORT_LAYER_SECURITY,
   XML_SECURITY,
   MESSAGE_VALIDATION_TRANSFORMATION,
   MESSAGE_ROUTING,
   SERVICE_AVAILABILITY,
   LOGGING_AUDITING_ALERTS,
   POLICY_LOGIC,
   THREAT_PROTECTION,
   INTERNAL_ASSERTIONS,
   CUSTOM_ASSERTIONS;

   private final String id;
   private final String displayName;
   private final Category[] categories;
   private static final Map<String, AssertionCategory> VALUE_MAP;
   private static final Map<Category, AssertionCategory> VALUE2_MAP;

   AssertionCategory(String var3, String var4, Category... var5) {
      this.id = var3;
      this.displayName = var4;
      this.categories = var5;
   }

   public String getId() {
      return this.id;
   }

   public String getDisplayName() {
      return this.displayName;
   }

   public Category[] getCategories() {
      return this.categories;
   }

   public static AssertionCategory fromId(String var0) {
      return VALUE_MAP.get(var0);
   }

   public static AssertionCategory fromCategory(Category var0) {
      return VALUE2_MAP.get(var0);
   }

   // $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[33];
      int var4 = 0;
      String var3 = "^fnD\tB\u0003sYK\u0010#\u001eRYC\n)W\u000ft_\u0002(;^\u0005t\u000bq\u00019R\u0012o_[Drs,U\u0002\u0010rCP\u0001;S0tDV\u00019S\tiE\u0018Ryc*\tw/T\u007f}(\u001b~%Ttq!\u0019r2O\u007f{\u0003~FN\f^fn;\tb#Syk0\u0003\u0013Oev!\bi!Jtc7\tb2Rbm*\t\u000eGha!\tt?Edl0\bh,\u0014Unp2\u0013d%Yjt%\u0013k!Dbn-\u000e~\u0013OEV\u0001(I\u0001j\u000bc\u0017)B\u0012rBM\n)!KNQ\u0017;@\u0005&}C\b3C\u0001rBM\nus\u0012gEQ\u00025U\rg_K\u000b4\u0017Jde#\u0013i'Yjw \u0013s)Hl}%\u0016b2Rx\u0012oEV\u0001(I\u0001jjQ\u0017?U\u0014oDL\u0017\u000eGHA\u0001)T@EDL\u0010(H\f\u0016rYC\n)W\u000ft_n\u0005#B\u0012UNA\u0011(N\u0014\u007f\u0007tDW\u00103I\u0007\rgHA\u0001)T#iEV\u00165K\u0011Rcp!\u001bs?Vym0\u001fd4Odl!Knq7\u001b`%Y}c(\u0013c!Rbm*\u0005s2Geq\"\u0015u-G\u007fk+\u0014\u0011RCP\u0001;S@VYM\u0010?D\u0014oDL\u0017JDE\u00033I\u0007&jW\u00003S\thL\u0002%6B\u0012rX\fVdn-\u0019~?Jde-\u0019\u0011E~q0\u0015j?Gxq!\bs)Ieq\u000fKNQ\u0017;@\u0005&yM\u0011.N\u000ea\u0004kBQ\u0007\u000b~FN7?D\u0015tBV\u001d\fVDN\r9^@JDE\r9\u000bvDN\r9^,iLK\u0007\u000fKnq7\u001b`%Yym1\u000en.A\u0010e^Q\u00105J!uXG\u0016.N\u000fhX\u0005g^F\r.";
      int var5 = "^fnD\tB\u0003sYK\u0010#\u001eRYC\n)W\u000ft_\u0002(;^\u0005t\u000bq\u00019R\u0012o_[Drs,U\u0002\u0010rCP\u0001;S0tDV\u00019S\tiE\u0018Ryc*\tw/T\u007f}(\u001b~%Ttq!\u0019r2O\u007f{\u0003~FN\f^fn;\tb#Syk0\u0003\u0013Oev!\bi!Jtc7\tb2Rbm*\t\u000eGha!\tt?Edl0\bh,\u0014Unp2\u0013d%Yjt%\u0013k!Dbn-\u000e~\u0013OEV\u0001(I\u0001j\u000bc\u0017)B\u0012rBM\n)!KNQ\u0017;@\u0005&}C\b3C\u0001rBM\nus\u0012gEQ\u00025U\rg_K\u000b4\u0017Jde#\u0013i'Yjw \u0013s)Hl}%\u0016b2Rx\u0012oEV\u0001(I\u0001jjQ\u0017?U\u0014oDL\u0017\u000eGHA\u0001)T@EDL\u0010(H\f\u0016rYC\n)W\u000ft_n\u0005#B\u0012UNA\u0011(N\u0014\u007f\u0007tDW\u00103I\u0007\rgHA\u0001)T#iEV\u00165K\u0011Rcp!\u001bs?Vym0\u001fd4Odl!Knq7\u001b`%Y}c(\u0013c!Rbm*\u0005s2Geq\"\u0015u-G\u007fk+\u0014\u0011RCP\u0001;S@VYM\u0010?D\u0014oDL\u0017JDE\u00033I\u0007&jW\u00003S\thL\u0002%6B\u0012rX\fVdn-\u0019~?Jde-\u0019\u0011E~q0\u0015j?Gxq!\bs)Ieq\u000fKNQ\u0017;@\u0005&yM\u0011.N\u000ea\u0004kBQ\u0007\u000b~FN7?D\u0015tBV\u001d\fVDN\r9^@JDE\r9\u000bvDN\r9^,iLK\u0007\u000fKnq7\u001b`%Yym1\u000en.A\u0010e^Q\u00105J!uXG\u0016.N\u000fhX\u0005g^F\r."
         .length();
      char var2 = '\f';
      int var15 = -1;

      label41:
      while (true) {
         byte var10000 = 101;
         String var10001 = var3.substring(++var15, var15 + var2);
         byte var10002 = -1;

         while (true) {
            String var16 = a(var10000, a(var10001));
            switch (var10002) {
               case 0:
                  var0[var4++] = var16;
                  if ((var15 += var2) >= var5) {
                     ACCESS_CONTROL = new AssertionCategory(var0[16], var0[13], Category.ACCESS_CONTROL);
                     TRANSPORT_LAYER_SECURITY = new AssertionCategory(var0[14], var0[1], Category.TRANSPORT_SEC);
                     XML_SECURITY = new AssertionCategory(var0[25], var0[0], Category.XML_SEC);
                     MESSAGE_VALIDATION_TRANSFORMATION = new AssertionCategory(var0[4], var0[10], Category.MESSAGE, Category.MSG_VAL_XSLT);
                     MESSAGE_ROUTING = new AssertionCategory(var0[15], var0[23], Category.ROUTING);
                     SERVICE_AVAILABILITY = new AssertionCategory(var0[24], var0[32], Category.AVAILABILITY);
                     LOGGING_AUDITING_ALERTS = new AssertionCategory(var0[30], var0[20], Category.AUDIT_ALERT);
                     POLICY_LOGIC = new AssertionCategory(var0[27], var0[26], Category.LOGIC);
                     THREAT_PROTECTION = new AssertionCategory(var0[2], var0[19], Category.THREAT_PROT);
                     INTERNAL_ASSERTIONS = new AssertionCategory(var0[12], var0[9]);
                     CUSTOM_ASSERTIONS = new AssertionCategory(var0[29], var0[31], Category.CUSTOM_ASSERTIONS);
                     VALUE_MAP = new HashMap<>();
                     VALUE2_MAP = new HashMap<>();

                     for (AssertionCategory var9 : values()) {
                        VALUE_MAP.put(var9.getId(), var9);

                        for (Category var13 : var9.getCategories()) {
                           VALUE2_MAP.put(var13, var9);
                        }
                     }

                     return;
                  }

                  var2 = var3.charAt(var15);
                  break;
               default:
                  var0[var4++] = var16;
                  if ((var15 += var2) < var5) {
                     var2 = var3.charAt(var15);
                     continue label41;
                  }

                  var3 = "zan/\nu\u007fxgn>\u0017l6Vzn\u0014jqo-\f{:\u0019Uk:\ft>[}q2\u0011a";
                  var5 = "zan/\nu\u007fxgn>\u0017l6Vzn\u0014jqo-\f{:\u0019Uk:\ft>[}q2\u0011a".length();
                  var2 = 17;
                  var15 = -1;
            }

            var10000 = 90;
            var10001 = var3.substring(++var15, var15 + var2);
            var10002 = 0;
         }
      }
   }

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

      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 -> 99;
            case 1 -> 78;
            case 2 -> 71;
            case 3 -> 1;
            case 4 -> 63;
            case 5 -> 66;
            default -> 5;
         });
      }

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