package com.l7tech.server.security.rbac;

import com.l7tech.identity.User;
import com.l7tech.objectmodel.EntityType;
import com.l7tech.objectmodel.FindException;
import com.l7tech.objectmodel.Goid;
import jakarta.inject.Inject;
import java.io.Serializable;
import java.util.Collection;
import java.util.Map;
import java.util.Map.Entry;
import org.aopalliance.intercept.MethodInvocation;
import org.apache.commons.lang3.Validate;
import org.jetbrains.annotations.NotNull;

public class SecurityZoneRbacInterceptor implements CustomRbacInterceptor {
   private static final int a = 0;
   private static final int b = 2;
   private static final int c = 3;
   private static final int d = 1;
   private static final int e = 2;
   private static final int f = 1;
   private User g;
   @Inject
   private ZoneUpdateSecurityChecker zoneUpdateSecurityChecker;
   private static final String[] h;

   @Override
   public void setUser(@NotNull User var1) {
      try {
         if (var1 == null) {
            a(0);
         }
      } catch (IllegalArgumentException var2) {
         throw a(var2);
      }

      this.g = var1;
   }

   @Override
   public Object invoke(@NotNull MethodInvocation param1) throws Throwable {
      // $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: ifnonnull 0f
      // 04: bipush 1
      // 05: invokestatic com/l7tech/server/security/rbac/SecurityZoneRbacInterceptor.a (I)V
      // 08: goto 0f
      // 0b: invokestatic com/l7tech/server/security/rbac/SecurityZoneRbacInterceptor.a (Ljava/lang/Throwable;)Ljava/lang/Throwable;
      // 0e: athrow
      // 0f: aload 1
      // 10: invokeinterface org/aopalliance/intercept/MethodInvocation.getArguments ()[Ljava/lang/Object; 1
      // 15: astore 2
      // 16: aload 2
      // 17: arraylength
      // 18: bipush 2
      // 19: if_icmpeq 29
      // 1c: aload 2
      // 1d: arraylength
      // 1e: bipush 3
      // 1f: if_icmpne 31
      // 22: goto 29
      // 25: invokestatic com/l7tech/server/security/rbac/SecurityZoneRbacInterceptor.a (Ljava/lang/Throwable;)Ljava/lang/Throwable;
      // 28: athrow
      // 29: bipush 1
      // 2a: goto 32
      // 2d: invokestatic com/l7tech/server/security/rbac/SecurityZoneRbacInterceptor.a (Ljava/lang/Throwable;)Ljava/lang/Throwable;
      // 30: athrow
      // 31: bipush 0
      // 32: aload 2
      // 33: arraylength
      // 34: getstatic com/l7tech/server/security/rbac/SecurityZoneRbacInterceptor.h [Ljava/lang/String;
      // 37: bipush 7
      // 39: aaload
      // 3a: swap
      // 3b: invokedynamic makeConcatWithConstants (Ljava/lang/String;I)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001" ]
      // 40: bipush 0
      // 41: anewarray 118
      // 44: invokestatic org/apache/commons/lang3/Validate.isTrue (ZLjava/lang/String;[Ljava/lang/Object;)V
      // 47: aload 2
      // 48: bipush 0
      // 49: aaload
      // 4a: ifnull 5d
      // 4d: aload 2
      // 4e: bipush 0
      // 4f: aaload
      // 50: instanceof com/l7tech/objectmodel/Goid
      // 53: ifeq 65
      // 56: goto 5d
      // 59: invokestatic com/l7tech/server/security/rbac/SecurityZoneRbacInterceptor.a (Ljava/lang/Throwable;)Ljava/lang/Throwable;
      // 5c: athrow
      // 5d: bipush 1
      // 5e: goto 66
      // 61: invokestatic com/l7tech/server/security/rbac/SecurityZoneRbacInterceptor.a (Ljava/lang/Throwable;)Ljava/lang/Throwable;
      // 64: athrow
      // 65: bipush 0
      // 66: aload 2
      // 67: bipush 0
      // 68: aaload
      // 69: invokestatic java/lang/String.valueOf (Ljava/lang/Object;)Ljava/lang/String;
      // 6c: getstatic com/l7tech/server/security/rbac/SecurityZoneRbacInterceptor.h [Ljava/lang/String;
      // 6f: bipush 2
      // 70: aaload
      // 71: swap
      // 72: invokedynamic makeConcatWithConstants (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; bsm=java/lang/invoke/StringConcatFactory.makeConcatWithConstants (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite; args=[ "\u0001\u0001" ]
      // 77: bipush 0
      // 78: anewarray 118
      // 7b: invokestatic org/apache/commons/lang3/Validate.isTrue (ZLjava/lang/String;[Ljava/lang/Object;)V
      // 7e: aload 2
      // 7f: bipush 0
      // 80: aaload
      // 81: checkcast com/l7tech/objectmodel/Goid
      // 84: astore 3
      // 85: aload 2
      // 86: arraylength
      // 87: bipush 3
      // 88: if_icmpne 98
      // 8b: aload 0
      // 8c: aload 2
      // 8d: aload 3
      // 8e: invokevirtual com/l7tech/server/security/rbac/SecurityZoneRbacInterceptor.b ([Ljava/lang/Object;Lcom/l7tech/objectmodel/Goid;)V
      // 91: goto 9e
      // 94: invokestatic com/l7tech/server/security/rbac/SecurityZoneRbacInterceptor.a (Ljava/lang/Throwable;)Ljava/lang/Throwable;
      // 97: athrow
      // 98: aload 0
      // 99: aload 2
      // 9a: aload 3
      // 9b: invokevirtual com/l7tech/server/security/rbac/SecurityZoneRbacInterceptor.a ([Ljava/lang/Object;Lcom/l7tech/objectmodel/Goid;)V
      // 9e: aload 1
      // 9f: invokeinterface org/aopalliance/intercept/MethodInvocation.proceed ()Ljava/lang/Object; 1
      // a4: areturn
      // try (0 -> 4): 5 java/lang/Throwable
      // try (10 -> 18): 19 java/lang/Throwable
      // try (14 -> 23): 23 java/lang/Throwable
      // try (26 -> 45): 46 java/lang/Throwable
      // try (40 -> 50): 50 java/lang/Throwable
      // try (70 -> 79): 79 java/lang/Throwable
   }

   private void a(Object[] var1, Goid var2) throws FindException {
      boolean var10000 = var1[1] instanceof Map;
      String var10001 = String.valueOf(var1[1]);
      String[] var9 = h;
      Validate.isTrue(var10000, var9[14] + var10001, new Object[0]);
      Map var3 = (Map)var1[1];

      for (Object var5 : var3.entrySet()) {
         var10000 = var5 instanceof Entry;
         var9 = h;
         Validate.isTrue(var10000, var9[9], new Object[0]);
         Entry var6 = (Entry)var5;
         Object var7 = var6.getKey();
         Object var8 = var6.getValue();
         Validate.isTrue(var7 instanceof EntityType, var9[15] + var7, new Object[0]);
         Validate.isTrue(var8 instanceof Collection, var9[16] + var8, new Object[0]);
         this.a((Collection)var8);
      }

      this.zoneUpdateSecurityChecker.checkBulkUpdatePermitted(this.g, var2, var3);
   }

   private void b(Object[] var1, Goid var2) throws FindException {
      boolean var10000 = var1[1] instanceof EntityType;
      String var10001 = String.valueOf(var1[1]);
      String[] var5 = h;
      Validate.isTrue(var10000, var5[11] + var10001, new Object[0]);
      Validate.isTrue(var1[2] instanceof Collection, var5[12] + var1[2], new Object[0]);
      EntityType var3 = (EntityType)var1[1];
      Collection var4 = (Collection)var1[2];
      this.a(var4);
      this.zoneUpdateSecurityChecker.checkBulkUpdatePermitted(this.g, var2, var3, var4);
   }

   private void a(@NotNull Collection var1) {
      try {
         if (var1 == null) {
            a(2);
         }
      } catch (IllegalArgumentException var4) {
         throw a(var4);
      }

      for (Object var3 : var1) {
         Validate.isTrue(var3 instanceof Serializable, h[0] + var3, new Object[0]);
      }
   }

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

   static {
      String[] var5 = new String[17];
      int var3 = 0;
      String var2 = "\u001fOt+\n19XNr;\n9j+Eo&K4#\u0002A\u007f#Obj \u000eAq&N9>\u001dcr#F=)\fIr!e>\u0019\u001dRt.F10\u0019Bq*#=Xm*I,/\u001c\u0000|om7#\u001c\u0000r=\n6?\u0014L3ox=)\u001dIk*Nbj\u0007\u000bEi\u001aY=8;\u001bOp`Fo>\u001dCu`Y=8\u000eEo`Y=)\rRt;Sw8\u001aA~`y=)\rRt;S\u0002%\u0016EO-K;\u0003\u0016Tx=I=:\fOo\u0006\u0011Nk A=\n\u0011Nk I9>\u0011Os+=Xm*I,/\u001c\u0000i8Ex%\n\u0000i'X=/XAo(_5/\u0016Tna\n\n/\u001bEt9O<pX>9Rz:G=$\f\u0000{ Xx\n6Oi\u0001_4&XP|=K5/\fEoo\r}9_\u0000r)\n}9V\u0005noG-9\f\u0000s ^x(\u001d\u0000s:F4\u000b1Nk.F1.XM|?\u0003\u0011Dn\"=Xm*I,/\u001c\u0000|!\n\u001d$\fIi6~!:\u001d\u000e=\u001dO;/\u0011Vx+\u0010x!=Xm*I,/\u001c\u0000|oi7&\u0014E~;C7$V\u0000O*I=#\u000eEyu\n\u0004\rSx=\u001a=Xm*I,/\u001c\u0000|og9:V\u0000O*I=#\u000eEyu\n";
      int var4 = "\u001fOt+\n19XNr;\n9j+Eo&K4#\u0002A\u007f#Obj \u000eAq&N9>\u001dcr#F=)\fIr!e>\u0019\u001dRt.F10\u0019Bq*#=Xm*I,/\u001c\u0000|om7#\u001c\u0000r=\n6?\u0014L3ox=)\u001dIk*Nbj\u0007\u000bEi\u001aY=8;\u001bOp`Fo>\u001dCu`Y=8\u000eEo`Y=)\rRt;Sw8\u001aA~`y=)\rRt;S\u0002%\u0016EO-K;\u0003\u0016Tx=I=:\fOo\u0006\u0011Nk A=\n\u0011Nk I9>\u0011Os+=Xm*I,/\u001c\u0000i8Ex%\n\u0000i'X=/XAo(_5/\u0016Tna\n\n/\u001bEt9O<pX>9Rz:G=$\f\u0000{ Xx\n6Oi\u0001_4&XP|=K5/\fEoo\r}9_\u0000r)\n}9V\u0005noG-9\f\u0000s ^x(\u001d\u0000s:F4\u000b1Nk.F1.XM|?\u0003\u0011Dn\"=Xm*I,/\u001c\u0000|!\n\u001d$\fIi6~!:\u001d\u000e=\u001dO;/\u0011Vx+\u0010x!=Xm*I,/\u001c\u0000|oi7&\u0014E~;C7$V\u0000O*I=#\u000eEyu\n\u0004\rSx=\u001a=Xm*I,/\u001c\u0000|og9:V\u0000O*I=#\u000eEyu\n"
         .length();
      char var1 = 28;
      int var7 = -1;

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

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

                  var2 = "|\u0019,k\bmn]A=.\u0006x{\u0019\n9wKvm\u0019$2z\u0002mrm\u0018,kE9Y\\\u00029g\u001d|o\u0003A.|\u0019,k\bmn]A=.\u0006x{\u0019\u0017=b\u001e|+V\u0007|M\u0004ug\\\u0002(g\u0004w%\u001939m\u000ep}\\\u0005f.";
                  var4 = "|\u0019,k\bmn]A=.\u0006x{\u0019\n9wKvm\u0019$2z\u0002mrm\u0018,kE9Y\\\u00029g\u001d|o\u0003A.|\u0019,k\bmn]A=.\u0006x{\u0019\u0017=b\u001e|+V\u0007|M\u0004ug\\\u0002(g\u0004w%\u001939m\u000ep}\\\u0005f."
                     .length();
                  var1 = ',';
                  var7 = -1;
            }

            var10000 = 94;
            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] ^ 85);
      }

      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 -> 103;
            case 1 -> 63;
            case 2 -> 2;
            case 3 -> 80;
            case 4 -> 53;
            case 5 -> 71;
            default -> 85;
         });
      }

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