package com.l7tech.server.audit;

import com.l7tech.gateway.common.security.keystore.SsgKeyEntry;
import com.l7tech.objectmodel.Goid;
import com.l7tech.server.DefaultKey;
import com.l7tech.util.Background;
import com.l7tech.util.ExceptionUtils;
import com.l7tech.util.OpaqueId;
import java.io.IOException;
import java.io.InputStream;
import java.security.PrivateKey;
import java.security.UnrecoverableKeyException;
import java.security.cert.X509Certificate;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.TimerTask;
import java.util.logging.Logger;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;

public class AuditDownloadManager implements ApplicationContextAware {
   private static final Logger a;
   private static final long b = 90000L;
   private static final int c = 8192;
   private static Map<OpaqueId, q> d;
   private static final long e = 10000L;
   private static final long f = 250L;
   private ApplicationContext g;
   private final DefaultKey h;
   private static boolean i;
   private static final TimerTask j;
   private static final String[] k;

   public AuditDownloadManager(DefaultKey var1) {
      this.h = var1;
   }

   public OpaqueId createDownloadContext(long var1, long var3, Goid[] var5) throws IOException {
      SsgKeyEntry var10000;
      label28: {
         try {
            if (this.h == null) {
               var10000 = null;
               break label28;
            }
         } catch (UnrecoverableKeyException var13) {
            throw a(var13);
         }

         var10000 = this.h.getServerSslInfo();
      }

      SsgKeyEntry var8 = var10000;
      if (var8 != null) {
         X509Certificate var6 = var8.getCertificateChain()[0];

         PrivateKey var7;
         try {
            var7 = var8.getPrivate();
         } catch (UnrecoverableKeyException var12) {
            String var10002 = ExceptionUtils.getMessage(var12);
            String[] var14 = k;
            throw new RuntimeException(var14[4] + var10002, var12);
         }

         AuditExporter var9 = (AuditExporter)this.g.getBean(k[2], AuditExporter.class);
         q var10 = new q(var1, var3, var5, 0, var9, var6, var7);
         var10.checkForException();
         d.put(var10.a(), var10);
         return var10.a();
      } else {
         String[] var11 = k;
         throw new RuntimeException(var11[0]);
      }
   }

   public void closeDownloadContext(OpaqueId var1) {
      q var2 = d.get(var1);

      try {
         if (var2 != null) {
            var2.close();
         }
      } catch (RuntimeException var3) {
         throw a(var3);
      }
   }

   public InputStream getDownloadInputStream(OpaqueId var1) {
      q var2 = d.get(var1);

      try {
         if (var2 == null) {
            throw new RuntimeException(k[3]);
         }
      } catch (RuntimeException var3) {
         throw a(var3);
      }

      var2.checkForException();
      return var2.c();
   }

   public long getEstimatedTotalAudits(OpaqueId var1) {
      q var2 = d.get(var1);

      try {
         if (var2 == null) {
            throw new RuntimeException(k[3]);
         }
      } catch (RuntimeException var3) {
         throw a(var3);
      }

      return var2.f();
   }

   public long getDownloadedAuditCount(OpaqueId var1) {
      q var2 = d.get(var1);

      try {
         if (var2 == null) {
            throw new RuntimeException(k[1]);
         }
      } catch (RuntimeException var3) {
         throw a(var3);
      }

      return var2.g();
   }

   public byte[] nextDownloadChunk(OpaqueId var1) {
      q var2 = d.get(var1);

      try {
         if (var2 == null) {
            throw new RuntimeException(k[3]);
         }
      } catch (RuntimeException var5) {
         throw a(var5);
      }

      var2.checkForException();
      byte[] var3 = var2.e();

      try {
         if (var3 == null) {
            var2.close();
         }
      } catch (RuntimeException var4) {
         throw a(var4);
      }

      var2.checkForException();
      return var3;
   }

   private void a() {
      synchronized (j) {
         if (!i) {
            i = true;
            Background.scheduleRepeated(j, 1011L, 1011L);
         }
      }
   }

   public void setApplicationContext(ApplicationContext var1) throws BeansException {
      this.g = var1;
      this.a();
   }

   static {
      String[] var5 = new String[5];
      int var3 = 0;
      String var2 = "\u0016\u000bs?I\u001e\u00187\n2.L\u001cVc\u0000j-J\tL&\u00012<P\u001fQ7\u0016(}K\u0014\u0018'\u0000t<P\u0017Lc6A\u0011\u0005\u0010]:E{.\u0005\u0018M1\u0017w3Q\u0017Ac\u0001w.L\u001cV\"\u0011w9#\r\n2.P\u0018Pc\u0001}*K\u0017W\"\u00012>J\u0015L&\u001df}L\b\u00183\u0000|9L\u0015_\r\"\u0010v4Q>@3\n`)@\t";
      int var4 = "\u0016\u000bs?I\u001e\u00187\n2.L\u001cVc\u0000j-J\tL&\u00012<P\u001fQ7\u0016(}K\u0014\u0018'\u0000t<P\u0017Lc6A\u0011\u0005\u0010]:E{.\u0005\u0018M1\u0017w3Q\u0017Ac\u0001w.L\u001cV\"\u0011w9#\r\n2.P\u0018Pc\u0001}*K\u0017W\"\u00012>J\u0015L&\u001df}L\b\u00183\u0000|9L\u0015_\r\"\u0010v4Q>@3\n`)@\t"
         .length();
      char var1 = 'J';
      int var7 = -1;

      label24:
      while (true) {
         byte var10000 = 27;
         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) {
                     k = var5;
                     a = Logger.getLogger(AuditDownloadManager.class.getName());
                     d = Collections.synchronizedMap(new HashMap<>());
                     i = false;
                     j = new aw();
                     return;
                  }

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

                  var2 = "\t\u000e6*T\u001cTg\u0005y.O\u0013S&\u00056:N\u0011H\"\u0019byH\f\u001c7\u0004x=H\u0011[=\u0012\u000fw;M\u001a\u001c3\u000e68B\u001cY4\u00126=D\u0019]2\rbyr,pg\ns \u0001\u0019S5Ae0F\u0011U)\u000668T\u001bU3Ar6V\u0011P(\u0000rc\u0001";
                  var4 = "\t\u000e6*T\u001cTg\u0005y.O\u0013S&\u00056:N\u0011H\"\u0019byH\f\u001c7\u0004x=H\u0011[=\u0012\u000fw;M\u001a\u001c3\u000e68B\u001cY4\u00126=D\u0019]2\rbyr,pg\ns \u0001\u0019S5Ae0F\u0011U)\u000668T\u001bU3Ar6V\u0011P(\u0000rc\u0001"
                     .length();
                  var1 = '#';
                  var7 = -1;
            }

            var10000 = 31;
            var10001 = var2.substring(++var7, var7 + 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] ^ 35);
      }

      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 -> 88;
            case 1 -> 126;
            case 2 -> 9;
            case 3 -> 70;
            case 4 -> 62;
            case 5 -> 96;
            default -> 35;
         });
      }

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