package com.l7tech.policy.assertion.xmlsec;

import com.l7tech.policy.assertion.Assertion;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import org.jetbrains.annotations.Nullable;

public abstract class SamlPolicyAssertion extends Assertion {
   private Integer version;
   private boolean noSubjectConfirmation = false;
   protected String nameQualifier = null;
   protected String audienceRestriction;
   protected SamlAuthenticationStatement authenticationStatement;
   protected SamlAuthorizationStatement authorizationStatement;
   protected SamlAttributeStatement attributeStatement;
   public static final Set<String> HOK_URIS;
   public static final Set<String> SV_URIS;
   public static final Set<String> BEARER_URIS;
   static final long serialVersionUID = 2545052697401608425L;

   @Override
   public Object clone() {
      SamlPolicyAssertion var1 = (SamlPolicyAssertion)super.clone();
      if (var1.getAttributeStatement() != null) {
         var1.setAttributeStatement((SamlAttributeStatement)var1.getAttributeStatement().clone());
      }

      if (var1.getAuthenticationStatement() != null) {
         var1.setAuthenticationStatement((SamlAuthenticationStatement)var1.getAuthenticationStatement().clone());
      }

      if (var1.getAuthorizationStatement() != null) {
         var1.setAuthorizationStatement((SamlAuthorizationStatement)var1.getAuthorizationStatement().clone());
      }

      return var1;
   }

   public Integer getVersion() {
      return this.version;
   }

   public void setVersion(Integer var1) {
      this.version = var1;
   }

   public String getAudienceRestriction() {
      return this.audienceRestriction;
   }

   public void setAudienceRestriction(String var1) {
      this.audienceRestriction = var1;
   }

   public String getNameQualifier() {
      return this.nameQualifier;
   }

   public void setNameQualifier(String var1) {
      this.nameQualifier = var1;
   }

   public boolean isNoSubjectConfirmation() {
      return this.noSubjectConfirmation;
   }

   public void setNoSubjectConfirmation(boolean var1) {
      this.noSubjectConfirmation = var1;
   }

   public SamlAuthenticationStatement getAuthenticationStatement() {
      return this.authenticationStatement;
   }

   public void setAuthenticationStatement(@Nullable SamlAuthenticationStatement var1) {
      this.authenticationStatement = var1;
   }

   public SamlAuthorizationStatement getAuthorizationStatement() {
      return this.authorizationStatement;
   }

   public void setAuthorizationStatement(@Nullable SamlAuthorizationStatement var1) {
      this.authorizationStatement = var1;
   }

   public SamlAttributeStatement getAttributeStatement() {
      return this.attributeStatement;
   }

   public void setAttributeStatement(@Nullable SamlAttributeStatement var1) {
      this.attributeStatement = var1;
   }

   static {
      String[] var0 = new String[6];
      int var4 = 0;
      String var3 = "?%\u0000D#U9#$T\u0010-Y/9m\u001a\u001dvg\u000b\u0007\u001bTOb\u0004p):T\r)Z./%C\b#A)\"2\u001d%?%\u0000D#U9#$T\u0010-Y/9m\u001a\u001dvg\u000b\u0007\u001bTOb\u0004p):T\u001c)U8/%,?%\u0000D#U9#$T\u0010-Y/9m\u001a\u001dvg\u000b\u0007\u001bTLb\u0004p):T\u0016#X./%C\u0011*\u0019!/.,?%\u0000D#U9#$T\u0010-Y/9m\u001a\u001dvg\u000b\u0007\u001bTOb\u0004p):T\u0016#X./%C\u0011*\u0019!/.";
      int var5 = "?%\u0000D#U9#$T\u0010-Y/9m\u001a\u001dvg\u000b\u0007\u001bTOb\u0004p):T\r)Z./%C\b#A)\"2\u001d%?%\u0000D#U9#$T\u0010-Y/9m\u001a\u001dvg\u000b\u0007\u001bTOb\u0004p):T\u001c)U8/%,?%\u0000D#U9#$T\u0010-Y/9m\u001a\u001dvg\u000b\u0007\u001bTLb\u0004p):T\u0016#X./%C\u0011*\u0019!/.,?%\u0000D#U9#$T\u0010-Y/9m\u001a\u001dvg\u000b\u0007\u001bTOb\u0004p):T\u0016#X./%C\u0011*\u0019!/."
         .length();
      char var2 = '-';
      int var7 = -1;

      label25:
      while (true) {
         byte var10000 = 43;
         String var10001 = var3.substring(++var7, var7 + var2);
         byte var10002 = -1;

         while (true) {
            String var8 = b(var10000, b(var10001));
            switch (var10002) {
               case 0:
                  var0[var4++] = var8;
                  if ((var7 += var2) >= var5) {
                     HOK_URIS = Collections.unmodifiableSet(new HashSet<>(Arrays.asList(var0[3], var0[2])));
                     SV_URIS = Collections.unmodifiableSet(new HashSet<>(Arrays.asList(var0[0], var0[5])));
                     BEARER_URIS = Collections.unmodifiableSet(new HashSet<>(Arrays.asList(var0[1], var0[4])));
                     return;
                  }

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

                  var3 = "0*\u000fK,Z6,+[\u001f\"V 6b\u0015\u0012yh\u0004\b\u0014[Cm\u000b\u007f&5[\u0013&Z7 *-0*\u000fK,Z6,+[\u001f\"V 6b\u0015\u0012yh\u0004\b\u0014[Cm\u000b\u007f&5[\u0002&U! *L\u0007,N&-=\u0012";
                  var5 = "0*\u000fK,Z6,+[\u001f\"V 6b\u0015\u0012yh\u0004\b\u0014[Cm\u000b\u007f&5[\u0013&Z7 *-0*\u000fK,Z6,+[\u001f\"V 6b\u0015\u0012yh\u0004\b\u0014[Cm\u000b\u007f&5[\u0002&U! *L\u0007,N&-=\u0012"
                     .length();
                  var2 = '%';
                  var7 = -1;
            }

            var10000 = 36;
            var10001 = var3.substring(++var7, var7 + var2);
            var10002 = 0;
         }
      }
   }

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

      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 -> 97;
            case 1 -> 124;
            case 2 -> 69;
            case 3 -> 85;
            case 4 -> 103;
            case 5 -> 31;
            default -> 97;
         });
      }

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