package com.l7tech.policy.assertion.identity;

import com.l7tech.objectmodel.EntityHeader;
import com.l7tech.objectmodel.EntityType;
import com.l7tech.objectmodel.Goid;
import com.l7tech.objectmodel.PersistentEntity;
import com.l7tech.policy.assertion.AssertionMetadata;
import com.l7tech.policy.assertion.DefaultAssertionMetadata;
import com.l7tech.policy.assertion.IdentityTagable;
import com.l7tech.policy.assertion.IdentityTarget;
import com.l7tech.policy.assertion.MessageTargetableAssertion;
import com.l7tech.policy.assertion.UsesEntities;
import com.l7tech.util.GoidUpgradeMapper;

public abstract class IdentityAssertion extends MessageTargetableAssertion implements UsesEntities, IdentityTagable {
   protected Goid _identityProviderOid = PersistentEntity.DEFAULT_GOID;
   protected String identityTag;
   static final long serialVersionUID = -7057556241319337443L;
   private static final String[] b;

   protected IdentityAssertion() {
      super(false);
   }

   protected IdentityAssertion(Goid var1) {
      super(false);
      this._identityProviderOid = var1;
   }

   public void setIdentityProviderOid(Goid var1) {
      this._identityProviderOid = var1;
   }

   @Deprecated
   public void setIdentityProviderOid(long var1) {
      this._identityProviderOid = var1 == -2L ? new Goid(0L, -2L) : GoidUpgradeMapper.mapOid(EntityType.ID_PROVIDER_CONFIG, var1);
   }

   public Goid getIdentityProviderOid() {
      return this._identityProviderOid;
   }

   @Override
   public String getIdentityTag() {
      return this.identityTag;
   }

   @Override
   public void setIdentityTag(String var1) {
      this.identityTag = var1;
   }

   @Override
   public EntityHeader[] getEntitiesUsed() {
      return new EntityHeader[]{new EntityHeader(Goid.toString(this._identityProviderOid), EntityType.ID_PROVIDER_CONFIG, null, null)};
   }

   @Override
   public void replaceEntity(EntityHeader var1, EntityHeader var2) {
      if (var1.getType().equals(EntityType.ID_PROVIDER_CONFIG)
         && var1.getGoid().equals(this._identityProviderOid)
         && var2.getType().equals(EntityType.ID_PROVIDER_CONFIG)) {
         this._identityProviderOid = var2.getGoid();
      }
   }

   public abstract String loggingIdentity();

   public abstract IdentityTarget getIdentityTarget();

   @Override
   public AssertionMetadata meta() {
      DefaultAssertionMetadata var1 = this.defaultMeta();
      String[] var2 = b;
      var1.put(var2[1], var2[3]);
      var1.put(var2[4], var2[0]);
      var1.put(var2[5], var2[2]);
      return var1;
   }

   static {
      String[] var5 = new String[6];
      int var3 = 0;
      String var2 = "\btv1b\u000e(zdt!y\\\"(1`6d\t=zxc!e\b$.xb7+\u001a?5|'%e\\$>ti0b\b4zau+}\u0015)?c)\t)yh6\u007f2,7t'9~jkgK9?rokh\u0013#)~k!$\u000e()~r6h\u0019>udt!yM{tai#\u001a\u001bds,n\u001293rf0n\\\u0018)tudd\u000em\u001dch1{";
      int var4 = "\btv1b\u000e(zdt!y\\\"(1`6d\t=zxc!e\b$.xb7+\u001a?5|'%e\\$>ti0b\b4zau+}\u0015)?c)\t)yh6\u007f2,7t'9~jkgK9?rokh\u0013#)~k!$\u000e()~r6h\u0019>udt!yM{tai#\u001a\u001bds,n\u001293rf0n\\\u0018)tudd\u000em\u001dch1{"
         .length();
      char var1 = ';';
      int var7 = -1;

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

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

                  var2 = "+aa2l\u0000(;m}?\u000f?e~4j\u001d=\u0001kv4W\n7!";
                  var4 = "+aa2l\u0000(;m}?\u000f?e~4j\u001d=\u0001kv4W\n7!".length();
                  var1 = 11;
                  var7 = -1;
            }

            var10000 = 115;
            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] ^ 43);
      }

      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 -> 60;
            case 1 -> 119;
            case 2 -> 97;
            case 3 -> 34;
            case 4 -> 109;
            case 5 -> 26;
            default -> 43;
         });
      }

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