package com.l7tech.policy.assertion.xmlsec;

import com.l7tech.policy.assertion.AssertionMetadata;
import com.l7tech.policy.assertion.DefaultAssertionMetadata;
import com.l7tech.policy.assertion.MessageTargetableAssertion;
import com.l7tech.policy.wsp.Java5EnumTypeMapping;
import com.l7tech.policy.wsp.SimpleTypeMappingFinder;
import java.util.Arrays;

public class CancelSecurityContext extends MessageTargetableAssertion {
   public static final String ASSERTION_BASIC_NAME;
   private static final String META_INITIALIZED;
   private CancelSecurityContext.AuthorizationType requiredAuthorization = CancelSecurityContext.AuthorizationType.TOKEN;
   private boolean failIfNotExist = true;
   private boolean cancelInbound = true;
   private String outboundServiceUrl;
   static final long serialVersionUID = -4701738286097792425L;
   private static final String[] b;

   public boolean isCancelInbound() {
      return this.cancelInbound;
   }

   public void setCancelInbound(boolean var1) {
      this.cancelInbound = var1;
   }

   public CancelSecurityContext.AuthorizationType getRequiredAuthorization() {
      return this.requiredAuthorization;
   }

   public void setRequiredAuthorization(CancelSecurityContext.AuthorizationType var1) {
      this.requiredAuthorization = var1 == null ? CancelSecurityContext.AuthorizationType.TOKEN : var1;
   }

   public String getOutboundServiceUrl() {
      return this.outboundServiceUrl;
   }

   public void setOutboundServiceUrl(String var1) {
      this.outboundServiceUrl = var1;
   }

   public boolean isFailIfNotExist() {
      return this.failIfNotExist;
   }

   public void setFailIfNotExist(boolean var1) {
      this.failIfNotExist = var1;
   }

   @Override
   protected MessageTargetableAssertion.VariablesUsed doGetVariablesUsed() {
      return super.doGetVariablesUsed().withExpressions(this.outboundServiceUrl);
   }

   @Override
   public AssertionMetadata meta() {
      DefaultAssertionMetadata var1 = super.defaultMeta();
      if (Boolean.TRUE.equals(var1.get(META_INITIALIZED))) {
         return var1;
      }

      String[] var2 = b;
      var1.put(var2[11], var2[16]);
      var1.put(var2[2], var2[3]);
      var1.put(var2[7], new String[]{var2[12]});
      var1.put(var2[18], var2[10]);
      var1.put(var2[8], var2[4]);
      var1.put(var2[1], new g(this));
      var1.put(var2[6], var2[0]);
      var1.put(var2[5], var2[17]);
      var1.put(var2[15], new SimpleTypeMappingFinder(Arrays.asList(new Java5EnumTypeMapping(CancelSecurityContext.AuthorizationType.class, var2[9]))));
      var1.put(META_INITIALIZED, Boolean.TRUE);
      return var1;
   }

   static {
      String[] var5 = new String[19];
      int var3 = 0;
      String var2 = "lI\u0010>\u001c tjE\u0015>\u0013xn|I\u0011u^gaaC\u0011c^TaaE\u0018|#rczT\u0014d\tToaR\u0018h\u0004Gr`V\u0018b\u0004~e|b\u0014q\u001cxg\u0015\u007fI\u0011y\u0013nN`B\u0018^\u0011zeIG\u001ed\u001fey\u000bkC\u000es\u0002~p{O\u0012~RLG\u0013s\u0015{ n\u0006\u000eu\u0013brfR\u00040\u0013xn{C\u0005dPvs|I\u001ey\u0011cek\u0006\ny\u0004\u007f nH]\u007f\u0005cb`S\u0013t_~nmI\b~\u00147sjE\bb\u00157c`H\u000bu\u0002da{O\u0012~^\u0004nS\t\u007f\u0014\u007fT\u0012`\u0015etfC\u000eQ\u0013ci`H3q\u001dr\u0019\u007fT\u0012`\u0015etfC\u000eU\u0014~t`T>|\u0011dsaG\u0010u\u000e\u007fG\u0011u\u0004ceII\u0011t\u0015es\u0015\u007fI\u0011y\u0013nAkP\u0014s\u0015TlnU\u000e~\u0011ze\u0011nS\tx\u001feiuG\ty\u001fyTvV\u0018+lI\u0010?\u001c tjE\u0015?\u0013xn|I\u0011u_ee|I\bb\u0013rs B\u0014c\u0013xnaC\u001ed^pii\t|N\u0012b\u0004YabC\u000bwK\u0011C\u0015tu}O\ti\u0017LG\u0013s\u0015{ \\C\u001ee\u0002~tv\u0006>\u007f\u001ecewR\u0014!K\u0018d\u0011sa{G4~\u0019cinJ\u0014j\u0015s\u0010xU\rC\u0005utvV\u0018V\u0019ydjT\u0017LG\u0013s\u0015{ \\C\u001ee\u0002~tv\u0006>\u007f\u001ecewR";
      int var4 = "lI\u0010>\u001c tjE\u0015>\u0013xn|I\u0011u^gaaC\u0011c^TaaE\u0018|#rczT\u0014d\tToaR\u0018h\u0004Gr`V\u0018b\u0004~e|b\u0014q\u001cxg\u0015\u007fI\u0011y\u0013nN`B\u0018^\u0011zeIG\u001ed\u001fey\u000bkC\u000es\u0002~p{O\u0012~RLG\u0013s\u0015{ n\u0006\u000eu\u0013brfR\u00040\u0013xn{C\u0005dPvs|I\u001ey\u0011cek\u0006\ny\u0004\u007f nH]\u007f\u0005cb`S\u0013t_~nmI\b~\u00147sjE\bb\u00157c`H\u000bu\u0002da{O\u0012~^\u0004nS\t\u007f\u0014\u007fT\u0012`\u0015etfC\u000eQ\u0013ci`H3q\u001dr\u0019\u007fT\u0012`\u0015etfC\u000eU\u0014~t`T>|\u0011dsaG\u0010u\u000e\u007fG\u0011u\u0004ceII\u0011t\u0015es\u0015\u007fI\u0011y\u0013nAkP\u0014s\u0015TlnU\u000e~\u0011ze\u0011nS\tx\u001feiuG\ty\u001fyTvV\u0018+lI\u0010?\u001c tjE\u0015?\u0013xn|I\u0011u_ee|I\bb\u0013rs B\u0014c\u0013xnaC\u001ed^pii\t|N\u0012b\u0004YabC\u000bwK\u0011C\u0015tu}O\ti\u0017LG\u0013s\u0015{ \\C\u001ee\u0002~tv\u0006>\u007f\u001ecewR\u0014!K\u0018d\u0011sa{G4~\u0019cinJ\u0014j\u0015s\u0010xU\rC\u0005utvV\u0018V\u0019ydjT\u0017LG\u0013s\u0015{ \\C\u001ee\u0002~tv\u0006>\u007f\u001ecewR"
         .length();
      char var1 = '?';
      int var7 = -1;

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

         while (true) {
            String var8 = b(var10000, b(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var8;
                  if ((var7 += var1) >= var4) {
                     b = var5;
                     ASSERTION_BASIC_NAME = b[13];
                     META_INITIALIZED = CancelSecurityContext.class.getName() + b[14];
                     return;
                  }

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

                  var2 = ")6k\u0010w\u000b\u0001\u0003sK\nk\u0016\u0010\u0002'(&d\f\u0016\u001f?d\u0004q\u000b\u001a\u0014sX\u0017j\u0012\u0010\b'a\u0000v\u000f\n2d\u0000q\u0016\u00104<l\u0000L\u0001\u001a\u0014";
                  var4 = ")6k\u0010w\u000b\u0001\u0003sK\nk\u0016\u0010\u0002'(&d\f\u0016\u001f?d\u0004q\u000b\u001a\u0014sX\u0017j\u0012\u0010\b'a\u0000v\u000f\n2d\u0000q\u0016\u00104<l\u0000L\u0001\u001a\u0014"
                     .length();
                  var1 = '(';
                  var7 = -1;
            }

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

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

      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 -> 119;
            case 1 -> 94;
            case 2 -> 5;
            case 3 -> 104;
            case 4 -> 8;
            case 5 -> 111;
            default -> 120;
         });
      }

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

   public enum AuthorizationType {
      NONE,
      USER,
      TOKEN;

      // $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[3];
         int var4 = 0;
         String var3 = "Y<Bp\\\u0004X Lg\u0004C<Gp";
         int var5 = "Y<Bp\\\u0004X Lg\u0004C<Gp".length();
         char var2 = 5;
         int var1 = -1;

         while (true) {
            String var10002 = a(99, a(var3.substring(++var1, var1 + var2)));
            byte var10001 = -1;
            var0[var4++] = var10002;
            if ((var1 += var2) >= var5) {
               NONE = new CancelSecurityContext.AuthorizationType();
               USER = new CancelSecurityContext.AuthorizationType();
               TOKEN = new CancelSecurityContext.AuthorizationType();
               return;
            }

            var2 = var3.charAt(var1);
         }
      }

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

         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 -> 110;
               case 1 -> 16;
               case 2 -> 106;
               case 3 -> 86;
               case 4 -> 113;
               case 5 -> 79;
               default -> 90;
            });
         }

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