package com.l7tech.external.assertions.gatewaymanagement;

import com.l7tech.policy.AssertionPath;
import com.l7tech.policy.PolicyValidatorResult;
import com.l7tech.policy.PolicyValidatorResult.Warning;
import com.l7tech.policy.assertion.Assertion;
import com.l7tech.policy.assertion.AssertionMetadata;
import com.l7tech.policy.assertion.DefaultAssertionMetadata;
import com.l7tech.policy.assertion.MessageTargetableAssertion;
import com.l7tech.policy.assertion.TargetMessageType;
import com.l7tech.policy.assertion.MessageTargetableAssertion.VariablesSet;
import com.l7tech.policy.assertion.MessageTargetableAssertion.VariablesUsed;
import com.l7tech.policy.assertion.annotation.ProcessesRequest;
import com.l7tech.policy.assertion.identity.IdentityAssertion;
import com.l7tech.policy.validator.AssertionValidator;
import com.l7tech.policy.validator.PolicyValidationContext;
import com.l7tech.policy.variable.VariableMetadata;

@ProcessesRequest
public class RESTGatewayManagementAssertion extends MessageTargetableAssertion {
   private static final String META_INITIALIZED;
   private String variablePrefix;
   public static final String SUFFIX_ACTION;
   public static final String SUFFIX_URI;
   public static final String SUFFIX_STATUS;
   static final long serialVersionUID = -2560018923210266696L;
   private static final String[] b;

   public RESTGatewayManagementAssertion() {
      this.variablePrefix = b[6];
   }

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

      String[] var2 = b;
      var1.put(var2[8], var2[16]);
      var1.put(var2[0], var2[10]);
      var1.put(var2[14], var2[15]);
      var1.put(var2[4], new String[]{var2[22]});
      var1.put(var2[23], var2[11]);
      var1.put(var2[17], var2[18]);
      var1.put(var2[19], var2[7]);
      var1.put(var2[5], RESTGatewayManagementAssertion.Validator.class.getName());
      var1.put(var2[1], Boolean.TRUE);
      var1.putNull(var2[3]);
      var1.put(META_INITIALIZED, Boolean.TRUE);
      return var1;
   }

   public String getVariablePrefix() {
      return this.variablePrefix;
   }

   public void setVariablePrefix(String var1) {
      this.variablePrefix = var1;
   }

   protected VariablesUsed doGetVariablesUsed() {
      if (this.getTarget().equals(TargetMessageType.OTHER)) {
         VariablesUsed var10000 = super.doGetVariablesUsed();
         String[] var10001 = new String[2];
         String[] var1 = b;
         var10001[0] = this.variablePrefix + var1[12];
         var10001[1] = this.variablePrefix + var1[2];
         return (VariablesUsed)var10000.withVariables(var10001);
      } else {
         return super.doGetVariablesUsed();
      }
   }

   protected VariablesSet doGetVariablesSet() {
      VariableMetadata[] var1 = new VariableMetadata[]{new VariableMetadata(this.variablePrefix + b[21], false, false, null, true)};
      return (VariablesSet)super.doGetVariablesSet().withVariables(var1);
   }

   static {
      String[] var5 = new String[25];
      int var3 = 0;
      String var2 = "\n[Aj2<H\u001aW]g\u0012\u0007M`f5!Q\u0000Ysz30J\u001aW]g\u0004@K@`\u0017\u001eL]y%'L\u0007[AH#!Q\u0001Pth#!W\u001cG\u000e\u001e_^l4!](Q^m%'K\u0018\u001eQ^`#,n\u000fR[m!!W\u001c}^h3&V\u000fSW\u000e\u001c[A}\u00074L\u000bISp\r4VX\rQ_',bL\u000b]Z'%-L\u000bL\\h,{Y\u001dMW{4<W\u0000M\u001cn!!]\u0019_Kd!;Y\t[_l.!\u0016\u001d[@\u007f%'\u0016)_Fl74A#_\\h'0U\u000bPFD/1M\u0002[~`&0[\u0017]^l\t\u001dV]{4\u001bY\u0003[\u0006\u000f]F`/;,#_\\h'0\u0018\u001aVW)\u00074L\u000bISp`\"Q\u001aV\u0012h`\u0007}=jT|,uQ\u0000JW{&4[\u000b\u0010)\rQ_&,bL\u000b]Z&#:V\u001dQ^lo']\u001dQG{#0KAMW{60J_\b\u001cn)3\u0007@_Q}):V\u0003\u001bL[\u0014\u001eL]y%'L\u0007[AH#!Q\u0001P|h-0\"<{a]`\u0012Y\u001a[Eh9uu\u000fPSn%8]\u0000J\u0012Y2:H\u000bLF`%&\u0013<{a]`\u0018Y\u0000_Ul`\u0012Y\u001a[Eh9\u000e\b[S}5']=[FG!8]\u000bFX@f-\u0016T\u000fMA \u001b\u0003QV|,0t\u0001_VE)&L\u000bPW{\u00039Y\u001dM\\h-0\u0014@SW}!1Y\u001a_{g)!Q\u000fR[s%1\u0007@MFh4 K\u0012\u0007PFl2;Y\u0002\u007fAz%'L\u0007Q\\z";
      int var4 = "\n[Aj2<H\u001aW]g\u0012\u0007M`f5!Q\u0000Ysz30J\u001aW]g\u0004@K@`\u0017\u001eL]y%'L\u0007[AH#!Q\u0001Pth#!W\u001cG\u000e\u001e_^l4!](Q^m%'K\u0018\u001eQ^`#,n\u000fR[m!!W\u001c}^h3&V\u000fSW\u000e\u001c[A}\u00074L\u000bISp\r4VX\rQ_',bL\u000b]Z'%-L\u000bL\\h,{Y\u001dMW{4<W\u0000M\u001cn!!]\u0019_Kd!;Y\t[_l.!\u0016\u001d[@\u007f%'\u0016)_Fl74A#_\\h'0U\u000bPFD/1M\u0002[~`&0[\u0017]^l\t\u001dV]{4\u001bY\u0003[\u0006\u000f]F`/;,#_\\h'0\u0018\u001aVW)\u00074L\u000bISp`\"Q\u001aV\u0012h`\u0007}=jT|,uQ\u0000JW{&4[\u000b\u0010)\rQ_&,bL\u000b]Z&#:V\u001dQ^lo']\u001dQG{#0KAMW{60J_\b\u001cn)3\u0007@_Q}):V\u0003\u001bL[\u0014\u001eL]y%'L\u0007[AH#!Q\u0001P|h-0\"<{a]`\u0012Y\u001a[Eh9uu\u000fPSn%8]\u0000J\u0012Y2:H\u000bLF`%&\u0013<{a]`\u0018Y\u0000_Ul`\u0012Y\u001a[Eh9\u000e\b[S}5']=[FG!8]\u000bFX@f-\u0016T\u000fMA \u001b\u0003QV|,0t\u0001_VE)&L\u000bPW{\u00039Y\u001dM\\h-0\u0014@SW}!1Y\u001a_{g)!Q\u000fR[s%1\u0007@MFh4 K\u0012\u0007PFl2;Y\u0002\u007fAz%'L\u0007Q\\z"
         .length();
      char var1 = 11;
      int var7 = -1;

      label24:
      while (true) {
         byte var10000 = 44;
         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;
                     String[] var9 = b;
                     SUFFIX_URI = b[13];
                     SUFFIX_STATUS = var9[24];
                     SUFFIX_ACTION = var9[9];
                     META_INITIALIZED = RESTGatewayManagementAssertion.class.getName() + b[20];
                     return;
                  }

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

                  var2 = "J\u000b\n8`u\tt\u0005\u00028]b\u0003T\u0006I\u001e\u0007)ar";
                  var4 = "J\u000b\n8`u\tt\u0005\u00028]b\u0003T\u0006I\u001e\u0007)ar".length();
                  var1 = 15;
                  var7 = -1;
            }

            var10000 = 120;
            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] ^ 20);
      }

      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 -> 66;
            case 1 -> 18;
            case 2 -> 30;
            case 3 -> 37;
            case 4 -> 108;
            case 5 -> 121;
            default -> 20;
         });
      }

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

   public static class Validator implements AssertionValidator {
      private RESTGatewayManagementAssertion a;
      private static final String b;

      public Validator(RESTGatewayManagementAssertion var1) {
         this.a = var1;
      }

      public void validate(AssertionPath var1, PolicyValidationContext var2, PolicyValidatorResult var3) {
         boolean var4 = false;

         for (Assertion var8 : var1.getPath()) {
            if (var8 == this.a) {
               break;
            }

            if (var8.isEnabled() && Assertion.isRequest(var8) && var8 instanceof IdentityAssertion) {
               var4 = true;
               break;
            }
         }

         if (!var4) {
            var3.addWarning(new Warning(this.a, b, null));
         }
      }

      static {
         String var10002 = a(
            53,
            a(
               "W4bJ \u001aus46B6\u000fi\u007f5,\u000b4\u001dns(6B:\u0000=e2-^9\n=f('H0\nx6.*B&N|e)'Y!\u0007rxvbJ;\u0001so7-^&Nhe?0Xu\u0006|`?bE:N|u9'X&Nms(/B&\u001dty41\u0005"
            )
         );
         byte var10001 = -1;
         b = var10002;
      }

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

         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 -> 35;
               case 1 -> 111;
               case 2 -> 119;
               case 3 -> 30;
               case 4 -> 96;
               case 5 -> 91;
               default -> 40;
            });
         }

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