package com.l7tech.server.policy.assertion;

import com.l7tech.policy.assertion.AssertionStatus;
import com.l7tech.policy.assertion.PolicyAssertionException;
import com.l7tech.policy.assertion.TimeOfDay;
import com.l7tech.policy.assertion.TimeRange;
import com.l7tech.server.message.PolicyEnforcementContext;
import java.io.IOException;
import java.util.Calendar;

public class ServerTimeRange extends AbstractServerAssertion<TimeRange> implements ServerAssertion<TimeRange> {
   private static final TimeOfDay d = new TimeOfDay(23, 59, 59);
   private static final String e;

   public ServerTimeRange(TimeRange var1) {
      super(var1);
   }

   @Override
   public AssertionStatus checkRequest(PolicyEnforcementContext param1) throws IOException, PolicyAssertionException {
      // $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/server/policy/assertion/ServerTimeRange.assertion Lcom/l7tech/policy/assertion/Assertion;
      // 04: checkcast com/l7tech/policy/assertion/TimeRange
      // 07: invokevirtual com/l7tech/policy/assertion/TimeRange.isControlDay ()Z
      // 0a: ifne 30
      // 0d: aload 0
      // 0e: getfield com/l7tech/server/policy/assertion/ServerTimeRange.assertion Lcom/l7tech/policy/assertion/Assertion;
      // 11: checkcast com/l7tech/policy/assertion/TimeRange
      // 14: invokevirtual com/l7tech/policy/assertion/TimeRange.isControlTime ()Z
      // 17: ifne 30
      // 1a: goto 21
      // 1d: invokestatic com/l7tech/server/policy/assertion/ServerTimeRange.a (Ljava/io/IOException;)Ljava/io/IOException;
      // 20: athrow
      // 21: aload 0
      // 22: getstatic com/l7tech/gateway/common/audit/AssertionMessages.TIME_RANGE_NOTHING_TO_CHECK Lcom/l7tech/gateway/common/audit/Messages$M;
      // 25: invokevirtual com/l7tech/server/policy/assertion/ServerTimeRange.logAndAudit (Lcom/l7tech/gateway/common/audit/AuditDetailMessage;)V
      // 28: getstatic com/l7tech/policy/assertion/AssertionStatus.NONE Lcom/l7tech/policy/assertion/AssertionStatus;
      // 2b: areturn
      // 2c: invokestatic com/l7tech/server/policy/assertion/ServerTimeRange.a (Ljava/io/IOException;)Ljava/io/IOException;
      // 2f: athrow
      // 30: getstatic com/l7tech/server/policy/assertion/ServerTimeRange.e Ljava/lang/String;
      // 33: invokestatic java/util/TimeZone.getTimeZone (Ljava/lang/String;)Ljava/util/TimeZone;
      // 36: invokestatic java/util/Calendar.getInstance (Ljava/util/TimeZone;)Ljava/util/Calendar;
      // 39: astore 2
      // 3a: aload 0
      // 3b: getfield com/l7tech/server/policy/assertion/ServerTimeRange.assertion Lcom/l7tech/policy/assertion/Assertion;
      // 3e: checkcast com/l7tech/policy/assertion/TimeRange
      // 41: invokevirtual com/l7tech/policy/assertion/TimeRange.isControlDay ()Z
      // 44: ifeq 65
      // 47: aload 0
      // 48: aload 2
      // 49: invokevirtual com/l7tech/server/policy/assertion/ServerTimeRange.a (Ljava/util/Calendar;)Z
      // 4c: ifne 65
      // 4f: goto 56
      // 52: invokestatic com/l7tech/server/policy/assertion/ServerTimeRange.a (Ljava/io/IOException;)Ljava/io/IOException;
      // 55: athrow
      // 56: aload 0
      // 57: getstatic com/l7tech/gateway/common/audit/AssertionMessages.TIME_RANGE_DOW_OUTSIDE_RANGE Lcom/l7tech/gateway/common/audit/Messages$M;
      // 5a: invokevirtual com/l7tech/server/policy/assertion/ServerTimeRange.logAndAudit (Lcom/l7tech/gateway/common/audit/AuditDetailMessage;)V
      // 5d: getstatic com/l7tech/policy/assertion/AssertionStatus.FAILED Lcom/l7tech/policy/assertion/AssertionStatus;
      // 60: areturn
      // 61: invokestatic com/l7tech/server/policy/assertion/ServerTimeRange.a (Ljava/io/IOException;)Ljava/io/IOException;
      // 64: athrow
      // 65: aload 0
      // 66: getfield com/l7tech/server/policy/assertion/ServerTimeRange.assertion Lcom/l7tech/policy/assertion/Assertion;
      // 69: checkcast com/l7tech/policy/assertion/TimeRange
      // 6c: invokevirtual com/l7tech/policy/assertion/TimeRange.isControlTime ()Z
      // 6f: ifeq 90
      // 72: aload 0
      // 73: aload 2
      // 74: invokevirtual com/l7tech/server/policy/assertion/ServerTimeRange.b (Ljava/util/Calendar;)Z
      // 77: ifne 90
      // 7a: goto 81
      // 7d: invokestatic com/l7tech/server/policy/assertion/ServerTimeRange.a (Ljava/io/IOException;)Ljava/io/IOException;
      // 80: athrow
      // 81: aload 0
      // 82: getstatic com/l7tech/gateway/common/audit/AssertionMessages.TIME_RANGE_TOD_OUTSIDE_RANGE Lcom/l7tech/gateway/common/audit/Messages$M;
      // 85: invokevirtual com/l7tech/server/policy/assertion/ServerTimeRange.logAndAudit (Lcom/l7tech/gateway/common/audit/AuditDetailMessage;)V
      // 88: getstatic com/l7tech/policy/assertion/AssertionStatus.FAILED Lcom/l7tech/policy/assertion/AssertionStatus;
      // 8b: areturn
      // 8c: invokestatic com/l7tech/server/policy/assertion/ServerTimeRange.a (Ljava/io/IOException;)Ljava/io/IOException;
      // 8f: athrow
      // 90: aload 0
      // 91: getstatic com/l7tech/gateway/common/audit/AssertionMessages.TIME_RAGNE_WITHIN_RANGE Lcom/l7tech/gateway/common/audit/Messages$M;
      // 94: invokevirtual com/l7tech/server/policy/assertion/ServerTimeRange.logAndAudit (Lcom/l7tech/gateway/common/audit/AuditDetailMessage;)V
      // 97: getstatic com/l7tech/policy/assertion/AssertionStatus.NONE Lcom/l7tech/policy/assertion/AssertionStatus;
      // 9a: areturn
      // try (0 -> 10): 11 java/io/IOException
      // try (5 -> 18): 18 java/io/IOException
      // try (24 -> 33): 34 java/io/IOException
      // try (29 -> 41): 41 java/io/IOException
      // try (43 -> 52): 53 java/io/IOException
      // try (48 -> 60): 60 java/io/IOException
   }

   private boolean a(Calendar var1) {
      int var2 = var1.get(7);
      if (this.assertion.getEndDayOfWeek() < this.assertion.getStartDayOfWeek()) {
         return var2 >= this.assertion.getStartDayOfWeek() && var2 <= 7 ? true : var2 <= this.assertion.getEndDayOfWeek();
      } else {
         return var2 >= this.assertion.getStartDayOfWeek() && var2 <= this.assertion.getEndDayOfWeek();
      }
   }

   private boolean b(Calendar var1) {
      TimeOfDay var2 = new TimeOfDay(var1.get(11), var1.get(12), var1.get(13));
      TimeOfDay var3 = this.assertion.getTimeRange().getFrom();
      TimeOfDay var4 = this.assertion.getTimeRange().getTo();
      if (var3.compareTo(var4) > 0) {
         return var2.compareTo(var3) >= 0 && var2.compareTo(d) <= 0 ? true : var2.compareTo(var4) <= 0;
      } else {
         return var2.compareTo(var4) <= 0 && var2.compareTo(var3) >= 0;
      }
   }

   static {
      String var10002 = b(127, a("\u0005I\u0004"));
      byte var10001 = -1;
      e = var10002;
   }

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

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

      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 -> 61;
            case 1 -> 123;
            case 2 -> 47;
            case 3 -> 70;
            case 4 -> 38;
            case 5 -> 78;
            default -> 100;
         });
      }

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