package com.l7tech.server.admin;

import com.l7tech.common.io.AliasNotFoundException;
import com.l7tech.common.io.CertGenParams;
import com.l7tech.common.io.CertUtils;
import com.l7tech.common.io.KeyGenParams;
import com.l7tech.common.io.ParamsCertificateGenerator;
import com.l7tech.common.io.SslCertificateSniffer;
import com.l7tech.common.io.X509GeneralName;
import com.l7tech.gateway.common.LicenseException;
import com.l7tech.gateway.common.LicenseManager;
import com.l7tech.gateway.common.AsyncAdminMethods.JobId;
import com.l7tech.gateway.common.admin.LicenseRuntimeException;
import com.l7tech.gateway.common.audit.SystemMessages;
import com.l7tech.gateway.common.security.MultipleAliasesException;
import com.l7tech.gateway.common.security.RevocationCheckPolicy;
import com.l7tech.gateway.common.security.SpecialKeyType;
import com.l7tech.gateway.common.security.TrustedCertAdmin;
import com.l7tech.gateway.common.security.TrustedCertAdmin.HostnameMismatchException;
import com.l7tech.gateway.common.security.keystore.KeystoreFileEntityHeader;
import com.l7tech.gateway.common.security.keystore.SsgKeyEntry;
import com.l7tech.gateway.common.security.keystore.SsgKeyMetadata;
import com.l7tech.gateway.common.security.password.SecurePassword;
import com.l7tech.gateway.common.security.password.SecurePassword.SecurePasswordType;
import com.l7tech.objectmodel.DeleteException;
import com.l7tech.objectmodel.FindException;
import com.l7tech.objectmodel.Goid;
import com.l7tech.objectmodel.ObjectNotFoundException;
import com.l7tech.objectmodel.SaveException;
import com.l7tech.objectmodel.SecurityZone;
import com.l7tech.objectmodel.UpdateException;
import com.l7tech.objectmodel.VersionException;
import com.l7tech.security.cert.BouncyCastleCertUtils;
import com.l7tech.security.cert.TrustedCert;
import com.l7tech.security.cert.TrustedCertManager;
import com.l7tech.security.keys.PemUtils;
import com.l7tech.security.prov.CertificateRequest;
import com.l7tech.security.prov.JceProvider;
import com.l7tech.security.prov.RsaSignerEngine;
import com.l7tech.security.prov.bc.BouncyCastleRsaSignerEngine;
import com.l7tech.security.types.CertificateValidationResult;
import com.l7tech.security.types.CertificateValidationType;
import com.l7tech.server.DefaultKey;
import com.l7tech.server.audit.Auditor;
import com.l7tech.server.cluster.ClusterPropertyManager;
import com.l7tech.server.event.AdminInfo;
import com.l7tech.server.event.admin.DetailedAdminEvent;
import com.l7tech.server.identity.cert.RevocationCheckPolicyManager;
import com.l7tech.server.security.cert.CertValidationProcessor;
import com.l7tech.server.security.keystore.SsgKeyFinder;
import com.l7tech.server.security.keystore.SsgKeyMetadataManager;
import com.l7tech.server.security.keystore.SsgKeyStore;
import com.l7tech.server.security.keystore.SsgKeyStoreManager;
import com.l7tech.server.security.password.SecurePasswordManager;
import com.l7tech.util.ArrayUtils;
import com.l7tech.util.Background;
import com.l7tech.util.Config;
import com.l7tech.util.ExceptionUtils;
import com.l7tech.util.SyspropUtil;
import java.io.IOException;
import java.math.BigInteger;
import java.security.GeneralSecurityException;
import java.security.KeyPair;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.security.PublicKey;
import java.security.SignatureException;
import java.security.UnrecoverableKeyException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.security.interfaces.ECPublicKey;
import java.security.interfaces.RSAPublicKey;
import java.security.spec.ECParameterSpec;
import java.security.spec.ECPoint;
import java.util.ArrayList;
import java.util.Collection;
import java.util.EventObject;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.security.auth.x500.X500Principal;
import org.apache.commons.lang3.ObjectUtils;
import org.bouncycastle.asn1.pkcs.CertificationRequestInfo;
import org.bouncycastle.pkcs.PKCS10CertificationRequest;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.context.ApplicationEventPublisherAware;

public class TrustedCertAdminImpl extends AsyncAdminMethodsImpl implements ApplicationEventPublisherAware, TrustedCertAdmin, ApplicationContextAware {
   private static final String e;
   private static final String f;
   private static final String g;
   private static final String h;
   private final DefaultKey i;
   private final LicenseManager j;
   private final SsgKeyStoreManager k;
   private final SsgKeyMetadataManager l;
   private final SecurePasswordManager m;
   private final ClusterPropertyManager n;
   private ApplicationEventPublisher o;
   private Auditor p;
   private final CertValidationProcessor q;
   private final Config r;
   private Logger s;
   private final TrustedCertManager t;
   private final RevocationCheckPolicyManager u;
   private static final String[] v;

   public TrustedCertAdminImpl(
      TrustedCertManager var1,
      RevocationCheckPolicyManager var2,
      DefaultKey var3,
      LicenseManager var4,
      SsgKeyStoreManager var5,
      @NotNull SsgKeyMetadataManager var6,
      SecurePasswordManager var7,
      ClusterPropertyManager var8,
      @NotNull CertValidationProcessor var9,
      @NotNull Config var10
   ) {
      if (var6 == null) {
         a(0);
      }

      if (var9 == null) {
         a(1);
      }

      if (var10 == null) {
         a(2);
      }

      super(7200);
      this.s = Logger.getLogger(this.getClass().getName());
      this.t = var1;
      if (var1 == null) {
         String[] var11 = v;
         throw new IllegalArgumentException(var11[28]);
      }

      try {
         this.u = var2;
         if (var2 == null) {
            throw new IllegalArgumentException(v[66]);
         }
      } catch (IllegalArgumentException var14) {
         throw a(var14);
      }

      try {
         this.i = var3;
         if (var3 == null) {
            throw new IllegalArgumentException(v[86]);
         }
      } catch (IllegalArgumentException var17) {
         throw a(var17);
      }

      try {
         this.j = var4;
         if (var4 == null) {
            throw new IllegalArgumentException(v[35]);
         }
      } catch (IllegalArgumentException var13) {
         throw a(var13);
      }

      try {
         this.k = var5;
         if (var5 == null) {
            throw new IllegalArgumentException(v[18]);
         }
      } catch (IllegalArgumentException var16) {
         throw a(var16);
      }

      try {
         this.m = var7;
         if (var7 == null) {
            throw new IllegalArgumentException(v[11]);
         }
      } catch (IllegalArgumentException var12) {
         throw a(var12);
      }

      try {
         this.n = var8;
         if (var8 == null) {
            throw new IllegalArgumentException(v[43]);
         }
      } catch (IllegalArgumentException var15) {
         throw a(var15);
      }

      this.l = var6;
      this.q = var9;
      this.r = var10;
   }

   public boolean getKeyStoreAllowDuplicatesBySubjectDN() {
      return this.r.getBooleanProperty(v[91], false);
   }

   private void b() {
      try {
         this.j.requireFeature(v[77]);
      } catch (LicenseException var2) {
         throw new LicenseRuntimeException(var2);
      }
   }

   private void c() {
      try {
         this.j.requireFeature(v[3]);
      } catch (LicenseException var2) {
         throw new LicenseRuntimeException(var2);
      }
   }

   public List<TrustedCert> findAllCerts() throws FindException {
      return new ArrayList<>(this.d().findAll());
   }

   public TrustedCert findCertByPrimaryKey(Goid var1) throws FindException {
      return (TrustedCert)this.d().findByPrimaryKey(var1);
   }

   public Collection<TrustedCert> findCertsBySubjectDn(String var1) throws FindException {
      return this.d().findBySubjectDn(CertUtils.formatDN(var1));
   }

   public boolean validateCertChainForCc(@NotNull X509Certificate[] var1) throws CertificateException {
      try {
         if (var1 == null) {
            a(3);
         }
      } catch (CertificateException var4) {
         throw a(var4);
      }

      CertificateValidationResult var2 = this.q
         .checkWithCcRequirements(
            var1, CertificateValidationType.PATH_VALIDATION, CertificateValidationType.REVOCATION, CertValidationProcessor.Facility.OTHER, this.p, false
         );

      try {
         if (var2 != CertificateValidationResult.OK) {
            throw new CertificateException(v[52] + var2.toString());
         } else {
            return true;
         }
      } catch (CertificateException var3) {
         throw a(var3);
      }
   }

   public Goid saveCert(TrustedCert param1) throws SaveException, UpdateException, VersionException, CertificateException {
      // $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: invokevirtual com/l7tech/server/admin/TrustedCertAdminImpl.b ()V
      // 04: aload 1
      // 05: invokevirtual com/l7tech/security/cert/TrustedCert.getRevocationCheckPolicyType ()Lcom/l7tech/security/cert/TrustedCert$PolicyUsageType;
      // 08: ifnonnull 19
      // 0b: aload 1
      // 0c: getstatic com/l7tech/security/cert/TrustedCert$PolicyUsageType.USE_DEFAULT Lcom/l7tech/security/cert/TrustedCert$PolicyUsageType;
      // 0f: invokevirtual com/l7tech/security/cert/TrustedCert.setRevocationCheckPolicyType (Lcom/l7tech/security/cert/TrustedCert$PolicyUsageType;)V
      // 12: goto 5f
      // 15: invokestatic com/l7tech/server/admin/TrustedCertAdminImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 18: athrow
      // 19: aload 1
      // 1a: invokevirtual com/l7tech/security/cert/TrustedCert.getRevocationCheckPolicyType ()Lcom/l7tech/security/cert/TrustedCert$PolicyUsageType;
      // 1d: getstatic com/l7tech/security/cert/TrustedCert$PolicyUsageType.SPECIFIED Lcom/l7tech/security/cert/TrustedCert$PolicyUsageType;
      // 20: if_acmpne 5f
      // 23: aload 1
      // 24: invokevirtual com/l7tech/security/cert/TrustedCert.getRevocationCheckPolicyOid ()Lcom/l7tech/objectmodel/Goid;
      // 27: ifnonnull 5f
      // 2a: goto 31
      // 2d: invokestatic com/l7tech/server/admin/TrustedCertAdminImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 30: athrow
      // 31: aload 1
      // 32: invokevirtual com/l7tech/security/cert/TrustedCert.isUnsaved ()Z
      // 35: ifeq 51
      // 38: goto 3f
      // 3b: invokestatic com/l7tech/server/admin/TrustedCertAdminImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 3e: athrow
      // 3f: new com/l7tech/objectmodel/SaveException
      // 42: dup
      // 43: getstatic com/l7tech/server/admin/TrustedCertAdminImpl.v [Ljava/lang/String;
      // 46: bipush 69
      // 48: aaload
      // 49: invokespecial com/l7tech/objectmodel/SaveException.<init> (Ljava/lang/String;)V
      // 4c: athrow
      // 4d: invokestatic com/l7tech/server/admin/TrustedCertAdminImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 50: athrow
      // 51: new com/l7tech/objectmodel/UpdateException
      // 54: dup
      // 55: getstatic com/l7tech/server/admin/TrustedCertAdminImpl.v [Ljava/lang/String;
      // 58: bipush 48
      // 5a: aaload
      // 5b: invokespecial com/l7tech/objectmodel/UpdateException.<init> (Ljava/lang/String;)V
      // 5e: athrow
      // 5f: aload 0
      // 60: aload 1
      // 61: invokevirtual com/l7tech/server/admin/TrustedCertAdminImpl.validateCert (Lcom/l7tech/security/cert/TrustedCert;)V
      // 64: aload 1
      // 65: invokevirtual com/l7tech/security/cert/TrustedCert.isUnsaved ()Z
      // 68: ifeq 79
      // 6b: aload 0
      // 6c: invokevirtual com/l7tech/server/admin/TrustedCertAdminImpl.d ()Lcom/l7tech/security/cert/TrustedCertManager;
      // 6f: aload 1
      // 70: invokeinterface com/l7tech/security/cert/TrustedCertManager.save (Lcom/l7tech/objectmodel/PersistentEntity;)Lcom/l7tech/objectmodel/Goid; 2
      // 75: astore 2
      // 76: goto 88
      // 79: aload 0
      // 7a: invokevirtual com/l7tech/server/admin/TrustedCertAdminImpl.d ()Lcom/l7tech/security/cert/TrustedCertManager;
      // 7d: aload 1
      // 7e: invokeinterface com/l7tech/security/cert/TrustedCertManager.update (Lcom/l7tech/objectmodel/PersistentEntity;)V 2
      // 83: aload 1
      // 84: invokevirtual com/l7tech/security/cert/TrustedCert.getGoid ()Lcom/l7tech/objectmodel/Goid;
      // 87: astore 2
      // 88: aload 2
      // 89: areturn
      // try (0 -> 9): 9 com/l7tech/objectmodel/SaveException
      // try (11 -> 18): 19 com/l7tech/objectmodel/SaveException
      // try (15 -> 24): 25 com/l7tech/objectmodel/SaveException
      // try (21 -> 34): 34 com/l7tech/objectmodel/SaveException
   }

   public void deleteCert(Goid var1) throws FindException, DeleteException {
      this.b();
      this.d().delete(var1);
   }

   public List<RevocationCheckPolicy> findAllRevocationCheckPolicies() throws FindException {
      return new ArrayList<>(this.e().findAll());
   }

   public RevocationCheckPolicy findRevocationCheckPolicyByPrimaryKey(Goid var1) throws FindException {
      return (RevocationCheckPolicy)this.e().findByPrimaryKey(var1);
   }

   public Goid saveRevocationCheckPolicy(RevocationCheckPolicy var1) throws SaveException, UpdateException, VersionException {
      this.b();
      RevocationCheckPolicyManager var3 = this.e();
      Goid var2;
      if (RevocationCheckPolicy.DEFAULT_GOID.equals(var1.getGoid())) {
         var2 = var3.save(var1);
      } else {
         var3.update(var1);
         var2 = var1.getGoid();
      }

      return var2;
   }

   public void deleteRevocationCheckPolicy(Goid var1) throws FindException, DeleteException {
      this.b();
      this.e().delete(var1);
   }

   public X509Certificate[] getCertficatesFromKeystoreBytes(@Nullable byte[] var1, String var2, @Nullable char[] var3, char[] var4, @Nullable String var5) throws UnrecoverableKeyException, MultipleAliasesException, CertificateException, KeyStoreException, NoSuchAlgorithmException, IOException, NoSuchProviderException, AliasNotFoundException {
      return this.f().getCertficatesFromKeystoreBytes(var1, var2, var3, var4, var5);
   }

   public X509Certificate[] retrieveCertFromUrl(String var1) throws IOException, HostnameMismatchException {
      this.b();
      return this.retrieveCertFromUrl(var1, false);
   }

   public X509Certificate[] retrieveCertFromUrl(String var1, boolean var2) throws IOException, HostnameMismatchException {
      this.b();

      try {
         return SslCertificateSniffer.retrieveCertFromUrl(var1, var2);
      } catch (com.l7tech.common.io.SslCertificateSniffer.HostnameMismatchException var4) {
         throw new HostnameMismatchException(var4.getCertname(), var4.getHostname());
      }
   }

   public JobId<X509Certificate[]> retrieveCertFromUrlAsync(String var1, boolean var2) {
      FutureTask var3 = new FutureTask<>(AdminInfo.find(false).wrapCallable(new n(this, var1, var2)));
      Background.scheduleOneShot(new u(this, var3), 0L);
      return this.registerJob(var3, X509Certificate[].class);
   }

   public X509Certificate getSSGRootCert() throws IOException, CertificateException {
      SsgKeyEntry var1 = this.i.getCaInfo();

      try {
         if (var1 == null) {
            throw new IOException(v[21]);
         }
      } catch (IOException var2) {
         throw a(var2);
      }

      return var1.getCertificate();
   }

   public X509Certificate getSSGSslCert() throws IOException, CertificateException {
      return this.i.getServerSslInfo().getCertificate();
   }

   public X509Certificate getSSGServerSslCert() throws IOException, CertificateException {
      return this.i.getServerSslInfo().getCertificate();
   }

   public X509Certificate getSSGClientSslCert() throws IOException, CertificateException {
      return this.i.getClientSslInfo().getCertificate();
   }

   public X509Certificate getSSGAuditSigningCert() throws IOException, CertificateException {
      SsgKeyEntry var1 = this.i.getAuditSigningInfo();

      try {
         if (var1 != null) {
            return var1.getCertificate();
         }
      } catch (IOException var2) {
         throw a(var2);
      }

      return this.getSSGServerSslCert();
   }

   public List<KeystoreFileEntityHeader> findAllKeystores(boolean param1) throws IOException, FindException, KeyStoreException {
      // $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/admin/TrustedCertAdminImpl.k Lcom/l7tech/server/security/keystore/SsgKeyStoreManager;
      // 04: invokeinterface com/l7tech/server/security/keystore/SsgKeyStoreManager.findAll ()Ljava/util/List; 1
      // 09: astore 2
      // 0a: new java/util/ArrayList
      // 0d: dup
      // 0e: invokespecial java/util/ArrayList.<init> ()V
      // 11: astore 3
      // 12: aload 2
      // 13: invokeinterface java/util/List.iterator ()Ljava/util/Iterator; 1
      // 18: astore 4
      // 1a: aload 4
      // 1c: invokeinterface java/util/Iterator.hasNext ()Z 1
      // 21: ifeq 8b
      // 24: aload 4
      // 26: invokeinterface java/util/Iterator.next ()Ljava/lang/Object; 1
      // 2b: checkcast com/l7tech/server/security/keystore/SsgKeyFinder
      // 2e: astore 5
      // 30: iload 1
      // 31: ifne 4f
      // 34: aload 5
      // 36: invokeinterface com/l7tech/server/security/keystore/SsgKeyFinder.getType ()Lcom/l7tech/server/security/keystore/SsgKeyFinder$SsgKeyStoreType; 1
      // 3b: getstatic com/l7tech/server/security/keystore/SsgKeyFinder$SsgKeyStoreType.PKCS11_HARDWARE Lcom/l7tech/server/security/keystore/SsgKeyFinder$SsgKeyStoreType;
      // 3e: if_acmpne 4f
      // 41: goto 48
      // 44: invokestatic com/l7tech/server/admin/TrustedCertAdminImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 47: athrow
      // 48: goto 1a
      // 4b: invokestatic com/l7tech/server/admin/TrustedCertAdminImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 4e: athrow
      // 4f: aload 3
      // 50: new com/l7tech/gateway/common/security/keystore/KeystoreFileEntityHeader
      // 53: dup
      // 54: aload 5
      // 56: invokeinterface com/l7tech/server/security/keystore/SsgKeyFinder.getGoid ()Lcom/l7tech/objectmodel/Goid; 1
      // 5b: aload 5
      // 5d: invokeinterface com/l7tech/server/security/keystore/SsgKeyFinder.getName ()Ljava/lang/String; 1
      // 62: aload 5
      // 64: invokeinterface com/l7tech/server/security/keystore/SsgKeyFinder.getType ()Lcom/l7tech/server/security/keystore/SsgKeyFinder$SsgKeyStoreType; 1
      // 69: invokevirtual com/l7tech/server/security/keystore/SsgKeyFinder$SsgKeyStoreType.toString ()Ljava/lang/String;
      // 6c: aload 5
      // 6e: invokeinterface com/l7tech/server/security/keystore/SsgKeyFinder.isMutable ()Z 1
      // 73: ifne 7e
      // 76: bipush 1
      // 77: goto 7f
      // 7a: invokestatic com/l7tech/server/admin/TrustedCertAdminImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 7d: athrow
      // 7e: bipush 0
      // 7f: invokespecial com/l7tech/gateway/common/security/keystore/KeystoreFileEntityHeader.<init> (Lcom/l7tech/objectmodel/Goid;Ljava/lang/String;Ljava/lang/String;Z)V
      // 82: invokeinterface java/util/List.add (Ljava/lang/Object;)Z 2
      // 87: pop
      // 88: goto 1a
      // 8b: aload 3
      // 8c: areturn
      // try (18 -> 24): 25 java/io/IOException
      // try (20 -> 28): 28 java/io/IOException
      // try (30 -> 45): 45 java/io/IOException
   }

   public List<SsgKeyEntry> findAllKeys(Goid param1, boolean param2) throws IOException, CertificateException, FindException {
      // $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/admin/TrustedCertAdminImpl.k Lcom/l7tech/server/security/keystore/SsgKeyStoreManager;
      // 04: aload 1
      // 05: invokeinterface com/l7tech/server/security/keystore/SsgKeyStoreManager.findByPrimaryKey (Lcom/l7tech/objectmodel/Goid;)Lcom/l7tech/server/security/keystore/SsgKeyFinder; 2
      // 0a: astore 3
      // 0b: new java/util/ArrayList
      // 0e: dup
      // 0f: invokespecial java/util/ArrayList.<init> ()V
      // 12: astore 4
      // 14: aload 3
      // 15: invokeinterface com/l7tech/server/security/keystore/SsgKeyFinder.getAliases ()Ljava/util/List; 1
      // 1a: astore 5
      // 1c: aload 5
      // 1e: invokeinterface java/util/List.iterator ()Ljava/util/Iterator; 1
      // 23: astore 6
      // 25: aload 6
      // 27: invokeinterface java/util/Iterator.hasNext ()Z 1
      // 2c: ifeq 6c
      // 2f: aload 6
      // 31: invokeinterface java/util/Iterator.next ()Ljava/lang/Object; 1
      // 36: checkcast java/lang/String
      // 39: astore 7
      // 3b: aload 3
      // 3c: aload 7
      // 3e: invokeinterface com/l7tech/server/security/keystore/SsgKeyFinder.getCertificateChain (Ljava/lang/String;)Lcom/l7tech/gateway/common/security/keystore/SsgKeyEntry; 2
      // 43: astore 8
      // 45: iload 2
      // 46: ifne 58
      // 49: aload 8
      // 4b: invokevirtual com/l7tech/gateway/common/security/keystore/SsgKeyEntry.isRestrictedAccess ()Z
      // 4e: ifne 69
      // 51: goto 58
      // 54: invokestatic com/l7tech/server/admin/TrustedCertAdminImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 57: athrow
      // 58: aload 4
      // 5a: aload 8
      // 5c: invokeinterface java/util/List.add (Ljava/lang/Object;)Z 2
      // 61: pop
      // 62: goto 69
      // 65: invokestatic com/l7tech/server/admin/TrustedCertAdminImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 68: athrow
      // 69: goto 25
      // 6c: aload 4
      // 6e: areturn
      // 6f: astore 3
      // 70: new java/security/cert/CertificateException
      // 73: dup
      // 74: aload 3
      // 75: invokespecial java/security/cert/CertificateException.<init> (Ljava/lang/Throwable;)V
      // 78: athrow
      // 79: astore 3
      // 7a: new com/l7tech/objectmodel/FindException
      // 7d: dup
      // 7e: aload 1
      // 7f: invokestatic java/lang/String.valueOf (Ljava/lang/Object;)Ljava/lang/String;
      // 82: getstatic com/l7tech/server/admin/TrustedCertAdminImpl.v [Ljava/lang/String;
      // 85: bipush 32
      // 87: aaload
      // 88: swap
      // 89: 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" ]
      // 8e: invokespecial com/l7tech/objectmodel/FindException.<init> (Ljava/lang/String;)V
      // 91: athrow
      // try (28 -> 38): 39 java/security/KeyStoreException
      // try (26 -> 31): 32 java/security/KeyStoreException
      // try (0 -> 43): 44 java/security/KeyStoreException
      // try (0 -> 43): 50 com/l7tech/objectmodel/ObjectNotFoundException
   }

   public SsgKeyEntry findKeyEntry(String var1, Goid var2) throws FindException, KeyStoreException {
      return this.f().doFindKeyEntry(var1, var2);
   }

   public void deleteKey(Goid var1, String var2) throws IOException, CertificateException, DeleteException {
      try {
         this.c();
         if (var2 == null) {
            throw new NullPointerException(v[29]);
         }
      } catch (KeyStoreException var10) {
         throw a(var10);
      }

      try {
         SsgKeyFinder var3 = this.k.findByPrimaryKey(var1);
         SsgKeyStore var4 = var3.getKeyStore();

         try {
            if (var4 == null) {
               throw new DeleteException(v[8] + var1 + v[76]);
            }
         } catch (KeyStoreException var7) {
            throw a(var7);
         }

         PrivateKeyAdminHelper var5 = this.f();

         try {
            if (var5.isKeyActive(var4, var2)) {
               throw new DeleteException(v[63] + var2 + v[53]);
            }
         } catch (KeyStoreException var6) {
            throw a(var6);
         }

         var5.validateKeyDeletionAllowed(var1, var2);
         var5.doDeletePrivateKeyEntry(var4, var2);
      } catch (KeyStoreException var8) {
         throw new CertificateException(var8);
      } catch (FindException var9) {
         throw new DeleteException(v[47] + ExceptionUtils.getMessage(var9), var9);
      }
   }

   public JobId<X509Certificate> generateKeyPair(
      Goid var1, String var2, @Nullable SsgKeyMetadata var3, X500Principal var4, int var5, int var6, boolean var7, String var8
   ) throws FindException, GeneralSecurityException {
      this.c();
      PrivateKeyAdminHelper var9 = this.f();
      return this.registerJob(var9.doGenerateKeyPair(var1, var2, var3, var4, new KeyGenParams(var5), var6, var7, var8), X509Certificate.class);
   }

   public JobId<X509Certificate> generateEcKeyPair(
      Goid var1, String var2, @Nullable SsgKeyMetadata var3, X500Principal var4, String var5, int var6, boolean var7, String var8
   ) throws FindException, GeneralSecurityException {
      this.c();
      PrivateKeyAdminHelper var9 = this.f();
      return this.registerJob(var9.doGenerateKeyPair(var1, var2, var3, var4, new KeyGenParams(var5), var6, var7, var8), X509Certificate.class);
   }

   private SsgKeyMetadata a(Goid var1, @NotNull String var2, @Nullable SecurityZone var3) {
      try {
         if (var2 == null) {
            a(4);
         }
      } catch (IllegalArgumentException var4) {
         throw a(var4);
      }

      try {
         if (var3 == null) {
            return null;
         }
      } catch (IllegalArgumentException var5) {
         throw a(var5);
      }

      return new SsgKeyMetadata(var1, var2, var3);
   }

   public byte[] generateCSR(Goid var1, String var2, CertGenParams var3) throws FindException {
      this.c();

      SsgKeyFinder var4;
      try {
         var4 = this.k.findByPrimaryKey(var1);
      } catch (KeyStoreException var9) {
         String[] var11 = v;
         this.s.log(Level.WARNING, var11[92], var9);
         throw new FindException(var11[92], var9);
      } catch (ObjectNotFoundException var10) {
         String[] var7 = v;
         throw new FindException(var7[92], var10);
      }

      if (var4 != null) {
         SsgKeyStore var5 = var4.getKeyStore();

         try {
            CertificateRequest var6 = var5.makeCertificateSigningRequest(var2, var3);
            this.p.logAndAudit(SystemMessages.CERT_SIGNING_REQUEST, var3.getSubjectDn().getName());
            EventObject var10001 = new EventObject(var6);
            String var10002 = var3.getSubjectDn().getName();
            String[] var14 = v;
            this.addAuditEntry(var10001, var14[31] + var10002);
            return var6.getEncoded();
         } catch (Exception var8) {
            String[] var13 = v;
            this.s.log(Level.WARNING, var13[92], var8);
            throw new FindException(var13[25], var8);
         }
      } else {
         String[] var12 = v;
         this.s.log(Level.WARNING, var12[92]);
         throw new FindException(var12[92]);
      }
   }

   public String[] signCSR(Goid var1, String var2, byte[] var3, X500Principal var4, int var5, String var6, String var7) throws FindException, GeneralSecurityException {
      this.c();

      SsgKeyFinder var8;
      try {
         var8 = this.k.findByPrimaryKey(var1);
      } catch (KeyStoreException var22) {
         String[] var27 = v;
         this.s.log(Level.WARNING, var27[92], var22);
         throw new FindException(var27[92], var22);
      } catch (ObjectNotFoundException var23) {
         String[] var18 = v;
         throw new FindException(var18[92], var23);
      }

      if (var8 != null) {
         SsgKeyStore var9 = var8.getKeyStore();
         SsgKeyEntry var10 = var9.getCertificateChain(var2);
         RsaSignerEngine var11 = JceProvider.getInstance().createRsaSignerEngine(var10.getPrivateKey(), var10.getCertificateChain());

         byte[] var13;
         try {
            var13 = CertUtils.csrPemToBinary(var3);
         } catch (IOException var21) {
            var13 = var3;
         }

         X509Certificate var12;
         try {
            CertGenParams var14 = new CertGenParams(var4, var5, false, var6);
            var14.setHashAlgorithm(var7);
            var12 = (X509Certificate)var11.createCertificate(var13, var14.useUserCertDefaults());
         } catch (GeneralSecurityException var19) {
            throw var19;
         } catch (Exception var20) {
            String var10002 = ExceptionUtils.getMessage(var20);
            String[] var29 = v;
            throw new SignatureException(var29[9] + var10002, var20);
         }

         X509Certificate[] var26 = var10.getCertificateChain();
         X509Certificate[] var15 = new X509Certificate[var26.length + 1];
         System.arraycopy(var26, 0, var15, 1, var26.length);
         var15[0] = var12;

         try {
            String[] var16 = new String[var15.length];
            int var17 = 0;

            try {
               while (var17 < var15.length) {
                  var16[var17] = CertUtils.encodeAsPEM(var15[var17]);
                  var17++;
               }
            } catch (KeyStoreException var24) {
               throw a(var24);
            }

            return var16;
         } catch (IOException var25) {
            throw new SignatureException(v[40] + ExceptionUtils.getMessage(var25), var25);
         }
      } else {
         String[] var28 = v;
         this.s.log(Level.WARNING, var28[92]);
         throw new FindException(var28[12]);
      }
   }

   public List<String> findImpactedKeysByUpdateKeyEntry(@NotNull SsgKeyEntry var1) throws UpdateException {
      try {
         if (var1 == null) {
            a(5);
         }
      } catch (UpdateException var2) {
         throw a(var2);
      }

      try {
         this.c();
         if (this.a(var1)) {
            return this.f().findImpactedKeysByReplaceCertChain(var1.getKeystoreId(), var1.getAlias(), var1.getCertificateChain());
         }
      } catch (UpdateException var3) {
         throw a(var3);
      }

      return new ArrayList<>();
   }

   public final void updateKeyEntry(@NotNull SsgKeyEntry var1) throws UpdateException {
      try {
         if (var1 == null) {
            a(6);
         }
      } catch (UpdateException var2) {
         throw a(var2);
      }

      this.updateKeyEntry(var1, false);
   }

   public void updateKeyEntry(@NotNull SsgKeyEntry var1, boolean var2) throws UpdateException {
      try {
         if (var1 == null) {
            a(7);
         }
      } catch (FindException var7) {
         throw a(var7);
      }

      this.c();

      try {
         if (this.a(var1)) {
            this.f().doUpdateCertificateChain(var1.getKeystoreId(), var1.getAlias(), var1.getCertificateChain(), var2);
         }

         SsgKeyEntry var3 = this.f().doFindKeyEntry(var1.getAlias(), var1.getKeystoreId());

         try {
            if (!ObjectUtils.equals(var3.getKeyMetadata(), var1.getKeyMetadata())) {
               this.f().doUpdateKeyMetadata(var1.getKeystoreId(), var1.getAlias(), var1.getKeyMetadata());
            }
         } catch (FindException var4) {
            throw a(var4);
         }
      } catch (FindException | KeyStoreException var5) {
         throw new UpdateException(v[95], var5);
      } catch (UpdateException var6) {
         this.s.log(Level.WARNING, ExceptionUtils.getMessage(var6), ExceptionUtils.getDebugException(var6));
         throw var6;
      }
   }

   private boolean a(@NotNull SsgKeyEntry var1) throws UpdateException {
      try {
         if (var1 == null) {
            a(8);
         }
      } catch (CertificateException var11) {
         throw a(var11);
      }

      X509Certificate[] var2 = var1.getCertificateChain();

      for (int var3 = 0; var3 < var2.length; var3++) {
         X509Certificate var4 = var1.getCertificateChain()[var3];

         try {
            var2[var3] = CertUtils.decodeCert(var4.getEncoded());
         } catch (CertificateException var8) {
            this.s.log(Level.INFO, ExceptionUtils.getMessage(var8), ExceptionUtils.getDebugException(var8));
            String[] var7 = v;
            throw new UpdateException(var7[59], var8);
         }
      }

      try {
         SsgKeyEntry var12 = this.f().doFindKeyEntry(var1.getAlias(), var1.getKeystoreId());
         X509Certificate[] var13 = var12.getCertificateChain();
         boolean var5 = false;
         if (var2.length == var13.length) {
            int var6 = 0;

            while (true) {
               try {
                  if (var6 >= var13.length) {
                     return var5;
                  }

                  if (!CertUtils.certsAreEqual(var13[var6], var2[var6])) {
                     break;
                  }
               } catch (CertificateException var9) {
                  throw a(var9);
               }

               var6++;
            }

            var5 = true;
         } else {
            var5 = true;
         }

         return var5;
      } catch (FindException | KeyStoreException var10) {
         throw new UpdateException(v[15], var10);
      }
   }

   public List<String> findImpactedKeysByImportKey(
      Goid var1, String var2, @Nullable byte[] var3, String var4, @Nullable char[] var5, char[] var6, @Nullable String var7
   ) throws GeneralSecurityException, SaveException, AliasNotFoundException, MultipleAliasesException {
      this.c();

      try {
         return this.f().findImpactedKeysByImportKey(var1, var2, var3, var4, var5, var6, var7);
      } catch (IOException var21) {
         throw new KeyStoreException(ExceptionUtils.getMessage(var21), var21);
      } catch (NoSuchAlgorithmException | CertificateException | UnrecoverableKeyException var22) {
         throw new KeyStoreException(var22);
      } catch (NoSuchProviderException var23) {
         this.s.log(Level.WARNING, ExceptionUtils.getDebugException(var23), () -> v[72] + ExceptionUtils.getMessage(var23));
         throw new KeyStoreException(var23);
      } finally {
         try {
            if (var3 != null) {
               ArrayUtils.zero(var3);
            }
         } catch (IOException var25) {
            throw a(var25);
         }

         try {
            if (var5 != null) {
               ArrayUtils.zero(var5);
            }
         } catch (IOException var20) {
            throw a(var20);
         }

         try {
            if (var6 != null) {
               ArrayUtils.zero(var6);
            }
         } catch (IOException var24) {
            throw a(var24);
         }
      }
   }

   public final SsgKeyEntry importKeyFromKeyStoreFile(
      Goid var1, String var2, @Nullable SsgKeyMetadata var3, byte[] var4, String var5, @Nullable char[] var6, @Nullable char[] var7, String var8
   ) throws FindException, SaveException, KeyStoreException, MultipleAliasesException, AliasNotFoundException {
      return this.importKeyFromKeyStoreFile(var1, var2, var3, var4, var5, var6, var7, var8, false);
   }

   public String getSubjectDNBeforeImport(Goid var1, String var2, byte[] var3, String var4, @Nullable char[] var5, @Nullable char[] var6, String var7) throws SaveException, KeyStoreException, MultipleAliasesException, AliasNotFoundException {
      try {
         this.c();
         PrivateKeyAdminHelper var8 = this.f();
         return var8.getSubjectDNBeforeImport(var1, var2, var3, var4, var5, var6, var7);
      } catch (IOException var22) {
         throw new KeyStoreException(ExceptionUtils.getMessage(var22), var22);
      } catch (NoSuchAlgorithmException | CertificateException | UnrecoverableKeyException var23) {
         throw new KeyStoreException(var23);
      } catch (NoSuchProviderException var24) {
         this.s.log(Level.WARNING, ExceptionUtils.getDebugException(var24), () -> v[72] + ExceptionUtils.getMessage(var24));
         throw new KeyStoreException(var24);
      } finally {
         try {
            if (var3 != null) {
               ArrayUtils.zero(var3);
            }
         } catch (IOException var26) {
            throw a(var26);
         }

         try {
            if (var5 != null) {
               ArrayUtils.zero(var5);
            }
         } catch (IOException var21) {
            throw a(var21);
         }

         try {
            if (var6 != null) {
               ArrayUtils.zero(var6);
            }
         } catch (IOException var25) {
            throw a(var25);
         }
      }
   }

   public SsgKeyEntry importKeyFromKeyStoreFile(
      Goid var1, String var2, @Nullable SsgKeyMetadata var3, byte[] var4, String var5, @Nullable char[] var6, @Nullable char[] var7, String var8, boolean var9
   ) throws FindException, SaveException, KeyStoreException, MultipleAliasesException, AliasNotFoundException {
      try {
         this.c();
         PrivateKeyAdminHelper var10 = this.f();
         return var10.doImportKeyFromKeyStoreFile(var1, var2, var3, var4, var5, var6, var7, var8, var9);
      } catch (IOException var25) {
         throw new KeyStoreException(ExceptionUtils.getMessage(var25), var25);
      } catch (NoSuchAlgorithmException | CertificateException | UnrecoverableKeyException | ExecutionException var26) {
         throw new KeyStoreException(var26);
      } catch (NoSuchProviderException var27) {
         this.s.log(Level.WARNING, ExceptionUtils.getDebugException(var27), () -> v[83] + ExceptionUtils.getMessage(var27));
         throw new KeyStoreException(var27);
      } catch (InterruptedException var28) {
         Thread.currentThread().interrupt();
         throw new KeyStoreException(var28);
      } finally {
         try {
            if (var4 != null) {
               ArrayUtils.zero(var4);
            }
         } catch (IOException var30) {
            throw a(var30);
         }

         try {
            if (var6 != null) {
               ArrayUtils.zero(var6);
            }
         } catch (IOException var24) {
            throw a(var24);
         }

         try {
            if (var7 != null) {
               ArrayUtils.zero(var7);
            }
         } catch (IOException var29) {
            throw a(var29);
         }
      }
   }

   public byte[] exportKey(Goid var1, String var2, String var3, char[] var4) throws FindException, KeyStoreException, UnrecoverableKeyException {
      this.c();
      PrivateKeyAdminHelper var5 = this.f();
      return var5.doExportKeyAsPkcs12(var1, var2, var3, var4);
   }

   public SsgKeyEntry findDefaultKey(SpecialKeyType var1) throws KeyStoreException {
      IOException var2;
      label45: {
         label44: {
            try {
               switch (com.l7tech.server.admin.p.a[var1.ordinal()]) {
                  case 1:
                     try {
                        return this.i.getSslInfo();
                     } catch (IOException var6) {
                        var2 = var6;
                        break label45;
                     }
                  case 2:
                     break;
                  case 3:
                     break label44;
                  case 4:
                     return this.i.getCaInfo();
                  case 5:
                     return this.i.getAuditViewerInfo();
                  case 6:
                     return this.i.getAuditSigningInfo();
                  default:
                     throw new IllegalArgumentException(v[1] + var1);
               }
            } catch (KeyStoreException var7) {
               throw a(var7);
            }

            try {
               return this.i.getServerSslInfo();
            } catch (IOException var5) {
               String var10 = ExceptionUtils.getMessage(var5);
               String[] var8 = v;
               throw new KeyStoreException(var8[94] + var10, var5);
            }
         }

         try {
            return this.i.getClientSslInfo();
         } catch (IOException var4) {
            String var10002 = ExceptionUtils.getMessage(var4);
            String[] var3 = v;
            throw new KeyStoreException(var3[30] + var10002, var4);
         }
      }

      String var11 = ExceptionUtils.getMessage(var2);
      String[] var9 = v;
      throw new KeyStoreException(var9[42] + var11, var2);
   }

   public boolean isDefaultKeyMutable(SpecialKeyType var1) {
      label30: {
         label29: {
            label28: {
               label27: {
                  try {
                     switch (com.l7tech.server.admin.p.a[var1.ordinal()]) {
                        case 1:
                           return v[24].equals(SyspropUtil.getString(v[62], v[64]));
                        case 2:
                           break label30;
                        case 3:
                           break label29;
                        case 4:
                           break label28;
                        case 5:
                           break label27;
                        case 6:
                           break;
                        default:
                           return false;
                     }
                  } catch (IllegalArgumentException var3) {
                     throw a(var3);
                  }

                  String[] var2 = v;
                  return var2[64].equals(SyspropUtil.getString(var2[56], var2[64]));
               }

               String[] var4 = v;
               return var4[64].equals(SyspropUtil.getString(var4[90], var4[64]));
            }

            String[] var5 = v;
            return var5[64].equals(SyspropUtil.getString(var5[6], var5[64]));
         }

         String[] var6 = v;
         return var6[64].equals(SyspropUtil.getString(var6[13], var6[64]));
      }

      String[] var7 = v;
      return var7[64].equals(SyspropUtil.getString(var7[88], var7[64]));
   }

   public void setDefaultKey(SpecialKeyType param1, Goid param2, String param3) throws UpdateException {
      // $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:
      // 000: aload 1
      // 001: ifnonnull 015
      // 004: new java/lang/NullPointerException
      // 007: dup
      // 008: getstatic com/l7tech/server/admin/TrustedCertAdminImpl.v [Ljava/lang/String;
      // 00b: bipush 2
      // 00c: aaload
      // 00d: invokespecial java/lang/NullPointerException.<init> (Ljava/lang/String;)V
      // 010: athrow
      // 011: invokestatic com/l7tech/server/admin/TrustedCertAdminImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 014: athrow
      // 015: aload 2
      // 016: invokestatic com/l7tech/objectmodel/Goid.isDefault (Lcom/l7tech/objectmodel/Goid;)Z
      // 019: ifeq 02d
      // 01c: new java/lang/IllegalArgumentException
      // 01f: dup
      // 020: getstatic com/l7tech/server/admin/TrustedCertAdminImpl.v [Ljava/lang/String;
      // 023: bipush 0
      // 024: aaload
      // 025: invokespecial java/lang/IllegalArgumentException.<init> (Ljava/lang/String;)V
      // 028: athrow
      // 029: invokestatic com/l7tech/server/admin/TrustedCertAdminImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 02c: athrow
      // 02d: aload 0
      // 02e: aload 1
      // 02f: invokevirtual com/l7tech/server/admin/TrustedCertAdminImpl.isDefaultKeyMutable (Lcom/l7tech/gateway/common/security/SpecialKeyType;)Z
      // 032: ifne 057
      // 035: new java/lang/IllegalArgumentException
      // 038: dup
      // 039: aload 1
      // 03a: invokestatic java/lang/String.valueOf (Ljava/lang/Object;)Ljava/lang/String;
      // 03d: getstatic com/l7tech/server/admin/TrustedCertAdminImpl.v [Ljava/lang/String;
      // 040: bipush 81
      // 042: aaload
      // 043: swap
      // 044: getstatic com/l7tech/server/admin/TrustedCertAdminImpl.v [Ljava/lang/String;
      // 047: bipush 33
      // 049: aaload
      // 04a: invokedynamic makeConcatWithConstants (Ljava/lang/String;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\u0001" ]
      // 04f: invokespecial java/lang/IllegalArgumentException.<init> (Ljava/lang/String;)V
      // 052: athrow
      // 053: invokestatic com/l7tech/server/admin/TrustedCertAdminImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 056: athrow
      // 057: aload 1
      // 058: invokestatic com/l7tech/server/admin/PrivateKeyAdminHelper.getClusterPropertyForSpecialKeyType (Lcom/l7tech/gateway/common/security/SpecialKeyType;)Ljava/lang/String;
      // 05b: astore 4
      // 05d: aload 0
      // 05e: getfield com/l7tech/server/admin/TrustedCertAdminImpl.k Lcom/l7tech/server/security/keystore/SsgKeyStoreManager;
      // 061: aload 3
      // 062: aload 2
      // 063: invokeinterface com/l7tech/server/security/keystore/SsgKeyStoreManager.lookupKeyByKeyAlias (Ljava/lang/String;Lcom/l7tech/objectmodel/Goid;)Lcom/l7tech/gateway/common/security/keystore/SsgKeyEntry; 3
      // 068: astore 5
      // 06a: aload 5
      // 06c: invokevirtual com/l7tech/gateway/common/security/keystore/SsgKeyEntry.getKeystoreId ()Lcom/l7tech/objectmodel/Goid;
      // 06f: invokestatic java/lang/String.valueOf (Ljava/lang/Object;)Ljava/lang/String;
      // 072: aload 5
      // 074: invokevirtual com/l7tech/gateway/common/security/keystore/SsgKeyEntry.getAlias ()Ljava/lang/String;
      // 077: 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" ]
      // 07c: astore 6
      // 07e: aload 0
      // 07f: getfield com/l7tech/server/admin/TrustedCertAdminImpl.n Lcom/l7tech/server/cluster/ClusterPropertyManager;
      // 082: aload 4
      // 084: invokeinterface com/l7tech/server/cluster/ClusterPropertyManager.findByUniqueName (Ljava/lang/String;)Lcom/l7tech/objectmodel/PersistentEntity; 2
      // 089: checkcast com/l7tech/gateway/common/cluster/ClusterProperty
      // 08c: astore 7
      // 08e: aload 7
      // 090: ifnonnull 0af
      // 093: new com/l7tech/gateway/common/cluster/ClusterProperty
      // 096: dup
      // 097: aload 4
      // 099: aload 6
      // 09b: invokespecial com/l7tech/gateway/common/cluster/ClusterProperty.<init> (Ljava/lang/String;Ljava/lang/String;)V
      // 09e: astore 7
      // 0a0: aload 0
      // 0a1: getfield com/l7tech/server/admin/TrustedCertAdminImpl.n Lcom/l7tech/server/cluster/ClusterPropertyManager;
      // 0a4: aload 7
      // 0a6: invokeinterface com/l7tech/server/cluster/ClusterPropertyManager.save (Lcom/l7tech/objectmodel/PersistentEntity;)Lcom/l7tech/objectmodel/Goid; 2
      // 0ab: pop
      // 0ac: goto 0c1
      // 0af: aload 7
      // 0b1: aload 6
      // 0b3: invokevirtual com/l7tech/gateway/common/cluster/ClusterProperty.setValue (Ljava/lang/String;)V
      // 0b6: aload 0
      // 0b7: getfield com/l7tech/server/admin/TrustedCertAdminImpl.n Lcom/l7tech/server/cluster/ClusterPropertyManager;
      // 0ba: aload 7
      // 0bc: invokeinterface com/l7tech/server/cluster/ClusterPropertyManager.update (Lcom/l7tech/objectmodel/PersistentEntity;)V 2
      // 0c1: getstatic com/l7tech/gateway/common/security/SpecialKeyType.SSL Lcom/l7tech/gateway/common/security/SpecialKeyType;
      // 0c4: invokestatic com/l7tech/server/admin/PrivateKeyAdminHelper.getClusterPropertyForSpecialKeyType (Lcom/l7tech/gateway/common/security/SpecialKeyType;)Ljava/lang/String;
      // 0c7: astore 8
      // 0c9: aload 0
      // 0ca: getfield com/l7tech/server/admin/TrustedCertAdminImpl.n Lcom/l7tech/server/cluster/ClusterPropertyManager;
      // 0cd: aload 8
      // 0cf: invokeinterface com/l7tech/server/cluster/ClusterPropertyManager.findByUniqueName (Ljava/lang/String;)Lcom/l7tech/objectmodel/PersistentEntity; 2
      // 0d4: checkcast com/l7tech/gateway/common/cluster/ClusterProperty
      // 0d7: astore 9
      // 0d9: getstatic com/l7tech/gateway/common/security/SpecialKeyType.SERVER_SSL Lcom/l7tech/gateway/common/security/SpecialKeyType;
      // 0dc: invokestatic com/l7tech/server/admin/PrivateKeyAdminHelper.getClusterPropertyForSpecialKeyType (Lcom/l7tech/gateway/common/security/SpecialKeyType;)Ljava/lang/String;
      // 0df: astore 10
      // 0e1: aload 0
      // 0e2: getfield com/l7tech/server/admin/TrustedCertAdminImpl.n Lcom/l7tech/server/cluster/ClusterPropertyManager;
      // 0e5: aload 10
      // 0e7: invokeinterface com/l7tech/server/cluster/ClusterPropertyManager.findByUniqueName (Ljava/lang/String;)Lcom/l7tech/objectmodel/PersistentEntity; 2
      // 0ec: checkcast com/l7tech/gateway/common/cluster/ClusterProperty
      // 0ef: astore 11
      // 0f1: getstatic com/l7tech/gateway/common/security/SpecialKeyType.CLIENT_SSL Lcom/l7tech/gateway/common/security/SpecialKeyType;
      // 0f4: invokestatic com/l7tech/server/admin/PrivateKeyAdminHelper.getClusterPropertyForSpecialKeyType (Lcom/l7tech/gateway/common/security/SpecialKeyType;)Ljava/lang/String;
      // 0f7: astore 12
      // 0f9: aload 0
      // 0fa: getfield com/l7tech/server/admin/TrustedCertAdminImpl.n Lcom/l7tech/server/cluster/ClusterPropertyManager;
      // 0fd: aload 12
      // 0ff: invokeinterface com/l7tech/server/cluster/ClusterPropertyManager.findByUniqueName (Ljava/lang/String;)Lcom/l7tech/objectmodel/PersistentEntity; 2
      // 104: checkcast com/l7tech/gateway/common/cluster/ClusterProperty
      // 107: astore 13
      // 109: aload 1
      // 10a: getstatic com/l7tech/gateway/common/security/SpecialKeyType.SSL Lcom/l7tech/gateway/common/security/SpecialKeyType;
      // 10d: invokevirtual com/l7tech/gateway/common/security/SpecialKeyType.equals (Ljava/lang/Object;)Z
      // 110: ifeq 180
      // 113: aload 11
      // 115: ifnonnull 13b
      // 118: goto 11f
      // 11b: invokestatic com/l7tech/server/admin/TrustedCertAdminImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 11e: athrow
      // 11f: new com/l7tech/gateway/common/cluster/ClusterProperty
      // 122: dup
      // 123: aload 10
      // 125: aload 6
      // 127: invokespecial com/l7tech/gateway/common/cluster/ClusterProperty.<init> (Ljava/lang/String;Ljava/lang/String;)V
      // 12a: astore 11
      // 12c: aload 0
      // 12d: getfield com/l7tech/server/admin/TrustedCertAdminImpl.n Lcom/l7tech/server/cluster/ClusterPropertyManager;
      // 130: aload 11
      // 132: invokeinterface com/l7tech/server/cluster/ClusterPropertyManager.save (Lcom/l7tech/objectmodel/PersistentEntity;)Lcom/l7tech/objectmodel/Goid; 2
      // 137: pop
      // 138: goto 14d
      // 13b: aload 11
      // 13d: aload 6
      // 13f: invokevirtual com/l7tech/gateway/common/cluster/ClusterProperty.setValue (Ljava/lang/String;)V
      // 142: aload 0
      // 143: getfield com/l7tech/server/admin/TrustedCertAdminImpl.n Lcom/l7tech/server/cluster/ClusterPropertyManager;
      // 146: aload 11
      // 148: invokeinterface com/l7tech/server/cluster/ClusterPropertyManager.update (Lcom/l7tech/objectmodel/PersistentEntity;)V 2
      // 14d: aload 13
      // 14f: ifnonnull 16e
      // 152: new com/l7tech/gateway/common/cluster/ClusterProperty
      // 155: dup
      // 156: aload 12
      // 158: aload 6
      // 15a: invokespecial com/l7tech/gateway/common/cluster/ClusterProperty.<init> (Ljava/lang/String;Ljava/lang/String;)V
      // 15d: astore 13
      // 15f: aload 0
      // 160: getfield com/l7tech/server/admin/TrustedCertAdminImpl.n Lcom/l7tech/server/cluster/ClusterPropertyManager;
      // 163: aload 13
      // 165: invokeinterface com/l7tech/server/cluster/ClusterPropertyManager.save (Lcom/l7tech/objectmodel/PersistentEntity;)Lcom/l7tech/objectmodel/Goid; 2
      // 16a: pop
      // 16b: goto 180
      // 16e: aload 13
      // 170: aload 6
      // 172: invokevirtual com/l7tech/gateway/common/cluster/ClusterProperty.setValue (Ljava/lang/String;)V
      // 175: aload 0
      // 176: getfield com/l7tech/server/admin/TrustedCertAdminImpl.n Lcom/l7tech/server/cluster/ClusterPropertyManager;
      // 179: aload 13
      // 17b: invokeinterface com/l7tech/server/cluster/ClusterPropertyManager.update (Lcom/l7tech/objectmodel/PersistentEntity;)V 2
      // 180: aload 1
      // 181: getstatic com/l7tech/gateway/common/security/SpecialKeyType.SERVER_SSL Lcom/l7tech/gateway/common/security/SpecialKeyType;
      // 184: invokevirtual com/l7tech/gateway/common/security/SpecialKeyType.equals (Ljava/lang/Object;)Z
      // 187: ifne 19b
      // 18a: aload 1
      // 18b: getstatic com/l7tech/gateway/common/security/SpecialKeyType.CLIENT_SSL Lcom/l7tech/gateway/common/security/SpecialKeyType;
      // 18e: invokevirtual com/l7tech/gateway/common/security/SpecialKeyType.equals (Ljava/lang/Object;)Z
      // 191: ifeq 2d9
      // 194: goto 19b
      // 197: invokestatic com/l7tech/server/admin/TrustedCertAdminImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 19a: athrow
      // 19b: aload 11
      // 19d: ifnonnull 1b7
      // 1a0: goto 1a7
      // 1a3: invokestatic com/l7tech/server/admin/TrustedCertAdminImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 1a6: athrow
      // 1a7: aload 0
      // 1a8: getfield com/l7tech/server/admin/TrustedCertAdminImpl.n Lcom/l7tech/server/cluster/ClusterPropertyManager;
      // 1ab: aload 10
      // 1ad: invokeinterface com/l7tech/server/cluster/ClusterPropertyManager.findByUniqueName (Ljava/lang/String;)Lcom/l7tech/objectmodel/PersistentEntity; 2
      // 1b2: checkcast com/l7tech/gateway/common/cluster/ClusterProperty
      // 1b5: astore 11
      // 1b7: aload 13
      // 1b9: ifnonnull 1cc
      // 1bc: aload 0
      // 1bd: getfield com/l7tech/server/admin/TrustedCertAdminImpl.n Lcom/l7tech/server/cluster/ClusterPropertyManager;
      // 1c0: aload 12
      // 1c2: invokeinterface com/l7tech/server/cluster/ClusterPropertyManager.findByUniqueName (Ljava/lang/String;)Lcom/l7tech/objectmodel/PersistentEntity; 2
      // 1c7: checkcast com/l7tech/gateway/common/cluster/ClusterProperty
      // 1ca: astore 13
      // 1cc: aload 11
      // 1ce: ifnull 2d9
      // 1d1: aload 13
      // 1d3: ifnull 2d9
      // 1d6: goto 1dd
      // 1d9: invokestatic com/l7tech/server/admin/TrustedCertAdminImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 1dc: athrow
      // 1dd: aload 11
      // 1df: invokevirtual com/l7tech/gateway/common/cluster/ClusterProperty.getValue ()Ljava/lang/String;
      // 1e2: astore 14
      // 1e4: aload 13
      // 1e6: invokevirtual com/l7tech/gateway/common/cluster/ClusterProperty.getValue ()Ljava/lang/String;
      // 1e9: astore 15
      // 1eb: aload 14
      // 1ed: ifnull 228
      // 1f0: aload 14
      // 1f2: invokevirtual java/lang/String.trim ()Ljava/lang/String;
      // 1f5: invokevirtual java/lang/String.isEmpty ()Z
      // 1f8: ifne 228
      // 1fb: goto 202
      // 1fe: invokestatic com/l7tech/server/admin/TrustedCertAdminImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 201: athrow
      // 202: aload 15
      // 204: ifnull 228
      // 207: goto 20e
      // 20a: invokestatic com/l7tech/server/admin/TrustedCertAdminImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 20d: athrow
      // 20e: aload 15
      // 210: invokevirtual java/lang/String.trim ()Ljava/lang/String;
      // 213: invokevirtual java/lang/String.isEmpty ()Z
      // 216: ifne 228
      // 219: goto 220
      // 21c: invokestatic com/l7tech/server/admin/TrustedCertAdminImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 21f: athrow
      // 220: bipush 1
      // 221: goto 229
      // 224: invokestatic com/l7tech/server/admin/TrustedCertAdminImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 227: athrow
      // 228: bipush 0
      // 229: istore 16
      // 22b: iload 16
      // 22d: ifeq 249
      // 230: aload 14
      // 232: aload 15
      // 234: invokevirtual java/lang/String.equals (Ljava/lang/Object;)Z
      // 237: ifeq 249
      // 23a: goto 241
      // 23d: invokestatic com/l7tech/server/admin/TrustedCertAdminImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 240: athrow
      // 241: bipush 1
      // 242: goto 24a
      // 245: invokestatic com/l7tech/server/admin/TrustedCertAdminImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 248: athrow
      // 249: bipush 0
      // 24a: istore 17
      // 24c: iload 17
      // 24e: ifeq 28e
      // 251: aload 9
      // 253: ifnonnull 279
      // 256: goto 25d
      // 259: invokestatic com/l7tech/server/admin/TrustedCertAdminImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 25c: athrow
      // 25d: new com/l7tech/gateway/common/cluster/ClusterProperty
      // 260: dup
      // 261: aload 8
      // 263: aload 14
      // 265: invokespecial com/l7tech/gateway/common/cluster/ClusterProperty.<init> (Ljava/lang/String;Ljava/lang/String;)V
      // 268: astore 9
      // 26a: aload 0
      // 26b: getfield com/l7tech/server/admin/TrustedCertAdminImpl.n Lcom/l7tech/server/cluster/ClusterPropertyManager;
      // 26e: aload 9
      // 270: invokeinterface com/l7tech/server/cluster/ClusterPropertyManager.save (Lcom/l7tech/objectmodel/PersistentEntity;)Lcom/l7tech/objectmodel/Goid; 2
      // 275: pop
      // 276: goto 2d9
      // 279: aload 9
      // 27b: aload 14
      // 27d: invokevirtual com/l7tech/gateway/common/cluster/ClusterProperty.setValue (Ljava/lang/String;)V
      // 280: aload 0
      // 281: getfield com/l7tech/server/admin/TrustedCertAdminImpl.n Lcom/l7tech/server/cluster/ClusterPropertyManager;
      // 284: aload 9
      // 286: invokeinterface com/l7tech/server/cluster/ClusterPropertyManager.update (Lcom/l7tech/objectmodel/PersistentEntity;)V 2
      // 28b: goto 2d9
      // 28e: iload 16
      // 290: ifeq 2d9
      // 293: aload 9
      // 295: ifnonnull 2c3
      // 298: goto 29f
      // 29b: invokestatic com/l7tech/server/admin/TrustedCertAdminImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 29e: athrow
      // 29f: new com/l7tech/gateway/common/cluster/ClusterProperty
      // 2a2: dup
      // 2a3: aload 8
      // 2a5: getstatic com/l7tech/server/admin/TrustedCertAdminImpl.v [Ljava/lang/String;
      // 2a8: astore 18
      // 2aa: aload 18
      // 2ac: bipush 17
      // 2ae: aaload
      // 2af: invokespecial com/l7tech/gateway/common/cluster/ClusterProperty.<init> (Ljava/lang/String;Ljava/lang/String;)V
      // 2b2: astore 9
      // 2b4: aload 0
      // 2b5: getfield com/l7tech/server/admin/TrustedCertAdminImpl.n Lcom/l7tech/server/cluster/ClusterPropertyManager;
      // 2b8: aload 9
      // 2ba: invokeinterface com/l7tech/server/cluster/ClusterPropertyManager.save (Lcom/l7tech/objectmodel/PersistentEntity;)Lcom/l7tech/objectmodel/Goid; 2
      // 2bf: pop
      // 2c0: goto 2d9
      // 2c3: aload 9
      // 2c5: getstatic com/l7tech/server/admin/TrustedCertAdminImpl.v [Ljava/lang/String;
      // 2c8: bipush 73
      // 2ca: aaload
      // 2cb: invokevirtual com/l7tech/gateway/common/cluster/ClusterProperty.setValue (Ljava/lang/String;)V
      // 2ce: aload 0
      // 2cf: getfield com/l7tech/server/admin/TrustedCertAdminImpl.n Lcom/l7tech/server/cluster/ClusterPropertyManager;
      // 2d2: aload 9
      // 2d4: invokeinterface com/l7tech/server/cluster/ClusterPropertyManager.update (Lcom/l7tech/objectmodel/PersistentEntity;)V 2
      // 2d9: goto 2e8
      // 2dc: astore 5
      // 2de: new com/l7tech/objectmodel/UpdateException
      // 2e1: dup
      // 2e2: aload 5
      // 2e4: invokespecial com/l7tech/objectmodel/UpdateException.<init> (Ljava/lang/Throwable;)V
      // 2e7: athrow
      // 2e8: return
      // try (274 -> 278): 279 com/l7tech/objectmodel/FindException
      // try (247 -> 251): 252 com/l7tech/objectmodel/FindException
      // try (234 -> 243): 243 com/l7tech/objectmodel/FindException
      // try (232 -> 238): 239 com/l7tech/objectmodel/FindException
      // try (219 -> 228): 228 com/l7tech/objectmodel/FindException
      // try (214 -> 223): 224 com/l7tech/objectmodel/FindException
      // try (207 -> 216): 217 com/l7tech/objectmodel/FindException
      // try (205 -> 211): 212 com/l7tech/objectmodel/FindException
      // try (192 -> 196): 197 com/l7tech/objectmodel/FindException
      // try (166 -> 175): 176 com/l7tech/objectmodel/FindException
      // try (162 -> 170): 171 com/l7tech/objectmodel/FindException
      // try (113 -> 119): 120 com/l7tech/objectmodel/FindException
      // try (23 -> 41): 41 com/l7tech/objectmodel/FindException
      // try (11 -> 21): 21 com/l7tech/objectmodel/FindException
      // try (0 -> 9): 9 com/l7tech/objectmodel/FindException
      // try (46 -> 306): 307 com/l7tech/objectmodel/FindException
      // try (46 -> 306): 307 com/l7tech/objectmodel/SaveException
      // try (46 -> 306): 307 java/security/KeyStoreException
   }

   public List<SecurePassword> findAllSecurePasswords() throws FindException {
      ArrayList var1 = new ArrayList();

      for (SecurePassword var4 : this.m.findAll()) {
         var4.setEncodedPassword(null);
         var1.add(var4);
      }

      return var1;
   }

   public SecurePassword findSecurePasswordById(Goid var1) throws FindException {
      return (SecurePassword)this.m.findByPrimaryKey(var1);
   }

   public SecurePassword findSecurePasswordByName(String var1) throws FindException {
      return (SecurePassword)this.m.findByUniqueName(var1);
   }

   public Goid saveSecurePassword(SecurePassword var1) throws UpdateException, SaveException, FindException {
      try {
         if (Goid.isDefault(var1.getGoid())) {
            return this.a(var1);
         }
      } catch (UpdateException var2) {
         throw a(var2);
      }

      return this.b(var1);
   }

   private Goid a(SecurePassword var1) throws SaveException {
      var1.setEncodedPassword("");
      var1.setLastUpdate(0L);
      return this.m.save(var1);
   }

   private Goid b(SecurePassword var1) throws FindException, UpdateException {
      Goid var2 = var1.getGoid();
      SecurePassword var3 = (SecurePassword)this.m.findByPrimaryKey(var2);

      try {
         if (var3 == null) {
            throw new ObjectNotFoundException(v[23] + var2);
         }
      } catch (FindException var4) {
         throw a(var4);
      }

      var1.setEncodedPassword(var3.getEncodedPassword());
      this.m.update(var1);
      return var2;
   }

   public void setSecurePassword(Goid var1, char[] var2) throws FindException, UpdateException {
      SecurePassword var3 = (SecurePassword)this.m.findByPrimaryKey(var1);

      try {
         if (var3 == null) {
            throw new ObjectNotFoundException();
         }
      } catch (FindException var4) {
         throw a(var4);
      }

      var3.setEncodedPassword(this.m.encryptPassword(var2));
      var3.setLastUpdate(System.currentTimeMillis());
      this.m.update(var3);
   }

   public JobId<Boolean> setGeneratedSecurePassword(Goid param1, int param2) throws FindException, UpdateException {
      // $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: iload 2
      // 01: sipush 512
      // 04: if_icmplt 15
      // 07: iload 2
      // 08: sipush 16384
      // 0b: if_icmple 2e
      // 0e: goto 15
      // 11: invokestatic com/l7tech/server/admin/TrustedCertAdminImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 14: athrow
      // 15: new com/l7tech/objectmodel/UpdateException
      // 18: dup
      // 19: iload 2
      // 1a: getstatic com/l7tech/server/admin/TrustedCertAdminImpl.v [Ljava/lang/String;
      // 1d: bipush 7
      // 1f: aaload
      // 20: swap
      // 21: 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" ]
      // 26: invokespecial com/l7tech/objectmodel/UpdateException.<init> (Ljava/lang/String;)V
      // 29: athrow
      // 2a: invokestatic com/l7tech/server/admin/TrustedCertAdminImpl.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 2d: athrow
      // 2e: aload 0
      // 2f: aload 1
      // 30: getstatic com/l7tech/gateway/common/security/password/SecurePassword$SecurePasswordType.PEM_PRIVATE_KEY Lcom/l7tech/gateway/common/security/password/SecurePassword$SecurePasswordType;
      // 33: invokevirtual com/l7tech/server/admin/TrustedCertAdminImpl.a (Lcom/l7tech/objectmodel/Goid;Lcom/l7tech/gateway/common/security/password/SecurePassword$SecurePasswordType;)Lcom/l7tech/gateway/common/security/password/SecurePassword;
      // 36: pop
      // 37: new java/util/concurrent/FutureTask
      // 3a: dup
      // 3b: bipush 0
      // 3c: invokestatic com/l7tech/server/event/AdminInfo.find (Z)Lcom/l7tech/server/event/AdminInfo;
      // 3f: new com/l7tech/server/admin/o
      // 42: dup
      // 43: aload 0
      // 44: iload 2
      // 45: aload 1
      // 46: invokespecial com/l7tech/server/admin/o.<init> (Lcom/l7tech/server/admin/TrustedCertAdminImpl;ILcom/l7tech/objectmodel/Goid;)V
      // 49: invokevirtual com/l7tech/server/event/AdminInfo.wrapCallable (Ljava/util/concurrent/Callable;)Ljava/util/concurrent/Callable;
      // 4c: invokespecial java/util/concurrent/FutureTask.<init> (Ljava/util/concurrent/Callable;)V
      // 4f: astore 3
      // 50: new com/l7tech/server/admin/v
      // 53: dup
      // 54: aload 0
      // 55: aload 3
      // 56: invokespecial com/l7tech/server/admin/v.<init> (Lcom/l7tech/server/admin/TrustedCertAdminImpl;Ljava/util/concurrent/FutureTask;)V
      // 59: lconst_0
      // 5a: invokestatic com/l7tech/util/Background.scheduleOneShot (Ljava/util/TimerTask;J)V
      // 5d: aload 0
      // 5e: aload 3
      // 5f: ldc java/lang/Boolean
      // 61: invokevirtual com/l7tech/server/admin/TrustedCertAdminImpl.registerJob (Ljava/util/concurrent/Future;Ljava/lang/Class;)Lcom/l7tech/gateway/common/AsyncAdminMethods$JobId;
      // 64: areturn
      // try (0 -> 6): 7 com/l7tech/objectmodel/FindException
      // try (3 -> 19): 19 com/l7tech/objectmodel/FindException
   }

   private SecurePassword a(Goid var1, SecurePasswordType var2) throws FindException, UpdateException {
      SecurePassword var3 = (SecurePassword)this.m.findByPrimaryKey(var1);

      try {
         if (var3 == null) {
            throw new ObjectNotFoundException();
         }
      } catch (FindException var5) {
         throw a(var5);
      }

      try {
         if (var3.getType() != var2) {
            throw new UpdateException(v[41]);
         } else {
            return var3;
         }
      } catch (FindException var4) {
         throw a(var4);
      }
   }

   public String getSecurePasswordPublicKey(Goid var1) throws FindException {
      SecurePassword var2 = (SecurePassword)this.m.findByPrimaryKey(var1);

      try {
         if (var2 == null) {
            throw new ObjectNotFoundException();
         }
      } catch (Exception var8) {
         throw a(var8);
      }

      try {
         if (var2.getType() != SecurePasswordType.PEM_PRIVATE_KEY) {
            throw new FindException(v[65]);
         }
      } catch (Exception var6) {
         throw a(var6);
      }

      try {
         String var3 = var2.getEncodedPassword();
         if (var3 != null) {
            KeyPair var4 = PemUtils.doReadKeyPair(new String(this.m.decryptPassword(var3)));
            return PemUtils.writeKey(var4.getPublic(), true);
         }
      } catch (Exception var7) {
         String var10002 = ExceptionUtils.getMessage(var7);
         String[] var5 = v;
         throw new FindException(var5[78] + var10002);
      }

      throw new FindException(v[54]);
   }

   public void deleteSecurePassword(Goid var1) throws DeleteException, FindException {
      this.m.delete(var1);
   }

   public Map<String, Object> getCsrProperties(byte[] var1) {
      HashMap var2 = new HashMap();

      byte[] var3;
      try {
         var3 = CertUtils.csrPemToBinary(var1);
      } catch (IOException var14) {
         var3 = var1;
      }

      PKCS10CertificationRequest var4;
      try {
         var4 = new PKCS10CertificationRequest(var3);
      } catch (IOException var13) {
         String[] var11 = v;
         this.s.log(Level.WARNING, var11[89]);
         return null;
      }

      CertificationRequestInfo var5 = var4.toASN1Structure().getCertificationRequestInfo();
      String[] var23 = v;
      var2.put(var23[50], var5.getSubject().toString());

      try {
         List var6 = BouncyCastleCertUtils.extractSubjectAlternativeNamesFromCertRequest(var4);
         if (!var6.isEmpty()) {
            ArrayList var7 = new ArrayList();

            for (X509GeneralName var9 : var6) {
               var7.add(CertUtils.convertFromX509GeneralName(var9));
            }

            var23 = v;
            var2.put(var23[46], var7);
         }
      } catch (Exception var16) {
         var23 = v;
         this.s.log(Level.WARNING, var23[19]);
         return var2;
      }

      PublicKey var17;
      try {
         var17 = BouncyCastleRsaSignerEngine.getPublicKey(var4);
      } catch (Exception var12) {
         Logger var10000 = this.s;
         Level var10001 = Level.WARNING;
         String var10002 = ExceptionUtils.getMessage(var12);
         var23 = v;
         var10000.log(var10001, var23[79] + var10002);
         return var2;
      }

      if (var17 instanceof RSAPublicKey var18) {
         BigInteger var20 = var18.getModulus();
         var23 = v;
         var2.put(var23[70], var23[67]);
         var2.put(var23[68], String.valueOf(var20.bitLength()));
         var2.put(var23[57], var20.toString(16));
         var2.put(var23[38], var18.getPublicExponent().toString(16));
      } else if (var17 instanceof ECPublicKey var19) {
         ECParameterSpec var21 = var19.getParams();
         ECPoint var22 = var19.getW();
         String var10 = CertUtils.guessEcCurveName(var17);

         try {
            var2.put(v[71], v[22]);
            if (var10 != null) {
               var2.put(v[16], var10);
            }
         } catch (IOException var15) {
            throw a(var15);
         }

         var23 = v;
         var2.put(var23[55], String.valueOf(var21.getCurve().getField().getFieldSize()));
         var2.put(var23[87], var22.getAffineX().toString());
         var2.put(var23[82], var22.getAffineY().toString());
      } else {
         var2.put(v[71], var17.getAlgorithm());
      }

      return var2;
   }

   public boolean isShortSigningKey(Goid var1, String var2) throws FindException, KeyStoreException {
      this.c();

      SsgKeyFinder var3;
      try {
         var3 = this.k.findByPrimaryKey(var1);
      } catch (KeyStoreException var9) {
         String[] var11 = v;
         this.s.log(Level.WARNING, var11[61], var9);
         throw new FindException(var11[92], var9);
      } catch (ObjectNotFoundException var10) {
         String[] var8 = v;
         throw new FindException(var8[92], var10);
      }

      if (var3 != null) {
         SsgKeyStore var4 = var3.getKeyStore();
         SsgKeyEntry var5 = var4.getCertificateChain(var2);
         X509Certificate var6 = var5.getCertificateChain()[0];
         PublicKey var7 = var6.getPublicKey();
         return ParamsCertificateGenerator.isShortKey(var7);
      } else {
         String[] var12 = v;
         this.s.log(Level.WARNING, var12[92]);
         throw new FindException(var12[10]);
      }
   }

   public SsgKeyMetadata findKeyMetadata(Goid var1) throws FindException {
      return (SsgKeyMetadata)this.l.findByPrimaryKey(var1);
   }

   public Goid saveOrUpdateMetadata(@NotNull SsgKeyMetadata var1) throws SaveException {
      try {
         if (var1 == null) {
            a(9);
         }
      } catch (UpdateException var4) {
         throw a(var4);
      }

      try {
         if (Goid.isDefault(var1.getGoid())) {
            return this.l.save(var1);
         }
      } catch (UpdateException var5) {
         throw a(var5);
      }

      try {
         this.l.update(var1);
      } catch (UpdateException var3) {
         throw new SaveException(var3);
      }

      return var1.getGoid();
   }

   public void addAuditEntry(EventObject var1, String var2) {
      this.o.publishEvent(new DetailedAdminEvent(var1, var2));
   }

   public void setApplicationContext(ApplicationContext var1) throws BeansException {
      this.p = new Auditor(this, var1, this.s);
   }

   private TrustedCertManager d() {
      return this.t;
   }

   private RevocationCheckPolicyManager e() {
      return this.u;
   }

   public void validateCert(@NotNull TrustedCert var1) throws CertificateException {
      try {
         if (var1 == null) {
            a(10);
         }
      } catch (CertificateException var5) {
         throw a(var5);
      }

      label46: {
         try {
            if (!this.r.getBooleanProperty(v[26], false)) {
               return;
            }

            if (!var1.isTrustAnchor()) {
               break label46;
            }
         } catch (CertificateException var6) {
            throw a(var6);
         }

         CertificateValidationResult var2 = this.q
            .checkWithCcRequirements(
               new X509Certificate[]{var1.getCertificate()},
               CertificateValidationType.CERTIFICATE_ONLY,
               CertificateValidationType.CERTIFICATE_ONLY,
               CertValidationProcessor.Facility.OTHER,
               this.p,
               var1.isTrustAnchor()
            );

         try {
            if (var2 != CertificateValidationResult.OK) {
               throw new CertificateException(v[45] + var2.toString());
            }

            return;
         } catch (CertificateException var4) {
            throw a(var4);
         }
      }

      CertificateValidationResult var7 = this.q
         .checkWithCcRequirements(
            new X509Certificate[]{var1.getCertificate()},
            CertificateValidationType.PATH_VALIDATION,
            CertificateValidationType.REVOCATION,
            CertValidationProcessor.Facility.OTHER,
            this.p,
            var1.isTrustAnchor()
         );

      try {
         if (var7 != CertificateValidationResult.OK) {
            throw new CertificateException(v[58] + var7.toString());
         }
      } catch (CertificateException var3) {
         throw a(var3);
      }
   }

   PrivateKeyAdminHelper f() {
      return new PrivateKeyAdminHelper(this.i, this.k, this.o);
   }

   public void setApplicationEventPublisher(ApplicationEventPublisher var1) {
      this.o = var1;
   }

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

   static {
      String[] var5 = new String[96];
      int var3 = 0;
      String var2 = "\u001e\"6\u0005sdT9k&U}bD,v*\u0007s't\u001b\"(\u0000es\u001d=ge\u0006fb^6d,\u0010r)\u0011\u0011me\u0006cdU\u007fi \fB~M:8e\u001b\u001e\".\u0010oSD/ge\u0018ctI\u007f` UewX<k#\u001csc\u0010,g7\u0003\u007fdXeI \fEsR-g\f,g7\u0003su~0l#\u001cq,<m(Zz0I:a-ZebO)g7ZwcP6lj!drN+g!6suI\u001ef(\u001cxNP/n*<m([z0I:a-[ebO)g7[}bD\fv*\u0007s)Y:d$\u0000zs~>,$\u0019\u007ffN\u0011\u0016l3\u0014znY\u007fi \f6tT%ge\"\nl$\u0017zb\u001d+me\u0011skX+ge\u001es~\u0007\u007fi \fesR-ge\u001cr'\u001c\nl$\u0017zb\u001d+me\u0006\u007f`S\u007fa \u0007bn[6a$\u0001s=\u001d\u0014<c+\u001bys\u001d9k+\u00116lX&q1\u001adb!,g&\u0000dbm>q6\u0002yuY\u0012c+\u0014qbO\u007fk6UdbL*k7\u0010r\u0014<c+\u001bys\u001d9k+\u00116lX&q1\u001adb1<m([z0I:a-[ebO)g7[}bD\fv*\u0007s)Y:d$\u0000zs~3k \u001bbTN3,$\u0019\u007ffN\b\u0016l3\u0014znY\u007f%\nl$\u0017zb\u001d+me\u0007ssO6g3\u00106bE6q1\u001cx`\u001d4g<UsiI-{\u0018:ak\u0005ceQ6ak\u001es~\u0013<w7\u0003s)S>o \u0013r3\u007f!^Nn\u001bM\u0000&XHi\u001aZ\f&B\u001e\fq\">s~n+m7\u0010[fS>e \u00076nN\u007fp \u0004cnO:f0\nl$\u0017zb\u001d+me\u0012ss\u001d\fw'\u001fsdI\u007fC)\u0001suS>v,\u0003s's>o \u00066aO0oe6EU\u0014,c3\u0010Yuh/f$\u0001sJX+c!\u0014bfA\u0011me\u0011sa\\*n1UUF\u001d<g7\u0001\u007faT<c1\u00106nN\u007fa0\u0007dbS+n<UrbN6e+\u0014bbY\u007fm+UboT,\"\u0002\u0014bbJ>{\r\u001aAe\u0005ceQ6ae\u001es~\"\u0011me\u0006bhO:fe\u0005wtN(m7\u00116bE6q1\u00066pT+je<R'\u0005*l6\u0010b\u0010:p7\u001ad'P>i,\u001bq'~\fP\u001f+p0\u0006bbY\u001cg7\u00018q\\3k!\u0014bb~:p1\u001cpn^>v \u0016)c)\u001crfI:A \u0007bDU>k+3yu~< +p0\u0006bbY\u007fa \u0007b'P>l$\u0012su\u001d6qe\u0007svH6p \u0011\b4g<4zn\\,)\nl$\u0017zb\u001d+me\u001ats\\6le\u0011sa\\*n1UUkT:l1UETq\u007fi \f,'\u001b\u0018g+\u0010dfI:fe6EU\u0011\u007fQ0\u0017|b^+\"\u0001;,'\u001a\u0011me\u001es~N+m7\u00106aR*l!UanI7\"\f16.\u007fr7\u001c`fI:\".\u0010o'^>l+\u001ab'_:\"&\u001dwiZ:fe\u001ax'I7k6Ue~N+g([>\u001ep\"\u0000{bS+\"#\u001ad'}\u0011m1;ckQ\u007fr$\u0007wjX+g7U1\"Nx\"*\u00136\"Nq'6U{rN+\"+\u001ab'_:\"+\u0000zk\u001b\u0013k&\u0010xtX\u007fo$\u001bw`X-\",\u00066uX.w,\u0007sc\b4g<0xsO& 9k+\u0011_jM>a1\u0010rLX&q\u0007\fCwY>v >s~x1v7\f\u001e-q$[fr_3k&[}bDqr0\u0017zn^qg=\u0005yiX1v\u0010'7uLUbO+k#\u001cufI:q\u001c\nl$\u0017zb\u001d+me\u0006\u007f`S\u007fa \u0007bn[6a$\u0001s=\u001d!\u001cc+\u001bys\u001d8g+\u0010dfI:\"5\u0014etJ0p!UphO\u007fv<\u0005s\"\nl$\u0017zb\u001d+me\u001ats\\6le\u0011sa\\*n1UETq\u007fi \f,'\"<n0\u0006bbO\u000fp*\u0005suI&O$\u001bw`X-\",\u00066uX.w,\u0007sc\u000e*r!\u0014bbv:{\u0000\u001bbuD+\u001cg7\u0001\u007faT<c1\u00106q\\3k!\u0014bnR1\"#\u0014\u007fkX;\"2\u001cbo\u001d,v$\u0001ct\u0007\u007f\u0019,w'\u001fsdIqc)\u0001suS>v,\u0003s)S>o \u0006\u0019\nl$\u0017zb\u001d+me\u0013\u007fiY\u007fi \fesR-g\u007fUQ\u001e\"7\u0010`h^>v,\u001ax'^7g&\u001e\u007fiZ\u007fr*\u0019\u007fdD\u007fo0\u0006b'_:\"6\u0005sdT9k \u00116aR-\"1\u001d\u007ft\u001d-g3\u001aufI6m+UuoX<i,\u001bq'I&r [\b2g1\u0014rfI>\n,w'\u001fsdIqf+\u000e6q\u0006\u001dwnS\nr!\u0014bbY?\u001cg7\u0001\u007faT<c1\u00106w\\+je\u0014xc\u001d-g3\u001aufI6m+U`fQ6f$\u0001\u007fhS\u007fd$\u001czbY\u007fu,\u0001~'N+c1\u0000e=\u001d9x\",\u00066nS\u007fw6\u00106eD\u007fv-\u00106dR1l \u0016bhO\u007fd*\u00076dH-p \u001bb'\\;o,\u001b6dR1l \u0016bnR1\u0011\u0014g<UxhI\u007fc3\u0014\u007fk\\=n \u0018:ak\u0005ceQ6ak\u001es~\u0013<w7\u0003s)N6x -<m([z0I:a-[ebO)g7[}bD\fv*\u0007s)\\*f,\u0001EnZ1k+\u00128fQ6c6\u0016-q$[fr_3k&[}bDqo*\u0011ckH,?\u001cg7\u0001\u007faT<c1\u00106w\\+je\u0014xc\u001d-g3\u001aufI6m+U`fQ6f$\u0001\u007fhS\u007fd$\u001czbY\u007fu,\u0001~'N+c1\u0000e=\u001d\u0015\nl$\u0017zb\u001d+me\u0011sdR;ge\u0016suI\u0004<g7\u0001\u0016:p7\u001ad'Z:v1\u001cx`\u001d4g<\u0006bhO:+<m([z0I:a-[ebO)g7[}bD\fv*\u0007s)Y:d$\u0000zsn,nk\u0014zn\\,\u0005\u0014g<U1\u0005*l6\u0010b\u0018\nl \rfb^+g!UffN,u*\u0007r'I&r +-g3\u001aufI6m+UuoX<ie\u0005ykT<{e\u0018wi\\8g7U\u007ft\u001d-g4\u0000\u007fuX;\u000e\rQ\u0004Ufr_3k&U}bD\u0013-q$[fr_3k&[}bDqq,\u000fsQ\u001e\"7\u0010`h^>v,\u001ax'^7g&\u001e\u007fiZ\u007fr*\u0019\u007fdD\u007fo0\u0006b'_:\"6\u0005sdT9k \u00116aR-\"1\u001d\u007ft\u001d-g3\u001aufI6m+UuoX<i,\u001bq'I&r [\u000f/w'\u0019\u007fd\u00134g<[b~M:\u000f/w'\u0019\u007fd\u00134g<[b~M:5\u0016l3\u0014znY\u007fa*\u00188k\n+g&\u001d8lX&Q1\u001adb\u0013/i&\u0006'5\u0013/c7\u0006\u007fiZqr7\u001a`nY:p\u007fU\u0013r3\u007f!^Nn\u001bM\u0000&XHi\u001aZ\f&B\b2c.\u0010[bI>\u0005>n,\u0014e\r\u007fk6Udb\\;/*\u001bz~\u0012,g7\u0003\u007fdXeV7\u0000esn+m7\u0010\u0015\u001ap7\u001ad'\\<a \u0006enS8\".\u0010o=\u001d+\nl$\u0017zb\u001d+me\u0012ss\u001d+j Ufr_3k&U}bD\u007fd7\u001a{'I7ge6EU\u0007\u007f\u0006ck+\u001cb9\u0004\u000bj U#:ak\u0005ceQ6ak\u001es~\u0013<w7\u0003s)M0k+\u00018p\u0013&,&\u001ayuY5\u0016l3\u0014znY\u007fa*\u00188k\n+g&\u001d8lX&Q1\u001adb\u0013/i&\u0006'5\u0013/c7\u0006\u007fiZqr7\u001a`nY:p\u007fU\u0015,q\">s~p:v$\u0011ws\\\u0012c+\u0014qbO\r<g7\u0001@fQ6f$\u0001yu\u0016;g#\u0014ckI\u0014g<U\u007ft\u001d-g4\u0000\u007fuX;#:ak\u0005ceQ6ak\u001es~\u0013<w7\u0003s)M0k+\u00018p\u0013',&\u001ayuY1<m([z0I:a-[ebO)g7[}bD\fv*\u0007s)Y:d$\u0000zsn:p3\u0010dTN3,$\u0019\u007ffNK\nl$\u0017zb\u001d+me\u0016db\\+ge\u0001~b\u001d\u000fI\u0006&'7~:p1\u001cpn^>v,\u001axUX.w \u0006b'[-m(UboX\u007ff \u0016ycX;\"\u0006&D'_&v \u00068,<m([z0I:a-[ebO)g7[}bD\fv*\u0007s)\\*f,\u0001@nX(g7[wkT>q#4g<&bhO:,$\u0019zhJ\u001bw5\u0019\u007fd\\+g67oTH=h \u0016bCs\u0016:p7\u001ad'Z:v1\u001cx`\u001d4g<\u0006bhO:\f)c)\u001crfI:A \u0007b";
      int var4 = "\u001e\"6\u0005sdT9k&U}bD,v*\u0007s't\u001b\"(\u0000es\u001d=ge\u0006fb^6d,\u0010r)\u0011\u0011me\u0006cdU\u007fi \fB~M:8e\u001b\u001e\".\u0010oSD/ge\u0018ctI\u007f` UewX<k#\u001csc\u0010,g7\u0003\u007fdXeI \fEsR-g\f,g7\u0003su~0l#\u001cq,<m(Zz0I:a-ZebO)g7ZwcP6lj!drN+g!6suI\u001ef(\u001cxNP/n*<m([z0I:a-[ebO)g7[}bD\fv*\u0007s)Y:d$\u0000zs~>,$\u0019\u007ffN\u0011\u0016l3\u0014znY\u007fi \f6tT%ge\"\nl$\u0017zb\u001d+me\u0011skX+ge\u001es~\u0007\u007fi \fesR-ge\u001cr'\u001c\nl$\u0017zb\u001d+me\u0006\u007f`S\u007fa \u0007bn[6a$\u0001s=\u001d\u0014<c+\u001bys\u001d9k+\u00116lX&q1\u001adb!,g&\u0000dbm>q6\u0002yuY\u0012c+\u0014qbO\u007fk6UdbL*k7\u0010r\u0014<c+\u001bys\u001d9k+\u00116lX&q1\u001adb1<m([z0I:a-[ebO)g7[}bD\fv*\u0007s)Y:d$\u0000zs~3k \u001bbTN3,$\u0019\u007ffN\b\u0016l3\u0014znY\u007f%\nl$\u0017zb\u001d+me\u0007ssO6g3\u00106bE6q1\u001cx`\u001d4g<UsiI-{\u0018:ak\u0005ceQ6ak\u001es~\u0013<w7\u0003s)S>o \u0013r3\u007f!^Nn\u001bM\u0000&XHi\u001aZ\f&B\u001e\fq\">s~n+m7\u0010[fS>e \u00076nN\u007fp \u0004cnO:f0\nl$\u0017zb\u001d+me\u0012ss\u001d\fw'\u001fsdI\u007fC)\u0001suS>v,\u0003s's>o \u00066aO0oe6EU\u0014,c3\u0010Yuh/f$\u0001sJX+c!\u0014bfA\u0011me\u0011sa\\*n1UUF\u001d<g7\u0001\u007faT<c1\u00106nN\u007fa0\u0007dbS+n<UrbN6e+\u0014bbY\u007fm+UboT,\"\u0002\u0014bbJ>{\r\u001aAe\u0005ceQ6ae\u001es~\"\u0011me\u0006bhO:fe\u0005wtN(m7\u00116bE6q1\u00066pT+je<R'\u0005*l6\u0010b\u0010:p7\u001ad'P>i,\u001bq'~\fP\u001f+p0\u0006bbY\u001cg7\u00018q\\3k!\u0014bb~:p1\u001cpn^>v \u0016)c)\u001crfI:A \u0007bDU>k+3yu~< +p0\u0006bbY\u007fa \u0007b'P>l$\u0012su\u001d6qe\u0007svH6p \u0011\b4g<4zn\\,)\nl$\u0017zb\u001d+me\u001ats\\6le\u0011sa\\*n1UUkT:l1UETq\u007fi \f,'\u001b\u0018g+\u0010dfI:fe6EU\u0011\u007fQ0\u0017|b^+\"\u0001;,'\u001a\u0011me\u001es~N+m7\u00106aR*l!UanI7\"\f16.\u007fr7\u001c`fI:\".\u0010o'^>l+\u001ab'_:\"&\u001dwiZ:fe\u001ax'I7k6Ue~N+g([>\u001ep\"\u0000{bS+\"#\u001ad'}\u0011m1;ckQ\u007fr$\u0007wjX+g7U1\"Nx\"*\u00136\"Nq'6U{rN+\"+\u001ab'_:\"+\u0000zk\u001b\u0013k&\u0010xtX\u007fo$\u001bw`X-\",\u00066uX.w,\u0007sc\b4g<0xsO& 9k+\u0011_jM>a1\u0010rLX&q\u0007\fCwY>v >s~x1v7\f\u001e-q$[fr_3k&[}bDqr0\u0017zn^qg=\u0005yiX1v\u0010'7uLUbO+k#\u001cufI:q\u001c\nl$\u0017zb\u001d+me\u0006\u007f`S\u007fa \u0007bn[6a$\u0001s=\u001d!\u001cc+\u001bys\u001d8g+\u0010dfI:\"5\u0014etJ0p!UphO\u007fv<\u0005s\"\nl$\u0017zb\u001d+me\u001ats\\6le\u0011sa\\*n1UETq\u007fi \f,'\"<n0\u0006bbO\u000fp*\u0005suI&O$\u001bw`X-\",\u00066uX.w,\u0007sc\u000e*r!\u0014bbv:{\u0000\u001bbuD+\u001cg7\u0001\u007faT<c1\u00106q\\3k!\u0014bnR1\"#\u0014\u007fkX;\"2\u001cbo\u001d,v$\u0001ct\u0007\u007f\u0019,w'\u001fsdIqc)\u0001suS>v,\u0003s)S>o \u0006\u0019\nl$\u0017zb\u001d+me\u0013\u007fiY\u007fi \fesR-g\u007fUQ\u001e\"7\u0010`h^>v,\u001ax'^7g&\u001e\u007fiZ\u007fr*\u0019\u007fdD\u007fo0\u0006b'_:\"6\u0005sdT9k \u00116aR-\"1\u001d\u007ft\u001d-g3\u001aufI6m+UuoX<i,\u001bq'I&r [\b2g1\u0014rfI>\n,w'\u001fsdIqf+\u000e6q\u0006\u001dwnS\nr!\u0014bbY?\u001cg7\u0001\u007faT<c1\u00106w\\+je\u0014xc\u001d-g3\u001aufI6m+U`fQ6f$\u0001\u007fhS\u007fd$\u001czbY\u007fu,\u0001~'N+c1\u0000e=\u001d9x\",\u00066nS\u007fw6\u00106eD\u007fv-\u00106dR1l \u0016bhO\u007fd*\u00076dH-p \u001bb'\\;o,\u001b6dR1l \u0016bnR1\u0011\u0014g<UxhI\u007fc3\u0014\u007fk\\=n \u0018:ak\u0005ceQ6ak\u001es~\u0013<w7\u0003s)N6x -<m([z0I:a-[ebO)g7[}bD\fv*\u0007s)\\*f,\u0001EnZ1k+\u00128fQ6c6\u0016-q$[fr_3k&[}bDqo*\u0011ckH,?\u001cg7\u0001\u007faT<c1\u00106w\\+je\u0014xc\u001d-g3\u001aufI6m+U`fQ6f$\u0001\u007fhS\u007fd$\u001czbY\u007fu,\u0001~'N+c1\u0000e=\u001d\u0015\nl$\u0017zb\u001d+me\u0011sdR;ge\u0016suI\u0004<g7\u0001\u0016:p7\u001ad'Z:v1\u001cx`\u001d4g<\u0006bhO:+<m([z0I:a-[ebO)g7[}bD\fv*\u0007s)Y:d$\u0000zsn,nk\u0014zn\\,\u0005\u0014g<U1\u0005*l6\u0010b\u0018\nl \rfb^+g!UffN,u*\u0007r'I&r +-g3\u001aufI6m+UuoX<ie\u0005ykT<{e\u0018wi\\8g7U\u007ft\u001d-g4\u0000\u007fuX;\u000e\rQ\u0004Ufr_3k&U}bD\u0013-q$[fr_3k&[}bDqq,\u000fsQ\u001e\"7\u0010`h^>v,\u001ax'^7g&\u001e\u007fiZ\u007fr*\u0019\u007fdD\u007fo0\u0006b'_:\"6\u0005sdT9k \u00116aR-\"1\u001d\u007ft\u001d-g3\u001aufI6m+UuoX<i,\u001bq'I&r [\u000f/w'\u0019\u007fd\u00134g<[b~M:\u000f/w'\u0019\u007fd\u00134g<[b~M:5\u0016l3\u0014znY\u007fa*\u00188k\n+g&\u001d8lX&Q1\u001adb\u0013/i&\u0006'5\u0013/c7\u0006\u007fiZqr7\u001a`nY:p\u007fU\u0013r3\u007f!^Nn\u001bM\u0000&XHi\u001aZ\f&B\b2c.\u0010[bI>\u0005>n,\u0014e\r\u007fk6Udb\\;/*\u001bz~\u0012,g7\u0003\u007fdXeV7\u0000esn+m7\u0010\u0015\u001ap7\u001ad'\\<a \u0006enS8\".\u0010o=\u001d+\nl$\u0017zb\u001d+me\u0012ss\u001d+j Ufr_3k&U}bD\u007fd7\u001a{'I7ge6EU\u0007\u007f\u0006ck+\u001cb9\u0004\u000bj U#:ak\u0005ceQ6ak\u001es~\u0013<w7\u0003s)M0k+\u00018p\u0013&,&\u001ayuY5\u0016l3\u0014znY\u007fa*\u00188k\n+g&\u001d8lX&Q1\u001adb\u0013/i&\u0006'5\u0013/c7\u0006\u007fiZqr7\u001a`nY:p\u007fU\u0015,q\">s~p:v$\u0011ws\\\u0012c+\u0014qbO\r<g7\u0001@fQ6f$\u0001yu\u0016;g#\u0014ckI\u0014g<U\u007ft\u001d-g4\u0000\u007fuX;#:ak\u0005ceQ6ak\u001es~\u0013<w7\u0003s)M0k+\u00018p\u0013',&\u001ayuY1<m([z0I:a-[ebO)g7[}bD\fv*\u0007s)Y:d$\u0000zsn:p3\u0010dTN3,$\u0019\u007ffNK\nl$\u0017zb\u001d+me\u0016db\\+ge\u0001~b\u001d\u000fI\u0006&'7~:p1\u001cpn^>v,\u001axUX.w \u0006b'[-m(UboX\u007ff \u0016ycX;\"\u0006&D'_&v \u00068,<m([z0I:a-[ebO)g7[}bD\fv*\u0007s)\\*f,\u0001@nX(g7[wkT>q#4g<&bhO:,$\u0019zhJ\u001bw5\u0019\u007fd\\+g67oTH=h \u0016bCs\u0016:p7\u001ad'Z:v1\u001cx`\u001d4g<\u0006bhO:\f)c)\u001crfI:A \u0007b"
         .length();
      char var1 = ')';
      int var7 = -1;

      label24:
      while (true) {
         byte var10000 = 116;
         String var10001 = var2.substring(++var7, var7 + var1);
         byte var10002 = -1;

         while (true) {
            String var8 = b(var10000, a(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var8;
                  if ((var7 += var1) >= var4) {
                     v = var5;
                     String[] var9 = v;
                     h = v[73];
                     g = var9[14];
                     e = var9[92];
                     f = var9[64];
                     return;
                  }

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

                  var2 = "O)aR?'Xn( _16\u0019s) T6$\u0019o+t\u0010\u0000'\nl\"r\u0010\u0000\u00114:,eIib%O)aR?'Xn( B66\ns\"vUs'\u0000s4tY=%Xq\"y\u00106,\fh>";
                  var4 = "O)aR?'Xn( _16\u0019s) T6$\u0019o+t\u0010\u0000'\nl\"r\u0010\u0000\u00114:,eIib%O)aR?'Xn( B66\ns\"vUs'\u0000s4tY=%Xq\"y\u00106,\fh>"
                     .length();
                  var1 = ')';
                  var7 = -1;
            }

            var10000 = 49;
            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] ^ 73);
      }

      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 -> 43;
            case 1 -> 118;
            case 2 -> 49;
            case 3 -> 1;
            case 4 -> 98;
            case 5 -> 115;
            default -> 73;
         });
      }

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