package com.l7tech.server.policy.assertion;

import com.l7tech.common.mime.ContentTypeHeader;
import com.l7tech.gateway.common.custom.ContentTypeHeaderToCustomConverter;
import com.l7tech.gateway.common.custom.CustomToMessageTargetableAdaptor;
import com.l7tech.message.Message;
import com.l7tech.policy.assertion.ext.SecurityContext;
import com.l7tech.policy.assertion.ext.message.CustomContentType;
import com.l7tech.policy.assertion.ext.message.CustomMessage;
import com.l7tech.policy.assertion.ext.message.CustomPolicyContext;
import com.l7tech.policy.assertion.ext.message.format.CustomMessageFormatFactory;
import com.l7tech.policy.assertion.ext.targetable.CustomMessageTargetable;
import com.l7tech.policy.assertion.ext.targetable.CustomMessageTargetableSupport;
import com.l7tech.policy.variable.NoSuchVariableException;
import com.l7tech.policy.variable.Syntax;
import com.l7tech.policy.variable.VariableNotSettableException;
import com.l7tech.server.custom.CustomMessageImpl;
import com.l7tech.server.message.PolicyEnforcementContext;
import com.l7tech.server.policy.variable.ExpandVariables;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Map;
import java.util.Vector;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

class l extends k implements CustomPolicyContext {
   private final PolicyEnforcementContext a;
   private final SecurityContext b;
   private final boolean c;
   private final Map d;
   final ServerCustomAssertionHolder this$0;
   private static final String[] e;

   public l(
      @NotNull final ServerCustomAssertionHolder param1,
      @NotNull final PolicyEnforcementContext nullx,
      @Nullable final Map nullxx,
      @Nullable final m nullxxx,
      final o nullxxxx
   ) throws IOException {
      if (nullx == null) {
         a(0);
      }

      if (nullxx == null) {
         a(1);
      }

      this.this$0 = var1;
      super(var1);
      this.a = nullx;
      this.c = var1.a(nullx);
      this.d = nullxx;
      Vector var6 = var1.a(nullx.getRequest().getHttpCookiesKnob().getCookies());

      try {
         this.d.put(e[1], var6);
         this.d.put(e[3], Collections.unmodifiableCollection(new ArrayList(var6)));
         if (nullxxx != null) {
            this.d.put(e[9], nullxxx);
         }
      } catch (IOException var7) {
         throw a(var7);
      }

      try {
         if (nullxxxx != null) {
            this.d.put(e[10], nullxxxx);
         }
      } catch (IOException var8) {
         throw a(var8);
      }

      this.b = new j(this, var1, nullx);
   }

   @Override
   public void onCompletion() {
      this.this$0.b(this.a, this.d);
   }

   public SecurityContext getSecurityContext() {
      return this.b;
   }

   public Map getContext() {
      return this.d;
   }

   public Object getVariable(String var1) {
      return this.this$0.a(this.a, var1);
   }

   public String expandVariable(String var1) {
      Map var2 = this.getVariableMap(Syntax.getReferencedNames(var1));
      return this.expandVariable(var1, var2);
   }

   public String expandVariable(String var1, Map<String, Object> var2) {
      try {
         if (var1 == null) {
            return null;
         }
      } catch (VariableNotSettableException var3) {
         throw a(var3);
      }

      return ExpandVariables.process(var1, var2, this.this$0.getAudit());
   }

   public Map<String, Object> getVariableMap(String[] var1) {
      return this.a.getVariableMap(var1, this.this$0.getAudit());
   }

   public void setVariable(String var1, Object var2) {
      this.this$0.a(this.a, var1, var2);
   }

   public CustomMessageFormatFactory getFormats() {
      return this.this$0.j;
   }

   public CustomMessage getTargetMessage(CustomMessageTargetable var1) throws NoSuchVariableException, VariableNotSettableException {
      try {
         if (var1 == null) {
            throw new NoSuchVariableException(e[2], e[5]);
         }
      } catch (NoSuchVariableException var5) {
         throw a(var5);
      }

      CustomToMessageTargetableAdaptor var2 = new CustomToMessageTargetableAdaptor(var1);
      Message var3 = this.a.getOrCreateTargetMessage(var2, false);
      CustomMessageImpl var4 = new CustomMessageImpl(this.getFormats(), var3);
      this.this$0.doAttachKnobs(var4);
      return var4;
   }

   public CustomMessage getMessage(String var1) throws NoSuchVariableException, VariableNotSettableException {
      return this.getTargetMessage(new CustomMessageTargetableSupport(var1));
   }

   public boolean isPostRouting() {
      return this.c;
   }

   public CustomContentType createContentType(String var1) throws IOException {
      return new ContentTypeHeaderToCustomConverter(ContentTypeHeader.parseValue(var1));
   }

   private static void a(int var0) {
      String var10000;
      Object[] var10001;
      label16: {
         try {
            var10000 = e[7];
            var10001 = new Object[3];
            switch (var0) {
               case 0:
               default:
                  var10001[0] = e[6];
                  break label16;
               case 1:
            }
         } catch (VariableNotSettableException var2) {
            throw a(var2);
         }

         String[] var1 = e;
         var10001[0] = var1[8];
      }

      String[] var3 = e;
      var10001[1] = var3[4];
      var10001[2] = var3[0];
      throw new IllegalArgumentException(String.format(var10000, var10001));
   }

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

   static {
      String[] var5 = new String[11];
      int var3 = 0;
      String var2 = "Wl\u0019Kk*\u000e\u001eu\u0013CkqZ(j\u0018IvqM\u0006WK\"nS*\u000f\u0004w\u001eEvz_\u0007F\u0018Mt}[\u0018$\bj\u001a\rs#J\u000ef\u001f\rlqL\u001d`\u0005\ro{R\u0002f\u000e\r~gM\u000ew\u0003Kpz\u0011\u0007\u0013?d\u0005Ez`\u001e\u0005d\u001aG?}MKk\u0002Ns\r\u001bj\u001bK|m}\u0004k\u0003Gg`>*w\u0010WrqP\u001f%\u0011Mm4~%j\u0003ljxRKu\u0016P~y[\u001f`\u0005\u000281ML%\u0018D?1ME \u0004\u0002raM\u001f%\u0019Mk4\\\u000e%\u0019Wsx\u0011\u000f`\u0011CjxJ(j\u0019VzlJ&d\u0007";
      int var4 = "Wl\u0019Kk*\u000e\u001eu\u0013CkqZ(j\u0018IvqM\u0006WK\"nS*\u000f\u0004w\u001eEvz_\u0007F\u0018Mt}[\u0018$\bj\u001a\rs#J\u000ef\u001f\rlqL\u001d`\u0005\ro{R\u0002f\u000e\r~gM\u000ew\u0003Kpz\u0011\u0007\u0013?d\u0005Ez`\u001e\u0005d\u001aG?}MKk\u0002Ns\r\u001bj\u001bK|m}\u0004k\u0003Gg`>*w\u0010WrqP\u001f%\u0011Mm4~%j\u0003ljxRKu\u0016P~y[\u001f`\u0005\u000281ML%\u0018D?1ME \u0004\u0002raM\u001f%\u0019Mk4\\\u000e%\u0019Wsx\u0011\u000f`\u0011CjxJ(j\u0019VzlJ&d\u0007"
         .length();
      char var1 = 6;
      int var7 = -1;

      label24:
      while (true) {
         byte var10000 = 40;
         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) {
                     e = var5;
                     return;
                  }

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

                  var2 = "$];jGZw\b$]9oMGp3";
                  var4 = "$];jGZw\b$]9oMGp3".length();
                  var1 = 7;
                  var7 = -1;
            }

            var10000 = 21;
            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] ^ 22);
      }

      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 -> 67;
            case 1 -> 45;
            case 2 -> 95;
            case 3 -> 10;
            case 4 -> 55;
            case 5 -> 60;
            default -> 22;
         });
      }

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