package com.l7tech.policy.wsp;

import com.l7tech.policy.assertion.Assertion;
import com.l7tech.policy.assertion.AssertionMetadata;
import com.l7tech.policy.assertion.composite.CompositeAssertion;
import com.l7tech.util.DomUtils;
import java.util.LinkedList;
import org.w3c.dom.Element;
import org.w3c.dom.Node;

public class CompositeAssertionMapping implements TypeMapping {
   private final CompositeAssertion a;
   private Class<? extends CompositeAssertion> b;
   private String c;
   private static final String[] d;

   protected CompositeAssertionMapping(CompositeAssertion var1, String var2) {
      this.b = (Class<? extends CompositeAssertion>)var1.getClass();
      this.c = var2;
      this.a = this.a(var1, var2);
   }

   protected void populateElement(WspWriter var1, Element var2, TypedReference var3) throws InvalidPolicyTreeException {
      CompositeAssertion var4 = (CompositeAssertion)var3.target;

      for (Assertion var7 : var4.getChildren()) {
         try {
            if (var7 == null) {
               throw new InvalidPolicyTreeException(d[1]);
            }
         } catch (InvalidPolicyTreeException var13) {
            throw b(var13);
         }

         Class var8 = var7.getClass();
         TypeMapping var9 = TypeMappingUtils.findTypeMappingByClass(var8, var1);
         if (var9 == null) {
            AssertionMetadata var10000 = var7.meta();
            String[] var10 = d;
            var9 = var10000.get(var10[3]);
         }

         try {
            if (var9 == null) {
               throw new InvalidPolicyTreeException(d[8] + var8);
            }
         } catch (InvalidPolicyTreeException var12) {
            throw b(var12);
         }

         var9.freeze(var1, new TypedReference(var8, var7), var2);
      }

      if (var3.target instanceof Assertion var14 && var14.getAssertionComment() != null) {
         TypeMapping var15 = TypeMappingUtils.findTypeMappingByClass(Assertion.Comment.class, var1);

         try {
            if (var15 != null) {
               var15.freeze(var1, new TypedReference(Assertion.Comment.class, var14.getAssertionComment()), var2);
            }
         } catch (InvalidPolicyTreeException var11) {
            throw b(var11);
         }
      }
   }

   protected void populateObject(CompositeAssertion var1, Element var2, WspVisitor var3) throws InvalidPolicyStreamException {
      LinkedList var4 = new LinkedList();

      for (Element var7 : TypeMappingUtils.a((Node)var2)) {
         TypedReference var8 = WspConstants.c.thaw(var7, var3);

         try {
            if (var8.target instanceof Assertion.Comment) {
               var1.setAssertionComment((Assertion.Comment)var8.target);
               continue;
            }
         } catch (InvalidPolicyStreamException var9) {
            throw b(var9);
         }

         try {
            if (!(var8.target instanceof Assertion)) {
               throw new InvalidPolicyStreamException(d[11] + var1 + d[7]);
            }
         } catch (InvalidPolicyStreamException var10) {
            throw b(var10);
         }

         var4.add((Assertion)var8.target);
      }

      var1.setChildren(var4);
   }

   @Override
   public Class getMappedClass() {
      return this.b;
   }

   @Override
   public String getSinceVersion() {
      return null;
   }

   @Override
   public String getExternalName() {
      return this.c;
   }

   @Override
   public Element freeze(WspWriter var1, TypedReference var2, Element var3) {
      Element var4 = DomUtils.createAndAppendElementNS(var3, this.c, this.getNsUri(), this.getNsPrefix());
      String var10001 = this.getNsUri();
      String var10002 = this.getNsPrefix();
      String[] var6 = d;
      var4.setAttributeNS(var10001, var10002 + var6[4], var6[10]);
      boolean var5 = ((Assertion)var2.target).isEnabled();

      try {
         if (!var5) {
            var4.setAttributeNS(this.getNsUri(), var6[2], var5 + "");
         }
      } catch (InvalidPolicyTreeException var7) {
         throw b(var7);
      }

      this.populateElement(var1, var4, var2);
      return var4;
   }

   protected String getNsPrefix() {
      return d[5];
   }

   protected String getNsUri() {
      return WspConstants.WSP_POLICY_NS;
   }

   @Override
   public TypedReference thaw(Element var1, WspVisitor var2) throws InvalidPolicyStreamException {
      CompositeAssertion var3 = this.a(this.a, this.c);
      var3.setEnabled(this.a(var1));
      this.populateObject(var3, var1, var2);
      return new TypedReference(this.b, var3);
   }

   private boolean a(Element param1) throws InvalidPolicyStreamException {
      // $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 1
      // 01: getstatic com/l7tech/policy/wsp/CompositeAssertionMapping.d [Ljava/lang/String;
      // 04: bipush 0
      // 05: aaload
      // 06: invokeinterface org/w3c/dom/Element.getAttribute (Ljava/lang/String;)Ljava/lang/String; 2
      // 0b: astore 2
      // 0c: aload 2
      // 0d: ifnull 23
      // 10: aload 2
      // 11: invokevirtual java/lang/String.trim ()Ljava/lang/String;
      // 14: ldc ""
      // 16: invokevirtual java/lang/String.equals (Ljava/lang/Object;)Z
      // 19: ifeq 29
      // 1c: goto 23
      // 1f: invokestatic com/l7tech/policy/wsp/CompositeAssertionMapping.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 22: athrow
      // 23: bipush 1
      // 24: ireturn
      // 25: invokestatic com/l7tech/policy/wsp/CompositeAssertionMapping.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 28: athrow
      // 29: aload 2
      // 2a: invokestatic java/lang/Boolean.parseBoolean (Ljava/lang/String;)Z
      // 2d: ireturn
      // try (6 -> 13): 14 com/l7tech/policy/wsp/InvalidPolicyStreamException
      // try (8 -> 18): 18 com/l7tech/policy/wsp/InvalidPolicyStreamException
   }

   @Override
   public TypeMappingFinder getSubtypeFinder() {
      return this.a.meta().get(d[12]);
   }

   private CompositeAssertion a(CompositeAssertion param1, String param2) throws IllegalArgumentException {
      // $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: getfield com/l7tech/policy/wsp/CompositeAssertionMapping.c Ljava/lang/String;
      // 04: ifnull 4a
      // 07: aload 1
      // 08: ifnull 4a
      // 0b: goto 12
      // 0e: invokestatic com/l7tech/policy/wsp/CompositeAssertionMapping.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 11: athrow
      // 12: aload 0
      // 13: getfield com/l7tech/policy/wsp/CompositeAssertionMapping.c Ljava/lang/String;
      // 16: aload 2
      // 17: invokevirtual java/lang/String.equals (Ljava/lang/Object;)Z
      // 1a: ifeq 4a
      // 1d: goto 24
      // 20: invokestatic com/l7tech/policy/wsp/CompositeAssertionMapping.b (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 23: athrow
      // 24: aload 1
      // 25: invokevirtual java/lang/Object.getClass ()Ljava/lang/Class;
      // 28: invokevirtual java/lang/Class.newInstance ()Ljava/lang/Object;
      // 2b: checkcast com/l7tech/policy/assertion/composite/CompositeAssertion
      // 2e: astore 3
      // 2f: goto ac
      // 32: astore 4
      // 34: new java/lang/IllegalArgumentException
      // 37: dup
      // 38: aload 4
      // 3a: invokespecial java/lang/IllegalArgumentException.<init> (Ljava/lang/Throwable;)V
      // 3d: athrow
      // 3e: astore 4
      // 40: new java/lang/IllegalArgumentException
      // 43: dup
      // 44: aload 4
      // 46: invokespecial java/lang/IllegalArgumentException.<init> (Ljava/lang/Throwable;)V
      // 49: athrow
      // 4a: getstatic com/l7tech/policy/wsp/CompositeAssertionMapping.d [Ljava/lang/String;
      // 4d: astore 5
      // 4f: aload 5
      // 51: bipush 6
      // 53: aaload
      // 54: aload 2
      // 55: invokevirtual java/lang/String.equals (Ljava/lang/Object;)Z
      // 58: ifeq 66
      // 5b: new com/l7tech/policy/assertion/composite/OneOrMoreAssertion
      // 5e: dup
      // 5f: invokespecial com/l7tech/policy/assertion/composite/OneOrMoreAssertion.<init> ()V
      // 62: astore 3
      // 63: goto ac
      // 66: getstatic com/l7tech/policy/wsp/CompositeAssertionMapping.d [Ljava/lang/String;
      // 69: astore 5
      // 6b: aload 5
      // 6d: bipush 13
      // 6f: aaload
      // 70: aload 2
      // 71: invokevirtual java/lang/String.equals (Ljava/lang/Object;)Z
      // 74: ifeq 82
      // 77: new com/l7tech/policy/assertion/composite/AllAssertion
      // 7a: dup
      // 7b: invokespecial com/l7tech/policy/assertion/composite/AllAssertion.<init> ()V
      // 7e: astore 3
      // 7f: goto ac
      // 82: aload 2
      // 83: getstatic com/l7tech/policy/wsp/CompositeAssertionMapping.d [Ljava/lang/String;
      // 86: astore 5
      // 88: aload 5
      // 8a: bipush 9
      // 8c: aaload
      // 8d: invokevirtual java/lang/String.equals (Ljava/lang/Object;)Z
      // 90: ifeq 9e
      // 93: new com/l7tech/policy/assertion/composite/ExactlyOneAssertion
      // 96: dup
      // 97: invokespecial com/l7tech/policy/assertion/composite/ExactlyOneAssertion.<init> ()V
      // 9a: astore 3
      // 9b: goto ac
      // 9e: new java/lang/IllegalArgumentException
      // a1: dup
      // a2: getstatic com/l7tech/policy/wsp/CompositeAssertionMapping.d [Ljava/lang/String;
      // a5: bipush 14
      // a7: aaload
      // a8: invokespecial java/lang/IllegalArgumentException.<init> (Ljava/lang/String;)V
      // ab: athrow
      // ac: aload 3
      // ad: areturn
      // try (3 -> 13): 14 java/lang/InstantiationException
      // try (0 -> 5): 6 java/lang/InstantiationException
      // try (16 -> 21): 22 java/lang/InstantiationException
      // try (16 -> 21): 28 java/lang/IllegalAccessException
   }

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

   static {
      String[] var5 = new String[15];
      int var3 = 0;
      String var2 = "K\u001b\rV\u0004\u0015 e@\u0018\b$RB\u001c\u000e-\u001easC]\u001f$\t(f@\u0014\u0016$[ 'B\b\u0000-[ t_\u0018\u001e5\u0012.i\u000bK\u001b\rV\u0004\u0015 e@\u0018\b\u0016p_\r88\u000b$JM\r\u001c(\u0015&NB\u000e\u0018 \u0015\"b\u0005R_\u001c\u000b$\u0004p_\rV\tHB\u0018#36.uI\u001a'D\u001c\u001fa\u00154k@]\u00033[(iZ\u001c\u0000(\u001fadD\u0014\u0000%\u001fIC]88\u000b$JM\r\u001c(\u0015&'J\u0012\u0019/\u001faaC\u000fL\"\u0017 t_]\nBT\u001c\u000f5\u00178HB\u0018\bUI\f\u0019(\t$c\u0013DC\u0010\u001c.\b(sI<\u001f2\u001e3sE\u0012\u0002a\u0010p_\r?4\u00195~\\\u0018*(\u0015%b^";
      int var4 = "K\u001b\rV\u0004\u0015 e@\u0018\b$RB\u001c\u000e-\u001easC]\u001f$\t(f@\u0014\u0016$[ 'B\b\u0000-[ t_\u0018\u001e5\u0012.i\u000bK\u001b\rV\u0004\u0015 e@\u0018\b\u0016p_\r88\u000b$JM\r\u001c(\u0015&NB\u000e\u0018 \u0015\"b\u0005R_\u001c\u000b$\u0004p_\rV\tHB\u0018#36.uI\u001a'D\u001c\u001fa\u00154k@]\u00033[(iZ\u001c\u0000(\u001fadD\u0014\u0000%\u001fIC]88\u000b$JM\r\u001c(\u0015&'J\u0012\u0019/\u001faaC\u000fL\"\u0017 t_]\nBT\u001c\u000f5\u00178HB\u0018\bUI\f\u0019(\t$c\u0013DC\u0010\u001c.\b(sI<\u001f2\u001e3sE\u0012\u0002a\u0010p_\r?4\u00195~\\\u0018*(\u0015%b^"
         .length();
      char var1 = 11;
      int var7 = -1;

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

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

                  var2 = "JL\u001d\u0014^N\u001a\u000e\"\u0000#+E\t\u0014(\u0005#jL?\u0001 \u0012";
                  var4 = "JL\u001d\u0014^N\u001a\u000e\"\u0000#+E\t\u0014(\u0005#jL?\u0001 \u0012".length();
                  var1 = 3;
                  var7 = -1;
            }

            var10000 = 2;
            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] ^ 79);
      }

      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 -> 9;
            case 1 -> 34;
            case 2 -> 115;
            case 3 -> 98;
            case 4 -> 79;
            case 5 -> 117;
            default -> 79;
         });
      }

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