package com.l7tech.objectmodel;

import com.l7tech.util.DeserializeSafe;
import com.l7tech.util.HexUtils;
import com.l7tech.util.XmlSafe;
import java.beans.PersistenceDelegate;
import java.io.IOException;
import java.io.Serializable;
import java.nio.ByteBuffer;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

@XmlSafe
@DeserializeSafe
public final class Goid implements Comparable<Goid>, Serializable {
   private static final long serialVersionUID = 944098623320485131L;
   public static final Goid DEFAULT_GOID;
   private long high = 0L;
   private long low = -1L;
   static final Pattern PAT_LEADING_ZEROES;
   static final Pattern PAT_LEADING_ONES;
   static final Pattern PAT_TRAILING_HEX;
   static final String[] ZEROS;
   static final String[] ONES;
   private static final String[] a;

   @XmlSafe
   private Goid() {
   }

   public Goid(long var1, long var3) {
      this.high = var1;
      this.low = var3;
   }

   @XmlSafe
   public Goid(byte[] var1) {
      if (var1.length != 16) {
         throw new IllegalArgumentException(a[9]);
      }

      ByteBuffer var2 = ByteBuffer.wrap(var1);
      this.high = var2.getLong();
      this.low = var2.getLong();
   }

   @XmlSafe
   public Goid(@NotNull String var1) {
      String var2;
      if (var1.length() == 32) {
         var2 = var1;
      } else {
         var2 = decompressString(var1);
      }

      byte[] var3;
      try {
         var3 = HexUtils.unHexDump(var2);
      } catch (IOException var6) {
         String[] var5 = a;
         throw new IllegalArgumentException(var5[16] + var1);
      }

      try {
         if (var3.length != 16) {
            throw new IllegalArgumentException(a[8]);
         }
      } catch (IOException var7) {
         throw a(var7);
      }

      ByteBuffer var4 = ByteBuffer.wrap(var3);
      this.high = var4.getLong();
      this.low = var4.getLong();
   }

   public Goid(@NotNull Goid var1) {
      this(var1.getBytes());
   }

   public static PersistenceDelegate getPersistenceDelegate() {
      return new a();
   }

   public long getHi() {
      return this.high;
   }

   public long getLow() {
      return this.low;
   }

   public byte[] getBytes() {
      return ByteBuffer.allocate(16).putLong(this.high).putLong(this.low).array();
   }

   public Goid clone() {
      return new Goid(this.getBytes());
   }

   @Override
   public boolean equals(Object param1) {
      // $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: aload 1
      // 02: if_acmpne 0b
      // 05: bipush 1
      // 06: ireturn
      // 07: invokestatic com/l7tech/objectmodel/Goid.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0a: athrow
      // 0b: aload 1
      // 0c: ifnull 21
      // 0f: aload 0
      // 10: invokevirtual java/lang/Object.getClass ()Ljava/lang/Class;
      // 13: aload 1
      // 14: invokevirtual java/lang/Object.getClass ()Ljava/lang/Class;
      // 17: if_acmpeq 27
      // 1a: goto 21
      // 1d: invokestatic com/l7tech/objectmodel/Goid.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 20: athrow
      // 21: bipush 0
      // 22: ireturn
      // 23: invokestatic com/l7tech/objectmodel/Goid.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 26: athrow
      // 27: aload 1
      // 28: checkcast com/l7tech/objectmodel/Goid
      // 2b: astore 2
      // 2c: aload 0
      // 2d: getfield com/l7tech/objectmodel/Goid.high J
      // 30: aload 2
      // 31: getfield com/l7tech/objectmodel/Goid.high J
      // 34: lcmp
      // 35: ifne 53
      // 38: aload 0
      // 39: getfield com/l7tech/objectmodel/Goid.low J
      // 3c: aload 2
      // 3d: getfield com/l7tech/objectmodel/Goid.low J
      // 40: lcmp
      // 41: ifne 53
      // 44: goto 4b
      // 47: invokestatic com/l7tech/objectmodel/Goid.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 4a: athrow
      // 4b: bipush 1
      // 4c: goto 54
      // 4f: invokestatic com/l7tech/objectmodel/Goid.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 52: athrow
      // 53: bipush 0
      // 54: ireturn
      // try (0 -> 5): 5 java/lang/IllegalArgumentException
      // try (7 -> 14): 15 java/lang/IllegalArgumentException
      // try (9 -> 19): 19 java/lang/IllegalArgumentException
      // try (24 -> 36): 37 java/lang/IllegalArgumentException
      // try (30 -> 41): 41 java/lang/IllegalArgumentException
   }

   @Override
   public int hashCode() {
      int var1 = (int)(this.high ^ this.high >>> 32);
      return 31 * var1 + (int)(this.low ^ this.low >>> 32);
   }

   @Override
   public String toString() {
      return this.toHexString();
   }

   public String toHexString() {
      return HexUtils.hexDump(this.getBytes());
   }

   public static Goid parseGoid(@NotNull String var0) {
      try {
         if (var0 == null) {
            $$$reportNull$$$0(2);
         }
      } catch (IllegalArgumentException var1) {
         throw a(var1);
      }

      return new Goid(var0);
   }

   public static String toString(@NotNull Goid var0) {
      try {
         if (var0 == null) {
            $$$reportNull$$$0(3);
         }
      } catch (IllegalArgumentException var1) {
         throw a(var1);
      }

      return var0.toHexString();
   }

   public static boolean equals(@Nullable Goid param0, @Nullable Goid param1) {
      // $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: ifnonnull 1b
      // 04: aload 1
      // 05: ifnonnull 17
      // 08: goto 0f
      // 0b: invokestatic com/l7tech/objectmodel/Goid.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0e: athrow
      // 0f: bipush 1
      // 10: goto 20
      // 13: invokestatic com/l7tech/objectmodel/Goid.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 16: athrow
      // 17: bipush 0
      // 18: goto 20
      // 1b: aload 0
      // 1c: aload 1
      // 1d: invokevirtual com/l7tech/objectmodel/Goid.equals (Ljava/lang/Object;)Z
      // 20: ireturn
      // try (0 -> 4): 5 java/lang/IllegalArgumentException
      // try (2 -> 9): 9 java/lang/IllegalArgumentException
   }

   public static boolean isDefault(@Nullable Goid var0) {
      return PersistentEntity.DEFAULT_GOID.equals(var0);
   }

   public int compareTo(@NotNull Goid param1) {
      // $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 4
      // 05: invokestatic com/l7tech/objectmodel/Goid.$$$reportNull$$$0 (I)V
      // 08: goto 0f
      // 0b: invokestatic com/l7tech/objectmodel/Goid.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0e: athrow
      // 0f: aload 0
      // 10: invokevirtual com/l7tech/objectmodel/Goid.getHi ()J
      // 13: aload 1
      // 14: invokevirtual com/l7tech/objectmodel/Goid.getHi ()J
      // 17: lcmp
      // 18: ifge 23
      // 1b: bipush -1
      // 1c: goto 63
      // 1f: invokestatic com/l7tech/objectmodel/Goid.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 22: athrow
      // 23: aload 0
      // 24: invokevirtual com/l7tech/objectmodel/Goid.getHi ()J
      // 27: aload 1
      // 28: invokevirtual com/l7tech/objectmodel/Goid.getHi ()J
      // 2b: lcmp
      // 2c: ifne 62
      // 2f: aload 0
      // 30: invokevirtual com/l7tech/objectmodel/Goid.getLow ()J
      // 33: aload 1
      // 34: invokevirtual com/l7tech/objectmodel/Goid.getLow ()J
      // 37: lcmp
      // 38: ifge 4a
      // 3b: goto 42
      // 3e: invokestatic com/l7tech/objectmodel/Goid.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 41: athrow
      // 42: bipush -1
      // 43: goto 63
      // 46: invokestatic com/l7tech/objectmodel/Goid.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 49: athrow
      // 4a: aload 0
      // 4b: invokevirtual com/l7tech/objectmodel/Goid.getLow ()J
      // 4e: aload 1
      // 4f: invokevirtual com/l7tech/objectmodel/Goid.getLow ()J
      // 52: lcmp
      // 53: ifne 5e
      // 56: bipush 0
      // 57: goto 63
      // 5a: invokestatic com/l7tech/objectmodel/Goid.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 5d: athrow
      // 5e: bipush 1
      // 5f: goto 63
      // 62: bipush 1
      // 63: ireturn
      // try (0 -> 4): 5 java/lang/IllegalArgumentException
      // try (7 -> 15): 15 java/lang/IllegalArgumentException
      // try (17 -> 29): 30 java/lang/IllegalArgumentException
      // try (23 -> 34): 34 java/lang/IllegalArgumentException
      // try (36 -> 44): 44 java/lang/IllegalArgumentException
   }

   public String toCompressedString() {
      return compressString(new StringBuilder(this.toHexString()));
   }

   static String compressString(StringBuilder var0) {
      StringBuilder var1 = new StringBuilder();

      while (var0.length() >= 16) {
         CharSequence var2 = var0.subSequence(0, 16);
         var0 = var0.delete(0, 16);
         var2 = PAT_LEADING_ONES.matcher(var2).replaceFirst("n");
         var2 = PAT_LEADING_ZEROES.matcher(var2).replaceFirst("z");
         var1.append(var2);
      }

      var1.append(var0);
      return var1.toString();
   }

   static String decompressString(@NotNull String var0) {
      try {
         if (var0 == null) {
            $$$reportNull$$$0(5);
         }
      } catch (IllegalArgumentException var8) {
         throw a(var8);
      }

      try {
         if (var0.length() > 32) {
            throw new IllegalArgumentException(a[2]);
         }
      } catch (IllegalArgumentException var11) {
         throw a(var11);
      }

      StringBuilder var1 = new StringBuilder();
      String var2 = var0;
      int var3 = 0;

      while (true) {
         if (var2.length() <= 0) {
            return var1.toString();
         }

         Matcher var4 = PAT_TRAILING_HEX.matcher(var2);
         if (var4.find()) {
            var2 = var4.replaceFirst("");
            var1.insert(0, var4.group(0));
         } else {
            label56: {
               label72: {
                  try {
                     if (var2.endsWith("n") || var2.endsWith("N")) {
                        break label72;
                     }
                  } catch (IllegalArgumentException var10) {
                     throw a(var10);
                  }

                  try {
                     if (!var2.endsWith("z") && !var2.endsWith("Z")) {
                        break;
                     }
                  } catch (IllegalArgumentException var9) {
                     throw a(var9);
                  }

                  var3++;
                  var2 = var2.substring(0, var2.length() - 1);
                  int var5 = 16 - var1.length() % 16;
                  var1.insert(0, ZEROS[var5]);
                  break label56;
               }

               var3++;
               var2 = var2.substring(0, var2.length() - 1);
               int var12 = 16 - var1.length() % 16;
               var1.insert(0, ONES[var12]);
            }
         }

         try {
            if (var3 > 2) {
               throw new IllegalArgumentException(a[6]);
            }
         } catch (IllegalArgumentException var7) {
            throw a(var7);
         }
      }

      String[] var6 = a;
      throw new IllegalArgumentException(var6[14]);
   }

   static {
      String[] var5 = new String[18];
      int var3 = 0;
      String var2 = "$1\bvu|\u001b\"*\u0001\t\u001cnH?u#\u0018+n\u00176oS.x8\u0019_Fj\u0006PqU\u000bnJox>\u0013\u0018(\u001b\u001cnH`xf\t\u001abM`{3\u0017\u001abQ\"{5\u0018\u0013.b }5\u0004!gCd\b\u000bnv;f8\u0013\u0018 6oS.x8\u0019_FJ&pqU\u000bnJoy0\u0013\u0006!V*s<\u0018\u0011uVf\u0010\u001bdF y!\u000f\u001arV\u001c`#\u0014\u0011fM<`K!{%]\u001cs@.`4]\u001e!B }5]\u0019sJ\"4%\u0015\u0016r\u0005\u001c`#\u0014\u0011f\to}%]\u001bn@<4?\u0012\u000b!A*w>\u0019\u001a!Q 40]N7\u0005-m%\u0018_`W=u(SA<`K!{%]\u001cs@.`4]\u001e!B }5]\u0019sJ\"40]\u001dxQ*40\u000f\r`\\o`9\u001c\u000b!L<4?\u0012\u000b!\u0014y43\u0004\u000bdVox>\u0013\u0018/\t\u000f`W<q\u0016\u0012\u0016e>>sB:y4\u0013\u000b!C fq=1nQ\u0001a=\u0011_qD=u<\u0018\u000bdWo3t\u000eX!J)4t\u000eQ$Voy$\u000e\u000b!K `q\u001f\u001a!K:x=\u0004!1\u0015d\n\u0018nL+G%\u000f\u0016oB\"6oS.x8\u0019_FJ&pqU\noW*w>\u001a\u0011h_*pq\u000e\ngC&lx\u0006ChK&`o";
      int var4 = "$1\bvu|\u001b\"*\u0001\t\u001cnH?u#\u0018+n\u00176oS.x8\u0019_Fj\u0006PqU\u000bnJox>\u0013\u0018(\u001b\u001cnH`xf\t\u001abM`{3\u0017\u001abQ\"{5\u0018\u0013.b }5\u0004!gCd\b\u000bnv;f8\u0013\u0018 6oS.x8\u0019_FJ&pqU\u000bnJoy0\u0013\u0006!V*s<\u0018\u0011uVf\u0010\u001bdF y!\u000f\u001arV\u001c`#\u0014\u0011fM<`K!{%]\u001cs@.`4]\u001e!B }5]\u0019sJ\"4%\u0015\u0016r\u0005\u001c`#\u0014\u0011f\to}%]\u001bn@<4?\u0012\u000b!A*w>\u0019\u001a!Q 40]N7\u0005-m%\u0018_`W=u(SA<`K!{%]\u001cs@.`4]\u001e!B }5]\u0019sJ\"40]\u001dxQ*40\u000f\r`\\o`9\u001c\u000b!L<4?\u0012\u000b!\u0014y43\u0004\u000bdVox>\u0013\u0018/\t\u000f`W<q\u0016\u0012\u0016e>>sB:y4\u0013\u000b!C fq=1nQ\u0001a=\u0011_qD=u<\u0018\u000bdWo3t\u000eX!J)4t\u000eQ$Voy$\u000e\u000b!K `q\u001f\u001a!K:x=\u0004!1\u0015d\n\u0018nL+G%\u000f\u0016oB\"6oS.x8\u0019_FJ&pqU\noW*w>\u001a\u0011h_*pq\u000e\ngC&lx\u0006ChK&`o"
         .length();
      char var1 = '\n';
      int var13 = -1;

      label38:
      while (true) {
         byte var10000 = 93;
         String var10001 = var2.substring(++var13, var13 + var1);
         byte var10002 = -1;

         while (true) {
            String var15 = a(var10000, a(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var15;
                  if ((var13 += var1) >= var4) {
                     a = var5;
                     DEFAULT_GOID = new Goid(0L, -1L);
                     String[] var14 = a;
                     PAT_LEADING_ZEROES = Pattern.compile(var14[12]);
                     PAT_LEADING_ONES = Pattern.compile(var14[4], 2);
                     PAT_TRAILING_HEX = Pattern.compile(var14[0], 2);
                     StringBuilder var6 = new StringBuilder();
                     StringBuilder var7 = new StringBuilder();
                     String[] var8 = new String[17];
                     String[] var9 = new String[17];
                     int var10 = 0;

                     try {
                        while (var10 <= 16) {
                           var8[var10] = var6.toString();
                           var6.append("0");
                           var9[var10] = var7.toString();
                           var7.append("f");
                           var10++;
                        }
                     } catch (IllegalArgumentException var11) {
                        throw a(var11);
                     }

                     ZEROS = var8;
                     ONES = var9;
                     return;
                  }

                  var1 = var2.charAt(var13);
                  break;
               default:
                  var5[var3++] = var15;
                  if ((var13 += var1) < var4) {
                     var1 = var2.charAt(var13);
                     continue label38;
                  }

                  var2 = "`<\u0017}'y\u0001@/\u001cr<h\u0001D2\u0010whkSL0Yg dR\u0003\u000e\ra!cF\r}0}>lMJ9Y{-u\u0001G<\rrr-\u0004D2\u0010w";
                  var4 = "`<\u0017}'y\u0001@/\u001cr<h\u0001D2\u0010whkSL0Yg dR\u0003\u000e\ra!cF\r}0}>lMJ9Y{-u\u0001G<\rrr-\u0004D2\u0010w".length();
                  var1 = '7';
                  var13 = -1;
            }

            var10000 = 1;
            var10001 = var2.substring(++var13, var13 + var1);
            var10002 = 0;
         }
      }
   }

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

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

      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 -> 34;
            case 1 -> 92;
            case 2 -> 120;
            case 3 -> 18;
            case 4 -> 73;
            case 5 -> 12;
            default -> 32;
         });
      }

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