package com.l7tech.external.assertions.gatewaymanagement.server;

import com.l7tech.gateway.api.IdentityProviderMO;
import com.l7tech.gateway.api.ManagedObjectFactory;
import com.l7tech.gateway.api.IdentityProviderMO.FederatedIdentityProviderDetail;
import com.l7tech.gateway.api.IdentityProviderMO.IdentityProviderType;
import com.l7tech.gateway.api.IdentityProviderMO.LdapIdentityProviderDetail;
import com.l7tech.gateway.api.IdentityProviderMO.LdapIdentityProviderMapping;
import com.l7tech.identity.IdentityProviderConfig;
import com.l7tech.identity.IdentityProviderConfigManager;
import com.l7tech.identity.external.PolicyBackedIdentityProviderConfig;
import com.l7tech.identity.fed.FederatedIdentityProviderConfig;
import com.l7tech.identity.ldap.BindOnlyLdapIdentityProviderConfig;
import com.l7tech.identity.ldap.GroupMappingConfig;
import com.l7tech.identity.ldap.LdapIdentityProviderConfig;
import com.l7tech.identity.ldap.LdapUrlBasedIdentityProviderConfig;
import com.l7tech.identity.ldap.MemberStrategy;
import com.l7tech.identity.ldap.UserMappingConfig;
import com.l7tech.objectmodel.EntityHeader;
import com.l7tech.objectmodel.EntityType;
import com.l7tech.objectmodel.Goid;
import com.l7tech.objectmodel.ObjectModelException;
import com.l7tech.objectmodel.PersistentEntity;
import com.l7tech.objectmodel.SaveException;
import com.l7tech.security.types.CertificateValidationType;
import com.l7tech.server.identity.ldap.LdapConfigTemplateManager;
import com.l7tech.server.security.rbac.RbacServices;
import com.l7tech.server.security.rbac.SecurityFilter;
import com.l7tech.server.security.rbac.SecurityZoneManager;
import com.l7tech.util.BeanUtils;
import com.l7tech.util.Functions;
import com.l7tech.util.Option;
import com.l7tech.util.TimeUnit;
import java.beans.PropertyDescriptor;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import org.springframework.transaction.PlatformTransactionManager;

@ResourceFactory.ResourceType(type = IdentityProviderMO.class)
public class IdentityProviderResourceFactory extends SecurityZoneableEntityManagerResourceFactory<IdentityProviderMO, IdentityProviderConfig, EntityHeader> {
   private static final String o;
   private static final String p;
   private static final String q;
   private static final String r;
   private static final String s;
   private final LdapConfigTemplateManager t;
   private static final String[] u;

   public IdentityProviderResourceFactory(
      RbacServices var1,
      SecurityFilter var2,
      PlatformTransactionManager var3,
      IdentityProviderConfigManager var4,
      LdapConfigTemplateManager var5,
      SecurityZoneManager var6
   ) {
      super(false, true, var1, var2, var3, var4, var6);
      this.t = var5;
   }

   public IdentityProviderMO asResource(IdentityProviderConfig var1) {
      IdentityProviderMO var2 = ManagedObjectFactory.createIdentityProvider();

      label46: {
         label41: {
            label40: {
               label39: {
                  label38: {
                     try {
                        var2.setName(var1.getName());
                        switch (var1.getTypeVal()) {
                           case 1:
                              var2.setIdentityProviderType(IdentityProviderType.INTERNAL);
                              break label41;
                           case 2:
                              break label40;
                           case 3:
                              break label39;
                           case 4:
                              break label38;
                           case 5:
                              break;
                           default:
                              break label46;
                        }
                     } catch (ResourceFactory.ResourceAccessException var5) {
                        throw a(var5);
                     }

                     var2.setIdentityProviderType(IdentityProviderType.POLICY_BACKED);
                     this.a(var2, (PolicyBackedIdentityProviderConfig)var1);
                     break label41;
                  }

                  var2.setIdentityProviderType(IdentityProviderType.BIND_ONLY_LDAP);
                  this.a(var2, (BindOnlyLdapIdentityProviderConfig)var1);
                  break label41;
               }

               var2.setIdentityProviderType(IdentityProviderType.FEDERATED);
               this.a(var2, (FederatedIdentityProviderConfig)var1);
               break label41;
            }

            var2.setIdentityProviderType(IdentityProviderType.LDAP);
            this.a(var2, (LdapIdentityProviderConfig)var1);
         }

         if (var1.getCertificateValidationType() != null) {
            Map var3 = var2.getProperties();
            if (var3 == null) {
               var3 = new HashMap();
               var2.setProperties(var3);
            }

            var3.put(u[27], ao.getEnumText(var1.getCertificateValidationType()));
         }

         this.doSecurityZoneAsResource(var2, var1);
         return var2;
      }

      int var10002 = var1.getTypeVal();
      String[] var4 = u;
      throw new ResourceFactory.ResourceAccessException(var4[14] + var10002 + var4[29]);
   }

   public IdentityProviderConfig fromResource(Object var1, boolean var2) throws ResourceFactory.InvalidResourceException {
      try {
         if (!(var1 instanceof IdentityProviderMO)) {
            throw new ResourceFactory.InvalidResourceException(ResourceFactory.InvalidResourceException.ExceptionType.UNEXPECTED_TYPE, u[2]);
         }
      } catch (ResourceFactory.InvalidResourceException var5) {
         throw a(var5);
      }

      IdentityProviderMO var3 = (IdentityProviderMO)var1;

      Object var4 = switch (ay.a[var3.getIdentityProviderType().ordinal()]) {
         case 1 -> new IdentityProviderConfig(com.l7tech.identity.IdentityProviderType.INTERNAL);
         case 2 -> this.b(var3, new LdapIdentityProviderConfig());
         case 3 -> this.b(var3, new FederatedIdentityProviderConfig());
         case 4 -> this.b(var3, new BindOnlyLdapIdentityProviderConfig());
         case 5 -> this.b(var3, new PolicyBackedIdentityProviderConfig());
         default -> throw new ResourceFactory.InvalidResourceException(ResourceFactory.InvalidResourceException.ExceptionType.INVALID_VALUES, u[30]);
      };
      var4.setName(var3.getName());
      this.setProperties((PersistentEntity)var4, var3.getProperties(), var4.getClass());
      var4.setCertificateValidationType(this.a(var3.getProperties()));
      this.doSecurityZoneFromResource(var3, (IdentityProviderConfig)var4, var2);
      return (IdentityProviderConfig)var4;
   }

   protected void updateEntity(IdentityProviderConfig param1, IdentityProviderConfig param2) throws ResourceFactory.InvalidResourceException {
      // $VF: Couldn't be decompiled
      // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
      // java.lang.RuntimeException: parsing failure!
      //   at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211)
      //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174)
      //
      // Bytecode:
      // 00: aload 1
      // 01: invokevirtual com/l7tech/identity/IdentityProviderConfig.getTypeVal ()I
      // 04: aload 2
      // 05: invokevirtual com/l7tech/identity/IdentityProviderConfig.getTypeVal ()I
      // 08: if_icmpne 78
      // 0b: aload 1
      // 0c: invokevirtual com/l7tech/identity/IdentityProviderConfig.getTypeVal ()I
      // 0f: tableswitch 94 2 5 33 52 67 82
      // 2c: invokestatic com/l7tech/external/assertions/gatewaymanagement/server/IdentityProviderResourceFactory.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 2f: athrow
      // 30: aload 0
      // 31: aload 1
      // 32: checkcast com/l7tech/identity/ldap/LdapIdentityProviderConfig
      // 35: aload 2
      // 36: checkcast com/l7tech/identity/ldap/LdapIdentityProviderConfig
      // 39: invokevirtual com/l7tech/external/assertions/gatewaymanagement/server/IdentityProviderResourceFactory.a (Lcom/l7tech/identity/ldap/LdapIdentityProviderConfig;Lcom/l7tech/identity/ldap/LdapIdentityProviderConfig;)V
      // 3c: goto 6d
      // 3f: invokestatic com/l7tech/external/assertions/gatewaymanagement/server/IdentityProviderResourceFactory.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 42: athrow
      // 43: aload 0
      // 44: aload 1
      // 45: checkcast com/l7tech/identity/fed/FederatedIdentityProviderConfig
      // 48: aload 2
      // 49: checkcast com/l7tech/identity/fed/FederatedIdentityProviderConfig
      // 4c: invokevirtual com/l7tech/external/assertions/gatewaymanagement/server/IdentityProviderResourceFactory.a (Lcom/l7tech/identity/fed/FederatedIdentityProviderConfig;Lcom/l7tech/identity/fed/FederatedIdentityProviderConfig;)V
      // 4f: goto 6d
      // 52: aload 0
      // 53: aload 1
      // 54: checkcast com/l7tech/identity/ldap/BindOnlyLdapIdentityProviderConfig
      // 57: aload 2
      // 58: checkcast com/l7tech/identity/ldap/BindOnlyLdapIdentityProviderConfig
      // 5b: invokevirtual com/l7tech/external/assertions/gatewaymanagement/server/IdentityProviderResourceFactory.a (Lcom/l7tech/identity/ldap/BindOnlyLdapIdentityProviderConfig;Lcom/l7tech/identity/ldap/BindOnlyLdapIdentityProviderConfig;)V
      // 5e: goto 6d
      // 61: aload 0
      // 62: aload 1
      // 63: checkcast com/l7tech/identity/external/PolicyBackedIdentityProviderConfig
      // 66: aload 2
      // 67: checkcast com/l7tech/identity/external/PolicyBackedIdentityProviderConfig
      // 6a: invokevirtual com/l7tech/external/assertions/gatewaymanagement/server/IdentityProviderResourceFactory.a (Lcom/l7tech/identity/external/PolicyBackedIdentityProviderConfig;Lcom/l7tech/identity/external/PolicyBackedIdentityProviderConfig;)V
      // 6d: aload 1
      // 6e: aload 2
      // 6f: invokevirtual com/l7tech/identity/IdentityProviderConfig.getCertificateValidationType ()Lcom/l7tech/security/types/CertificateValidationType;
      // 72: invokevirtual com/l7tech/identity/IdentityProviderConfig.setCertificateValidationType (Lcom/l7tech/security/types/CertificateValidationType;)V
      // 75: goto 89
      // 78: new com/l7tech/external/assertions/gatewaymanagement/server/ResourceFactory$InvalidResourceException
      // 7b: dup
      // 7c: getstatic com/l7tech/external/assertions/gatewaymanagement/server/ResourceFactory$InvalidResourceException$ExceptionType.INVALID_VALUES Lcom/l7tech/external/assertions/gatewaymanagement/server/ResourceFactory$InvalidResourceException$ExceptionType;
      // 7f: getstatic com/l7tech/external/assertions/gatewaymanagement/server/IdentityProviderResourceFactory.u [Ljava/lang/String;
      // 82: bipush 19
      // 84: aaload
      // 85: invokespecial com/l7tech/external/assertions/gatewaymanagement/server/ResourceFactory$InvalidResourceException.<init> (Lcom/l7tech/external/assertions/gatewaymanagement/server/ResourceFactory$InvalidResourceException$ExceptionType;Ljava/lang/String;)V
      // 88: athrow
      // 89: aload 1
      // 8a: aload 2
      // 8b: invokevirtual com/l7tech/identity/IdentityProviderConfig.getSecurityZone ()Lcom/l7tech/objectmodel/SecurityZone;
      // 8e: invokevirtual com/l7tech/identity/IdentityProviderConfig.setSecurityZone (Lcom/l7tech/objectmodel/SecurityZone;)V
      // 91: return
      // try (0 -> 8): 8 com/l7tech/external/assertions/gatewaymanagement/server/ResourceFactory$InvalidResourceException
      // try (5 -> 17): 17 com/l7tech/external/assertions/gatewaymanagement/server/ResourceFactory$InvalidResourceException
   }

   private CertificateValidationType a(Map<String, Object> var1) throws ResourceFactory.InvalidResourceException {
      CertificateValidationType var2 = null;
      Option var3 = this.getProperty(var1, u[20], Option.none(), String.class);
      if (var3.isSome()) {
         var2 = ao.getEnumValue(CertificateValidationType.class, (String)var3.some());
      }

      return var2;
   }

   private void a(IdentityProviderMO var1, FederatedIdentityProviderConfig var2) {
      try {
         var1.setProperties(this.getProperties(var2, FederatedIdentityProviderConfig.class));
         if (var2.getTrustedCertGoids() == null || var2.getTrustedCertGoids().length <= 0) {
            return;
         }
      } catch (ResourceFactory.ResourceAccessException var5) {
         throw a(var5);
      }

      FederatedIdentityProviderDetail var3 = var1.getFederatedIdentityProviderDetail();

      try {
         if (var3 != null) {
            var3.setCertificateReferences(Functions.map(Arrays.asList(var2.getTrustedCertGoids()), new as(this)));
         }
      } catch (ResourceFactory.ResourceAccessException var4) {
         throw a(var4);
      }
   }

   private FederatedIdentityProviderConfig b(IdentityProviderMO var1, FederatedIdentityProviderConfig var2) throws ResourceFactory.InvalidResourceException {
      FederatedIdentityProviderDetail var3 = var1.getFederatedIdentityProviderDetail();

      try {
         if (var3 == null || var3.getCertificateReferences() == null) {
            return var2;
         }
      } catch (IllegalArgumentException var6) {
         throw a(var6);
      }

      try {
         List var4 = Functions.map(var3.getCertificateReferences(), new at(this));
         var2.setTrustedCertGoids(var4.toArray(new Goid[var4.size()]));
      } catch (IllegalArgumentException var5) {
         throw new ResourceFactory.InvalidResourceException(ResourceFactory.InvalidResourceException.ExceptionType.INVALID_VALUES, u[18]);
      }

      return var2;
   }

   private void a(IdentityProviderMO param1, LdapIdentityProviderConfig param2) {
      // $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: aload 0
      // 002: aload 2
      // 003: ldc com/l7tech/identity/ldap/LdapIdentityProviderConfig
      // 005: invokevirtual com/l7tech/external/assertions/gatewaymanagement/server/IdentityProviderResourceFactory.getProperties (Lcom/l7tech/objectmodel/PersistentEntity;Ljava/lang/Class;)Ljava/util/Map;
      // 008: invokevirtual com/l7tech/gateway/api/IdentityProviderMO.setProperties (Ljava/util/Map;)V
      // 00b: aload 1
      // 00c: invokevirtual com/l7tech/gateway/api/IdentityProviderMO.getLdapIdentityProviderDetail ()Lcom/l7tech/gateway/api/IdentityProviderMO$LdapIdentityProviderDetail;
      // 00f: astore 3
      // 010: aload 3
      // 011: ifnull 12a
      // 014: aload 3
      // 015: aload 2
      // 016: invokevirtual com/l7tech/identity/ldap/LdapIdentityProviderConfig.getTemplateName ()Ljava/lang/String;
      // 019: invokevirtual com/l7tech/gateway/api/IdentityProviderMO$LdapIdentityProviderDetail.setSourceType (Ljava/lang/String;)V
      // 01c: aload 3
      // 01d: aload 2
      // 01e: invokevirtual com/l7tech/identity/ldap/LdapIdentityProviderConfig.getLdapUrl ()[Ljava/lang/String;
      // 021: ifnonnull 033
      // 024: goto 02b
      // 027: invokestatic com/l7tech/external/assertions/gatewaymanagement/server/IdentityProviderResourceFactory.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 02a: athrow
      // 02b: aconst_null
      // 02c: goto 03a
      // 02f: invokestatic com/l7tech/external/assertions/gatewaymanagement/server/IdentityProviderResourceFactory.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 032: athrow
      // 033: aload 2
      // 034: invokevirtual com/l7tech/identity/ldap/LdapIdentityProviderConfig.getLdapUrl ()[Ljava/lang/String;
      // 037: invokestatic java/util/Arrays.asList ([Ljava/lang/Object;)Ljava/util/List;
      // 03a: invokevirtual com/l7tech/gateway/api/IdentityProviderMO$LdapIdentityProviderDetail.setServerUrls (Ljava/util/List;)V
      // 03d: aload 3
      // 03e: aload 2
      // 03f: invokevirtual com/l7tech/identity/ldap/LdapIdentityProviderConfig.isClientAuthEnabled ()Z
      // 042: invokevirtual com/l7tech/gateway/api/IdentityProviderMO$LdapIdentityProviderDetail.setUseSslClientAuthentication (Z)V
      // 045: aload 2
      // 046: invokevirtual com/l7tech/identity/ldap/LdapIdentityProviderConfig.getKeystoreId ()Lcom/l7tech/objectmodel/Goid;
      // 049: ifnull 075
      // 04c: aload 2
      // 04d: invokevirtual com/l7tech/identity/ldap/LdapIdentityProviderConfig.getKeyAlias ()Ljava/lang/String;
      // 050: ifnull 075
      // 053: goto 05a
      // 056: invokestatic com/l7tech/external/assertions/gatewaymanagement/server/IdentityProviderResourceFactory.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 059: athrow
      // 05a: aload 3
      // 05b: aload 2
      // 05c: invokevirtual com/l7tech/identity/ldap/LdapIdentityProviderConfig.getKeystoreId ()Lcom/l7tech/objectmodel/Goid;
      // 05f: invokestatic java/lang/String.valueOf (Ljava/lang/Object;)Ljava/lang/String;
      // 062: aload 2
      // 063: invokevirtual com/l7tech/identity/ldap/LdapIdentityProviderConfig.getKeyAlias ()Ljava/lang/String;
      // 066: 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" ]
      // 06b: invokevirtual com/l7tech/gateway/api/IdentityProviderMO$LdapIdentityProviderDetail.setSslKeyId (Ljava/lang/String;)V
      // 06e: goto 075
      // 071: invokestatic com/l7tech/external/assertions/gatewaymanagement/server/IdentityProviderResourceFactory.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 074: athrow
      // 075: aload 3
      // 076: aload 2
      // 077: invokevirtual com/l7tech/identity/ldap/LdapIdentityProviderConfig.getSearchBase ()Ljava/lang/String;
      // 07a: invokevirtual com/l7tech/gateway/api/IdentityProviderMO$LdapIdentityProviderDetail.setSearchBase (Ljava/lang/String;)V
      // 07d: aload 3
      // 07e: aload 2
      // 07f: invokevirtual com/l7tech/identity/ldap/LdapIdentityProviderConfig.getBindDN ()Ljava/lang/String;
      // 082: invokevirtual com/l7tech/gateway/api/IdentityProviderMO$LdapIdentityProviderDetail.setBindDn (Ljava/lang/String;)V
      // 085: aload 3
      // 086: aload 2
      // 087: invokevirtual com/l7tech/identity/ldap/LdapIdentityProviderConfig.isWritable ()Z
      // 08a: invokevirtual com/l7tech/gateway/api/IdentityProviderMO$LdapIdentityProviderDetail.setWritable (Z)V
      // 08d: aload 3
      // 08e: aload 2
      // 08f: invokevirtual com/l7tech/identity/ldap/LdapIdentityProviderConfig.getWriteBase ()Ljava/lang/String;
      // 092: invokevirtual com/l7tech/gateway/api/IdentityProviderMO$LdapIdentityProviderDetail.setWriteBase (Ljava/lang/String;)V
      // 095: aload 3
      // 096: aload 2
      // 097: invokevirtual com/l7tech/identity/ldap/LdapIdentityProviderConfig.getReconnectTimeout ()Ljava/lang/Long;
      // 09a: invokevirtual com/l7tech/gateway/api/IdentityProviderMO$LdapIdentityProviderDetail.setReconnectTimeout (Ljava/lang/Long;)V
      // 09d: aload 3
      // 09e: aload 0
      // 09f: aload 2
      // 0a0: invokevirtual com/l7tech/identity/ldap/LdapIdentityProviderConfig.getUserMappings ()[Lcom/l7tech/identity/ldap/UserMappingConfig;
      // 0a3: invokevirtual com/l7tech/external/assertions/gatewaymanagement/server/IdentityProviderResourceFactory.a ([Lcom/l7tech/identity/ldap/UserMappingConfig;)Ljava/util/List;
      // 0a6: invokevirtual com/l7tech/gateway/api/IdentityProviderMO$LdapIdentityProviderDetail.setUserMappings (Ljava/util/List;)V
      // 0a9: aload 3
      // 0aa: aload 0
      // 0ab: aload 2
      // 0ac: invokevirtual com/l7tech/identity/ldap/LdapIdentityProviderConfig.getGroupMappings ()[Lcom/l7tech/identity/ldap/GroupMappingConfig;
      // 0af: invokevirtual com/l7tech/external/assertions/gatewaymanagement/server/IdentityProviderResourceFactory.a ([Lcom/l7tech/identity/ldap/GroupMappingConfig;)Ljava/util/List;
      // 0b2: invokevirtual com/l7tech/gateway/api/IdentityProviderMO$LdapIdentityProviderDetail.setGroupMappings (Ljava/util/List;)V
      // 0b5: aload 3
      // 0b6: aload 2
      // 0b7: invokevirtual com/l7tech/identity/ldap/LdapIdentityProviderConfig.getReturningAttributes ()[Ljava/lang/String;
      // 0ba: ifnonnull 0c5
      // 0bd: aconst_null
      // 0be: goto 0cc
      // 0c1: invokestatic com/l7tech/external/assertions/gatewaymanagement/server/IdentityProviderResourceFactory.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 0c4: athrow
      // 0c5: aload 2
      // 0c6: invokevirtual com/l7tech/identity/ldap/LdapIdentityProviderConfig.getReturningAttributes ()[Ljava/lang/String;
      // 0c9: invokestatic java/util/Arrays.asList ([Ljava/lang/Object;)Ljava/util/List;
      // 0cc: invokevirtual com/l7tech/gateway/api/IdentityProviderMO$LdapIdentityProviderDetail.setSpecifiedAttributes (Ljava/util/List;)V
      // 0cf: aload 2
      // 0d0: invokevirtual com/l7tech/identity/ldap/LdapIdentityProviderConfig.getNtlmAuthenticationProviderProperties ()Ljava/util/Map;
      // 0d3: invokeinterface java/util/Map.isEmpty ()Z 1
      // 0d8: ifne 12a
      // 0db: new java/util/HashMap
      // 0de: dup
      // 0df: invokespecial java/util/HashMap.<init> ()V
      // 0e2: astore 4
      // 0e4: aload 2
      // 0e5: invokevirtual com/l7tech/identity/ldap/LdapIdentityProviderConfig.getNtlmAuthenticationProviderProperties ()Ljava/util/Map;
      // 0e8: astore 5
      // 0ea: aload 5
      // 0ec: invokeinterface java/util/Map.keySet ()Ljava/util/Set; 1
      // 0f1: invokeinterface java/util/Set.iterator ()Ljava/util/Iterator; 1
      // 0f6: astore 6
      // 0f8: aload 6
      // 0fa: invokeinterface java/util/Iterator.hasNext ()Z 1
      // 0ff: ifeq 124
      // 102: aload 6
      // 104: invokeinterface java/util/Iterator.next ()Ljava/lang/Object; 1
      // 109: checkcast java/lang/String
      // 10c: astore 7
      // 10e: aload 4
      // 110: aload 7
      // 112: aload 5
      // 114: aload 7
      // 116: invokeinterface java/util/Map.get (Ljava/lang/Object;)Ljava/lang/Object; 2
      // 11b: invokeinterface java/util/Map.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; 3
      // 120: pop
      // 121: goto 0f8
      // 124: aload 3
      // 125: aload 4
      // 127: invokevirtual com/l7tech/gateway/api/IdentityProviderMO$LdapIdentityProviderDetail.setNtlmProperties (Ljava/util/Map;)V
      // 12a: aload 2
      // 12b: invokevirtual com/l7tech/identity/ldap/LdapIdentityProviderConfig.getGroupCacheMaxAge ()Ljava/lang/Long;
      // 12e: ifnull 14f
      // 131: aload 1
      // 132: invokevirtual com/l7tech/gateway/api/IdentityProviderMO.getProperties ()Ljava/util/Map;
      // 135: getstatic com/l7tech/external/assertions/gatewaymanagement/server/IdentityProviderResourceFactory.u [Ljava/lang/String;
      // 138: bipush 23
      // 13a: aaload
      // 13b: aload 2
      // 13c: invokevirtual com/l7tech/identity/ldap/LdapIdentityProviderConfig.getGroupCacheMaxAgeUnit ()Lcom/l7tech/util/TimeUnit;
      // 13f: invokevirtual com/l7tech/util/TimeUnit.getName ()Ljava/lang/String;
      // 142: invokeinterface java/util/Map.put (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; 3
      // 147: pop
      // 148: goto 14f
      // 14b: invokestatic com/l7tech/external/assertions/gatewaymanagement/server/IdentityProviderResourceFactory.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 14e: athrow
      // 14f: return
      // try (9 -> 19): 20 com/l7tech/external/assertions/gatewaymanagement/server/ResourceFactory$ResourceAccessException
      // try (11 -> 24): 24 com/l7tech/external/assertions/gatewaymanagement/server/ResourceFactory$ResourceAccessException
      // try (29 -> 40): 41 com/l7tech/external/assertions/gatewaymanagement/server/ResourceFactory$ResourceAccessException
      // try (37 -> 51): 52 com/l7tech/external/assertions/gatewaymanagement/server/ResourceFactory$ResourceAccessException
      // try (54 -> 92): 92 com/l7tech/external/assertions/gatewaymanagement/server/ResourceFactory$ResourceAccessException
      // try (131 -> 144): 145 com/l7tech/external/assertions/gatewaymanagement/server/ResourceFactory$ResourceAccessException
   }

   private void a(IdentityProviderMO param1, BindOnlyLdapIdentityProviderConfig param2) {
      // $VF: Couldn't be decompiled
      // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
      // java.lang.RuntimeException: parsing failure!
      //   at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211)
      //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174)
      //
      // Bytecode:
      // 00: aload 1
      // 01: aload 0
      // 02: aload 2
      // 03: ldc com/l7tech/identity/ldap/BindOnlyLdapIdentityProviderConfig
      // 05: invokevirtual com/l7tech/external/assertions/gatewaymanagement/server/IdentityProviderResourceFactory.getProperties (Lcom/l7tech/objectmodel/PersistentEntity;Ljava/lang/Class;)Ljava/util/Map;
      // 08: invokevirtual com/l7tech/gateway/api/IdentityProviderMO.setProperties (Ljava/util/Map;)V
      // 0b: aload 1
      // 0c: invokevirtual com/l7tech/gateway/api/IdentityProviderMO.getBindOnlyLdapIdentityProviderDetail ()Lcom/l7tech/gateway/api/IdentityProviderMO$BindOnlyLdapIdentityProviderDetail;
      // 0f: astore 3
      // 10: aload 3
      // 11: ifnull 7d
      // 14: aload 3
      // 15: aload 2
      // 16: invokevirtual com/l7tech/identity/ldap/BindOnlyLdapIdentityProviderConfig.getLdapUrl ()[Ljava/lang/String;
      // 19: ifnonnull 2b
      // 1c: goto 23
      // 1f: invokestatic com/l7tech/external/assertions/gatewaymanagement/server/IdentityProviderResourceFactory.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 22: athrow
      // 23: aconst_null
      // 24: goto 32
      // 27: invokestatic com/l7tech/external/assertions/gatewaymanagement/server/IdentityProviderResourceFactory.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 2a: athrow
      // 2b: aload 2
      // 2c: invokevirtual com/l7tech/identity/ldap/BindOnlyLdapIdentityProviderConfig.getLdapUrl ()[Ljava/lang/String;
      // 2f: invokestatic java/util/Arrays.asList ([Ljava/lang/Object;)Ljava/util/List;
      // 32: invokevirtual com/l7tech/gateway/api/IdentityProviderMO$BindOnlyLdapIdentityProviderDetail.setServerUrls (Ljava/util/List;)V
      // 35: aload 3
      // 36: aload 2
      // 37: invokevirtual com/l7tech/identity/ldap/BindOnlyLdapIdentityProviderConfig.isClientAuthEnabled ()Z
      // 3a: invokevirtual com/l7tech/gateway/api/IdentityProviderMO$BindOnlyLdapIdentityProviderDetail.setUseSslClientAuthentication (Z)V
      // 3d: aload 2
      // 3e: invokevirtual com/l7tech/identity/ldap/BindOnlyLdapIdentityProviderConfig.getKeystoreId ()Lcom/l7tech/objectmodel/Goid;
      // 41: ifnull 6d
      // 44: aload 2
      // 45: invokevirtual com/l7tech/identity/ldap/BindOnlyLdapIdentityProviderConfig.getKeyAlias ()Ljava/lang/String;
      // 48: ifnull 6d
      // 4b: goto 52
      // 4e: invokestatic com/l7tech/external/assertions/gatewaymanagement/server/IdentityProviderResourceFactory.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 51: athrow
      // 52: aload 3
      // 53: aload 2
      // 54: invokevirtual com/l7tech/identity/ldap/BindOnlyLdapIdentityProviderConfig.getKeystoreId ()Lcom/l7tech/objectmodel/Goid;
      // 57: invokestatic java/lang/String.valueOf (Ljava/lang/Object;)Ljava/lang/String;
      // 5a: aload 2
      // 5b: invokevirtual com/l7tech/identity/ldap/BindOnlyLdapIdentityProviderConfig.getKeyAlias ()Ljava/lang/String;
      // 5e: 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" ]
      // 63: invokevirtual com/l7tech/gateway/api/IdentityProviderMO$BindOnlyLdapIdentityProviderDetail.setSslKeyId (Ljava/lang/String;)V
      // 66: goto 6d
      // 69: invokestatic com/l7tech/external/assertions/gatewaymanagement/server/IdentityProviderResourceFactory.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 6c: athrow
      // 6d: aload 3
      // 6e: aload 2
      // 6f: invokevirtual com/l7tech/identity/ldap/BindOnlyLdapIdentityProviderConfig.getBindPatternPrefix ()Ljava/lang/String;
      // 72: invokevirtual com/l7tech/gateway/api/IdentityProviderMO$BindOnlyLdapIdentityProviderDetail.setBindPatternPrefix (Ljava/lang/String;)V
      // 75: aload 3
      // 76: aload 2
      // 77: invokevirtual com/l7tech/identity/ldap/BindOnlyLdapIdentityProviderConfig.getBindPatternSuffix ()Ljava/lang/String;
      // 7a: invokevirtual com/l7tech/gateway/api/IdentityProviderMO$BindOnlyLdapIdentityProviderDetail.setBindPatternSuffix (Ljava/lang/String;)V
      // 7d: return
      // try (9 -> 15): 16 com/l7tech/external/assertions/gatewaymanagement/server/ResourceFactory$ResourceAccessException
      // try (11 -> 20): 20 com/l7tech/external/assertions/gatewaymanagement/server/ResourceFactory$ResourceAccessException
      // try (25 -> 36): 37 com/l7tech/external/assertions/gatewaymanagement/server/ResourceFactory$ResourceAccessException
      // try (33 -> 47): 48 com/l7tech/external/assertions/gatewaymanagement/server/ResourceFactory$ResourceAccessException
   }

   private void a(IdentityProviderMO param1, PolicyBackedIdentityProviderConfig param2) {
      // $VF: Couldn't be decompiled
      // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
      // java.lang.RuntimeException: parsing failure!
      //   at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211)
      //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174)
      //
      // Bytecode:
      // 00: aload 1
      // 01: aload 0
      // 02: aload 2
      // 03: ldc com/l7tech/identity/external/PolicyBackedIdentityProviderConfig
      // 05: invokevirtual com/l7tech/external/assertions/gatewaymanagement/server/IdentityProviderResourceFactory.getProperties (Lcom/l7tech/objectmodel/PersistentEntity;Ljava/lang/Class;)Ljava/util/Map;
      // 08: invokevirtual com/l7tech/gateway/api/IdentityProviderMO.setProperties (Ljava/util/Map;)V
      // 0b: aload 1
      // 0c: invokevirtual com/l7tech/gateway/api/IdentityProviderMO.getPolicyBackedIdentityProviderDetail ()Lcom/l7tech/gateway/api/IdentityProviderMO$PolicyBackedIdentityProviderDetail;
      // 0f: astore 3
      // 10: aload 3
      // 11: ifnull 40
      // 14: aload 3
      // 15: aload 2
      // 16: invokevirtual com/l7tech/identity/external/PolicyBackedIdentityProviderConfig.getPolicyId ()Lcom/l7tech/objectmodel/Goid;
      // 19: invokevirtual com/l7tech/objectmodel/Goid.toString ()Ljava/lang/String;
      // 1c: invokevirtual com/l7tech/gateway/api/IdentityProviderMO$PolicyBackedIdentityProviderDetail.setAuthenticationPolicyId (Ljava/lang/String;)V
      // 1f: aload 3
      // 20: aload 2
      // 21: invokevirtual com/l7tech/identity/external/PolicyBackedIdentityProviderConfig.getDefaultRoleId ()Lcom/l7tech/objectmodel/Goid;
      // 24: ifnonnull 36
      // 27: goto 2e
      // 2a: invokestatic com/l7tech/external/assertions/gatewaymanagement/server/IdentityProviderResourceFactory.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 2d: athrow
      // 2e: aconst_null
      // 2f: goto 3d
      // 32: invokestatic com/l7tech/external/assertions/gatewaymanagement/server/IdentityProviderResourceFactory.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 35: athrow
      // 36: aload 2
      // 37: invokevirtual com/l7tech/identity/external/PolicyBackedIdentityProviderConfig.getDefaultRoleId ()Lcom/l7tech/objectmodel/Goid;
      // 3a: invokevirtual com/l7tech/objectmodel/Goid.toString ()Ljava/lang/String;
      // 3d: invokevirtual com/l7tech/gateway/api/IdentityProviderMO$PolicyBackedIdentityProviderDetail.setDefaultRoleAssignmentId (Ljava/lang/String;)V
      // 40: return
      // try (9 -> 20): 21 com/l7tech/external/assertions/gatewaymanagement/server/ResourceFactory$ResourceAccessException
      // try (11 -> 25): 25 com/l7tech/external/assertions/gatewaymanagement/server/ResourceFactory$ResourceAccessException
   }

   private List<LdapIdentityProviderMapping> a(UserMappingConfig[] var1) {
      List var2 = null;
      if (var1 != null) {
         Set var10000 = BeanUtils.getProperties(UserMappingConfig.class);
         String[] var10001 = new String[2];
         String[] var4 = u;
         var10001[0] = var4[1];
         var10001[1] = var4[16];
         Set var3 = BeanUtils.omitProperties(var10000, var10001);
         var2 = Functions.map(Arrays.asList(var1), new au(this, var3));
      }

      return var2;
   }

   private List<LdapIdentityProviderMapping> a(GroupMappingConfig[] var1) {
      List var2 = null;
      if (var1 != null) {
         Set var10000 = BeanUtils.getProperties(GroupMappingConfig.class);
         String[] var10001 = new String[2];
         String[] var4 = u;
         var10001[0] = var4[15];
         var10001[1] = var4[36];
         Set var3 = BeanUtils.omitProperties(var10000, var10001);
         var2 = Functions.map(Arrays.asList(var1), new av(this, var3));
      }

      return var2;
   }

   private UserMappingConfig[] a(List<LdapIdentityProviderMapping> var1) throws ResourceFactory.InvalidResourceException {
      UserMappingConfig[] var2;
      if (var1 == null) {
         var2 = new UserMappingConfig[0];
      } else {
         Set var10000 = BeanUtils.getProperties(UserMappingConfig.class);
         String[] var10001 = new String[2];
         String[] var5 = u;
         var10001[0] = var5[15];
         var10001[1] = var5[0];
         Set var3 = BeanUtils.omitProperties(var10000, var10001);
         List var4 = Functions.map(var1, new aw(this, var3));
         var2 = var4.toArray(new UserMappingConfig[var4.size()]);
      }

      return var2;
   }

   private GroupMappingConfig[] b(List<LdapIdentityProviderMapping> var1) throws ResourceFactory.InvalidResourceException {
      GroupMappingConfig[] var2;
      if (var1 == null) {
         var2 = new GroupMappingConfig[0];
      } else {
         Set var10000 = BeanUtils.getProperties(GroupMappingConfig.class);
         String[] var10001 = new String[2];
         String[] var5 = u;
         var10001[0] = var5[15];
         var10001[1] = var5[25];
         Set var3 = BeanUtils.omitProperties(var10000, var10001);
         List var4 = Functions.map(var1, new ax(this, var3));
         var2 = var4.toArray(new GroupMappingConfig[var4.size()]);
      }

      return var2;
   }

   private String a(MemberStrategy var1) {
      String var2;
      if (MemberStrategy.MEMBERS_ARE_DN.equals(var1)) {
         String[] var3 = u;
         var2 = var3[26];
      } else if (MemberStrategy.MEMBERS_ARE_LOGIN.equals(var1)) {
         String[] var4 = u;
         var2 = var4[28];
      } else if (MemberStrategy.MEMBERS_ARE_NVPAIR.equals(var1)) {
         String[] var5 = u;
         var2 = var5[34];
      } else {
         if (!MemberStrategy.MEMBERS_BY_OU.equals(var1)) {
            throw new ResourceFactory.ResourceAccessException(u[11] + var1.getVal());
         }

         String[] var6 = u;
         var2 = var6[7];
      }

      return var2;
   }

   private MemberStrategy a(Option<String> var1) throws ResourceFactory.InvalidResourceException {
      try {
         if (!var1.isSome()) {
            throw new ResourceFactory.InvalidResourceException(ResourceFactory.InvalidResourceException.ExceptionType.MISSING_VALUES, u[4]);
         }
      } catch (ResourceFactory.InvalidResourceException var4) {
         throw a(var4);
      }

      String[] var3 = u;
      MemberStrategy var2;
      if (var3[5].equals(var1.some())) {
         var2 = MemberStrategy.MEMBERS_ARE_DN;
      } else {
         var3 = u;
         if (var3[24].equals(var1.some())) {
            var2 = MemberStrategy.MEMBERS_ARE_LOGIN;
         } else {
            var3 = u;
            if (var3[21].equals(var1.some())) {
               var2 = MemberStrategy.MEMBERS_ARE_NVPAIR;
            } else {
               var3 = u;
               if (!var3[10].equals(var1.some())) {
                  throw new ResourceFactory.InvalidResourceException(ResourceFactory.InvalidResourceException.ExceptionType.INVALID_VALUES, u[35] + var1);
               }

               var2 = MemberStrategy.MEMBERS_BY_OU;
            }
         }
      }

      return var2;
   }

   private Map<String, Object> a(Object var1, Set<PropertyDescriptor> var2) {
      HashMap var3 = new HashMap();

      for (PropertyDescriptor var5 : var2) {
         try {
            Object var6 = var5.getReadMethod().invoke(var1);

            try {
               if (var6 instanceof String) {
                  var3.put(var5.getName(), var6);
               }
            } catch (IllegalAccessException var7) {
               throw a(var7);
            }
         } catch (IllegalAccessException var8) {
            throw new ResourceFactory.ResourceAccessException(var8);
         } catch (InvocationTargetException var9) {
            throw new ResourceFactory.ResourceAccessException(var9.getCause());
         }
      }

      return var3;
   }

   private void a(Object var1, Map<String, Object> var2, Set<PropertyDescriptor> var3) {
      try {
         BeanUtils.copyProperties(var2, null, var1, var3);
      } catch (IllegalAccessException var5) {
         throw new ResourceFactory.ResourceAccessException(var5);
      } catch (InvocationTargetException var6) {
         throw new ResourceFactory.ResourceAccessException(var6.getCause());
      }
   }

   private LdapIdentityProviderConfig b(IdentityProviderMO var1, LdapIdentityProviderConfig var2) throws ResourceFactory.InvalidResourceException {
      LdapIdentityProviderDetail var3 = var1.getLdapIdentityProviderDetail();
      if (var3 != null) {
         LdapIdentityProviderConfig var4;
         try {
            var4 = this.t.getTemplate(var3.getSourceType());

            try {
               if (var4 == null) {
                  throw new ResourceFactory.InvalidResourceException(
                     ResourceFactory.InvalidResourceException.ExceptionType.INVALID_VALUES, u[12] + var3.getSourceType() + "'"
                  );
               }
            } catch (IOException var12) {
               throw a(var12);
            }
         } catch (IOException var13) {
            String var10002 = var3.getSourceType();
            String[] var10 = u;
            throw new ResourceFactory.ResourceAccessException(var10[17] + var10002 + "'", var13);
         }

         LdapIdentityProviderConfig var10000;
         String[] var10001;
         label121: {
            try {
               var2.setTemplateName(var4.getTemplateName());
               var10000 = var2;
               if (var3.getServerUrls() == null) {
                  var10001 = null;
                  break label121;
               }
            } catch (IOException var18) {
               throw a(var18);
            }

            var10001 = var3.getServerUrls().toArray(new String[var3.getServerUrls().size()]);
         }

         var10000.setLdapUrl(var10001);
         var2.setClientAuthEnabled(var3.isUseSslClientClientAuthentication());
         if (var3.getSslKeyId() != null) {
            String[] var5 = var3.getSslKeyId().split(":", 2);

            try {
               if (var5.length != 2) {
                  throw new ResourceFactory.InvalidResourceException(ResourceFactory.InvalidResourceException.ExceptionType.INVALID_VALUES, u[8]);
               }
            } catch (IOException var17) {
               throw a(var17);
            }

            String var10003 = var5[0];
            String[] var25 = u;
            var2.setKeystoreId(this.toInternalId(EntityType.SSG_KEYSTORE, var10003, var25[3]));
            var2.setKeyAlias(var5[1]);
         }

         label99: {
            try {
               var2.setSearchBase(var3.getSearchBase());
               var2.setBindDN(var3.getBindDn());
               var2.setWritable(var3.isWritable());
               var2.setWriteBase(var3.getWriteBase());
               var2.setReconnectTimeout(var3.getReconnectTimeout());
               var2.setBindPasswd(var3.getBindPassword());
               var10000 = var2;
               if (var3.hasUserMappings()) {
                  var31 = this.a(var3.getUserMappings());
                  break label99;
               }
            } catch (IOException var16) {
               throw a(var16);
            }

            var31 = var4.getUserMappings();
         }

         label92: {
            try {
               var10000.setUserMappings(var31);
               var10000 = var2;
               if (var3.hasGroupMappings()) {
                  var32 = this.b(var3.getGroupMappings());
                  break label92;
               }
            } catch (IOException var15) {
               throw a(var15);
            }

            var32 = var4.getGroupMappings();
         }

         label85: {
            try {
               var10000.setGroupMappings(var32);
               var10000 = var2;
               if (var3.getSpecifiedAttributes() == null) {
                  var10001 = null;
                  break label85;
               }
            } catch (IOException var14) {
               throw a(var14);
            }

            var10001 = var3.getSpecifiedAttributes().toArray(new String[var3.getSpecifiedAttributes().size()]);
         }

         var10000.setReturningAttributes(var10001);
         if (var3.getNtlmProperties() != null) {
            Map var20 = var3.getNtlmProperties();
            TreeMap var6 = new TreeMap();

            for (String var8 : var20.keySet()) {
               var6.put(var8, (String)var20.get(var8));
            }

            var2.setNtlmAuthenticationProviderProperties(var6);
         }
      }

      Map var30 = var1.getProperties();
      String[] var26 = u;
      if (var30.get(var26[9]) != null) {
         String var19 = (String)var1.getProperties().get(var26[23]);
         boolean var21 = false;

         for (TimeUnit var9 : TimeUnit.ALL) {
            if (var9.getName().equals(var19)) {
               var2.setGroupCacheMaxAgeUnit(var9);
               var21 = true;
               break;
            }
         }

         try {
            if (!var21) {
               throw new ResourceFactory.InvalidResourceException(ResourceFactory.InvalidResourceException.ExceptionType.INVALID_VALUES, u[33]);
            }
         } catch (IOException var11) {
            throw a(var11);
         }
      }

      return var2;
   }

   private BindOnlyLdapIdentityProviderConfig b(IdentityProviderMO param1, BindOnlyLdapIdentityProviderConfig param2) throws ResourceFactory.InvalidResourceException {
      // $VF: Couldn't be decompiled
      // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
      // java.lang.RuntimeException: parsing failure!
      //   at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211)
      //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174)
      //
      // Bytecode:
      // 00: aload 1
      // 01: invokevirtual com/l7tech/gateway/api/IdentityProviderMO.getBindOnlyLdapIdentityProviderDetail ()Lcom/l7tech/gateway/api/IdentityProviderMO$BindOnlyLdapIdentityProviderDetail;
      // 04: astore 3
      // 05: aload 3
      // 06: ifnull 9f
      // 09: aload 2
      // 0a: aload 3
      // 0b: invokevirtual com/l7tech/gateway/api/IdentityProviderMO$BindOnlyLdapIdentityProviderDetail.getServerUrls ()Ljava/util/List;
      // 0e: ifnonnull 20
      // 11: goto 18
      // 14: invokestatic com/l7tech/external/assertions/gatewaymanagement/server/IdentityProviderResourceFactory.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 17: athrow
      // 18: aconst_null
      // 19: goto 38
      // 1c: invokestatic com/l7tech/external/assertions/gatewaymanagement/server/IdentityProviderResourceFactory.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 1f: athrow
      // 20: aload 3
      // 21: invokevirtual com/l7tech/gateway/api/IdentityProviderMO$BindOnlyLdapIdentityProviderDetail.getServerUrls ()Ljava/util/List;
      // 24: aload 3
      // 25: invokevirtual com/l7tech/gateway/api/IdentityProviderMO$BindOnlyLdapIdentityProviderDetail.getServerUrls ()Ljava/util/List;
      // 28: invokeinterface java/util/List.size ()I 1
      // 2d: anewarray 3
      // 30: invokeinterface java/util/List.toArray ([Ljava/lang/Object;)[Ljava/lang/Object; 2
      // 35: checkcast [Ljava/lang/String;
      // 38: invokevirtual com/l7tech/identity/ldap/BindOnlyLdapIdentityProviderConfig.setLdapUrl ([Ljava/lang/String;)V
      // 3b: aload 2
      // 3c: aload 3
      // 3d: invokevirtual com/l7tech/gateway/api/IdentityProviderMO$BindOnlyLdapIdentityProviderDetail.isUseSslClientClientAuthentication ()Z
      // 40: invokevirtual com/l7tech/identity/ldap/BindOnlyLdapIdentityProviderConfig.setClientAuthEnabled (Z)V
      // 43: aload 3
      // 44: invokevirtual com/l7tech/gateway/api/IdentityProviderMO$BindOnlyLdapIdentityProviderDetail.getSslKeyId ()Ljava/lang/String;
      // 47: ifnull 8f
      // 4a: aload 3
      // 4b: invokevirtual com/l7tech/gateway/api/IdentityProviderMO$BindOnlyLdapIdentityProviderDetail.getSslKeyId ()Ljava/lang/String;
      // 4e: ldc ":"
      // 50: bipush 2
      // 51: invokevirtual java/lang/String.split (Ljava/lang/String;I)[Ljava/lang/String;
      // 54: astore 4
      // 56: aload 4
      // 58: arraylength
      // 59: bipush 2
      // 5a: if_icmpeq 72
      // 5d: new com/l7tech/external/assertions/gatewaymanagement/server/ResourceFactory$InvalidResourceException
      // 60: dup
      // 61: getstatic com/l7tech/external/assertions/gatewaymanagement/server/ResourceFactory$InvalidResourceException$ExceptionType.INVALID_VALUES Lcom/l7tech/external/assertions/gatewaymanagement/server/ResourceFactory$InvalidResourceException$ExceptionType;
      // 64: getstatic com/l7tech/external/assertions/gatewaymanagement/server/IdentityProviderResourceFactory.u [Ljava/lang/String;
      // 67: bipush 22
      // 69: aaload
      // 6a: invokespecial com/l7tech/external/assertions/gatewaymanagement/server/ResourceFactory$InvalidResourceException.<init> (Lcom/l7tech/external/assertions/gatewaymanagement/server/ResourceFactory$InvalidResourceException$ExceptionType;Ljava/lang/String;)V
      // 6d: athrow
      // 6e: invokestatic com/l7tech/external/assertions/gatewaymanagement/server/IdentityProviderResourceFactory.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 71: athrow
      // 72: aload 2
      // 73: aload 0
      // 74: getstatic com/l7tech/objectmodel/EntityType.SSG_KEYSTORE Lcom/l7tech/objectmodel/EntityType;
      // 77: aload 4
      // 79: bipush 0
      // 7a: aaload
      // 7b: getstatic com/l7tech/external/assertions/gatewaymanagement/server/IdentityProviderResourceFactory.u [Ljava/lang/String;
      // 7e: bipush 31
      // 80: aaload
      // 81: invokevirtual com/l7tech/external/assertions/gatewaymanagement/server/IdentityProviderResourceFactory.toInternalId (Lcom/l7tech/objectmodel/EntityType;Ljava/lang/String;Ljava/lang/String;)Lcom/l7tech/objectmodel/Goid;
      // 84: invokevirtual com/l7tech/identity/ldap/BindOnlyLdapIdentityProviderConfig.setKeystoreId (Lcom/l7tech/objectmodel/Goid;)V
      // 87: aload 2
      // 88: aload 4
      // 8a: bipush 1
      // 8b: aaload
      // 8c: invokevirtual com/l7tech/identity/ldap/BindOnlyLdapIdentityProviderConfig.setKeyAlias (Ljava/lang/String;)V
      // 8f: aload 2
      // 90: aload 3
      // 91: invokevirtual com/l7tech/gateway/api/IdentityProviderMO$BindOnlyLdapIdentityProviderDetail.getBindPatternPrefix ()Ljava/lang/String;
      // 94: invokevirtual com/l7tech/identity/ldap/BindOnlyLdapIdentityProviderConfig.setBindPatternPrefix (Ljava/lang/String;)V
      // 97: aload 2
      // 98: aload 3
      // 99: invokevirtual com/l7tech/gateway/api/IdentityProviderMO$BindOnlyLdapIdentityProviderDetail.getBindPatternSuffix ()Ljava/lang/String;
      // 9c: invokevirtual com/l7tech/identity/ldap/BindOnlyLdapIdentityProviderConfig.setBindPatternSuffix (Ljava/lang/String;)V
      // 9f: aload 2
      // a0: areturn
      // try (3 -> 9): 10 com/l7tech/external/assertions/gatewaymanagement/server/ResourceFactory$InvalidResourceException
      // try (5 -> 14): 14 com/l7tech/external/assertions/gatewaymanagement/server/ResourceFactory$InvalidResourceException
      // try (38 -> 50): 50 com/l7tech/external/assertions/gatewaymanagement/server/ResourceFactory$InvalidResourceException
   }

   private PolicyBackedIdentityProviderConfig b(IdentityProviderMO param1, PolicyBackedIdentityProviderConfig param2) throws ResourceFactory.InvalidResourceException {
      // $VF: Couldn't be decompiled
      // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
      // java.lang.RuntimeException: parsing failure!
      //   at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211)
      //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174)
      //
      // Bytecode:
      // 00: aload 1
      // 01: invokevirtual com/l7tech/gateway/api/IdentityProviderMO.getPolicyBackedIdentityProviderDetail ()Lcom/l7tech/gateway/api/IdentityProviderMO$PolicyBackedIdentityProviderDetail;
      // 04: astore 3
      // 05: aload 3
      // 06: ifnull 48
      // 09: aload 2
      // 0a: aload 0
      // 0b: getstatic com/l7tech/objectmodel/EntityType.POLICY Lcom/l7tech/objectmodel/EntityType;
      // 0e: aload 3
      // 0f: invokevirtual com/l7tech/gateway/api/IdentityProviderMO$PolicyBackedIdentityProviderDetail.getAuthenticationPolicyId ()Ljava/lang/String;
      // 12: getstatic com/l7tech/external/assertions/gatewaymanagement/server/IdentityProviderResourceFactory.u [Ljava/lang/String;
      // 15: bipush 32
      // 17: aaload
      // 18: invokevirtual com/l7tech/external/assertions/gatewaymanagement/server/IdentityProviderResourceFactory.toInternalId (Lcom/l7tech/objectmodel/EntityType;Ljava/lang/String;Ljava/lang/String;)Lcom/l7tech/objectmodel/Goid;
      // 1b: invokevirtual com/l7tech/identity/external/PolicyBackedIdentityProviderConfig.setPolicyId (Lcom/l7tech/objectmodel/Goid;)V
      // 1e: aload 3
      // 1f: invokevirtual com/l7tech/gateway/api/IdentityProviderMO$PolicyBackedIdentityProviderDetail.getDefaultRoleAssignmentId ()Ljava/lang/String;
      // 22: ifnull 48
      // 25: goto 2c
      // 28: invokestatic com/l7tech/external/assertions/gatewaymanagement/server/IdentityProviderResourceFactory.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 2b: athrow
      // 2c: aload 2
      // 2d: aload 0
      // 2e: getstatic com/l7tech/objectmodel/EntityType.RBAC_ROLE Lcom/l7tech/objectmodel/EntityType;
      // 31: aload 3
      // 32: invokevirtual com/l7tech/gateway/api/IdentityProviderMO$PolicyBackedIdentityProviderDetail.getDefaultRoleAssignmentId ()Ljava/lang/String;
      // 35: getstatic com/l7tech/external/assertions/gatewaymanagement/server/IdentityProviderResourceFactory.u [Ljava/lang/String;
      // 38: bipush 13
      // 3a: aaload
      // 3b: invokevirtual com/l7tech/external/assertions/gatewaymanagement/server/IdentityProviderResourceFactory.toInternalId (Lcom/l7tech/objectmodel/EntityType;Ljava/lang/String;Ljava/lang/String;)Lcom/l7tech/objectmodel/Goid;
      // 3e: invokevirtual com/l7tech/identity/external/PolicyBackedIdentityProviderConfig.setDefaultRoleId (Lcom/l7tech/objectmodel/Goid;)V
      // 41: goto 48
      // 44: invokestatic com/l7tech/external/assertions/gatewaymanagement/server/IdentityProviderResourceFactory.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 47: athrow
      // 48: aload 2
      // 49: areturn
      // try (3 -> 18): 19 com/l7tech/external/assertions/gatewaymanagement/server/ResourceFactory$InvalidResourceException
      // try (5 -> 31): 32 com/l7tech/external/assertions/gatewaymanagement/server/ResourceFactory$InvalidResourceException
   }

   private void a(LdapIdentityProviderConfig var1, LdapIdentityProviderConfig var2) {
      label17: {
         try {
            this.a((LdapUrlBasedIdentityProviderConfig)var1, (LdapUrlBasedIdentityProviderConfig)var2);
            var1.setSearchBase(var2.getSearchBase());
            var1.setBindDN(var2.getBindDN());
            var1.setBindPasswd(var2.getBindPasswd());
            var1.setAdminEnabled(var2.isAdminEnabled());
            var1.setGroupMappings(var2.getGroupMappings());
            var1.setUserMappings(var2.getUserMappings());
            var1.setGroupCacheSize(var2.getGroupCacheSize());
            var1.setGroupCacheMaxAge(var2.getGroupCacheMaxAge());
            var1.setGroupCacheMaxAgeUnit(TimeUnit.largestUnitForValue(var2.getGroupCacheMaxAge(), TimeUnit.MINUTES));
            var1.setGroupMaxNesting(var2.getGroupMaxNesting());
            var1.setGroupMembershipCaseInsensitive(var2.isGroupMembershipCaseInsensitive());
            var1.setReturningAttributes(var2.getReturningAttributes());
            var1.setUserCertificateUseType(var2.getUserCertificateUseType());
            var1.setUserCertificateIndexSearchFilter(null);
            var1.setUserCertificateIssuerSerialSearchFilter(null);
            var1.setUserCertificateSKISearchFilter(null);
            switch (ay.b[var2.getUserCertificateUseType().ordinal()]) {
               case 1:
                  var1.setUserCertificateIndexSearchFilter(var2.getUserCertificateIndexSearchFilter());
                  break label17;
               case 2:
                  break;
               default:
                  break label17;
            }
         } catch (ResourceFactory.ResourceAccessException var3) {
            throw a(var3);
         }

         var1.setUserCertificateIssuerSerialSearchFilter(var2.getUserCertificateIssuerSerialSearchFilter());
         var1.setUserCertificateSKISearchFilter(var2.getUserCertificateSKISearchFilter());
      }

      var1.setUserLookupByCertMode(var2.getUserLookupByCertMode());
   }

   private void a(BindOnlyLdapIdentityProviderConfig var1, BindOnlyLdapIdentityProviderConfig var2) {
      this.a((LdapUrlBasedIdentityProviderConfig)var1, (LdapUrlBasedIdentityProviderConfig)var2);
      var1.setBindPatternPrefix(var2.getBindPatternPrefix());
      var1.setBindPatternSuffix(var2.getBindPatternSuffix());
   }

   private void a(FederatedIdentityProviderConfig var1, FederatedIdentityProviderConfig var2) {
      this.a((IdentityProviderConfig)var1, (IdentityProviderConfig)var2);
      var1.setSamlSupported(var2.isSamlSupported());
      var1.setX509Supported(var2.isX509Supported());
      var1.setTrustedCertGoids(var2.getTrustedCertGoids());
   }

   private void a(LdapUrlBasedIdentityProviderConfig var1, LdapUrlBasedIdentityProviderConfig var2) {
      this.a((IdentityProviderConfig)var1, (IdentityProviderConfig)var2);
      var1.setLdapUrl(var2.getLdapUrl());
      var1.setClientAuthEnabled(var2.isClientAuthEnabled());
      var1.setKeyAlias(var2.getKeyAlias());
      var1.setKeystoreId(var2.getKeystoreId());
      var1.setReconnectTimeout(var2.getReconnectTimeout());
   }

   private void a(PolicyBackedIdentityProviderConfig var1, PolicyBackedIdentityProviderConfig var2) {
      this.a((IdentityProviderConfig)var1, (IdentityProviderConfig)var2);
      var1.setDefaultRoleId(var2.getDefaultRoleId());
      var1.setPolicyId(var2.getPolicyId());
      var1.setAdminEnabled(var2.isAdminEnabled());
   }

   private void a(IdentityProviderConfig var1, IdentityProviderConfig var2) {
      var1.setName(var2.getName());
   }

   @Override
   protected void beforeCreateEntity(EntityManagerResourceFactory.EntityBag<IdentityProviderConfig> var1) throws ObjectModelException {
      try {
         if (com.l7tech.identity.IdentityProviderType.INTERNAL.toVal() == ((IdentityProviderConfig)var1.getEntity()).getTypeVal()) {
            throw new SaveException(u[6]);
         }
      } catch (ObjectModelException var2) {
         throw a(var2);
      }
   }

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

   static {
      String[] var5 = new String[37];
      int var3 = 0;
      String var2 = ";l\t9\u000f;@2}\u001f\u000b$o\u0010/\u001b+W'l\t9\u001a.u\n/\u001b+q/-\u0013.\u001d1`\"y\u0003j\b-{=d\u001e/\n\u0012\u0018^6j\u0013:mkd\u001e/\u0016+}-d\u001f8!\u0006d\t9\u00111skj\b%\r/4&h\u0017(\u001d-g#d\nj\u000b+f*y\u001f-\u0001\u0011\u0006h\u0017(\u001d-4\"~Z\u001f\u000b:fkI4)\bl\u0014$\u0017+48l\f/X>zkD\u0014>\u001d-z*aZ\u0003\u001c:z?d\u000e3X\u000ff${\u0013.\u001d-\b\u0004XZ\r\n0a;\u001a\u0002c\f+\u00146pk^)\u0006X4q2-\u0013.\u001d1`\"k\u0013/\n\u0018,\u007f\u0015?\b\u001cu(e\u001f\u0007\u0019'}&x\u0017\u000b\u001f:A%d\u000e\b\u0004XZ\r\n0a;$\u001ec\u0011$\u0017(zkj\b%\r/4&h\u0017(\u001d-g#d\nj\u000b+f*y\u001f-\u0001\u007f.k\u0015\u001ec\u0011$\u0017(zk~\u0015?\n<qky\u0003:\u001d\u007f3%\u001bb\u0016#\u001b&4\tl\u0019!\u001d;4\u000fh\u001c+\r3`k_\u0015&\u001d\u007fU8~\u0013-\u00162q%y \u001ec\u0011$\u0017(zkd\u001e/\u0016+}?tZ:\n0b\"i\u001f8X+m;hZm\u000b$o\u0010/\u001b+W'l\t9\n;l\t9\u000f;@2}\u001f*\u000e\u007f\b%\n\u007fu(n\u001f9\u000b6z,-\u000e/\u0015/x*y\u001fj\u001e0fk~\u0015?\n<qky\u0003:\u001d\u007f3\u001d\"c\f+\u00146pkn\u001f8\f6r\"n\u001b>\u001d\u007ff.k\u001f8\u001d1w.\u001b(l\u0014$\u0017+4(e\u001b$\u001f:4;\u007f\u0015<\u0011;q9-\u000e3\b:\u0015(h\b>\u00119}(l\u000e/.>x\"i\u001b>\u00110z\u0011\u0006h\u0017(\u001d-4\"~Z\u0004.\u007fD*d\b\u001a\u0002c\f+\u00146pk^)\u0006X4q2-\u0013.\u001d1`\"k\u0013/\n\u0018,\u007f\u0015?\b\u001cu(e\u001f\u0007\u0019'}&x\u0017\u000b\u001f:A%d\u000e\u0014\u0006h\u0017(\u001d-4\"~Z\u001f\u000b:fkA\u0015-\u00111\u000e&h\u0017(\u001d-G?\u007f\u001b>\u001d8m\u0011\u0006h\u0017(\u001d-4\"~Z\u001f\u000b:fkI4\u0015(h\b>\u00119}(l\u000e/.>x\"i\u001b>\u00110z\u0014\u0006h\u0017(\u001d-4\"~Z\u001f\u000b:fkA\u0015-\u00111\u0002l#\u001e\"i\u001f$\f6`2-\n8\u0017)}/h\bj\f&d.-\u000f$\u00131{<c\u0012\u0018^6j\u0013:mkd\u001e/\u0016+}-d\u001f8&\u001bb\u0016#\u001b&4\tl\u0019!\u001d;4\nx\u000e\"\u001d1`\"n\u001b>\u00110zk]\u0015&\u0011<mkD\u001e)\u0002c\f+\u00146pkJ\b%\r/4\bl\u0019\"\u001d\u007fY*u\u0013'\r24\nj\u001fj,6y.-/$\u0011+\u0011\u0006h\u0017(\u001d-4\"~Z\u0004.\u007fD*d\b";
      int var4 = ";l\t9\u000f;@2}\u001f\u000b$o\u0010/\u001b+W'l\t9\u001a.u\n/\u001b+q/-\u0013.\u001d1`\"y\u0003j\b-{=d\u001e/\n\u0012\u0018^6j\u0013:mkd\u001e/\u0016+}-d\u001f8!\u0006d\t9\u00111skj\b%\r/4&h\u0017(\u001d-g#d\nj\u000b+f*y\u001f-\u0001\u0011\u0006h\u0017(\u001d-4\"~Z\u001f\u000b:fkI4)\bl\u0014$\u0017+48l\f/X>zkD\u0014>\u001d-z*aZ\u0003\u001c:z?d\u000e3X\u000ff${\u0013.\u001d-\b\u0004XZ\r\n0a;\u001a\u0002c\f+\u00146pk^)\u0006X4q2-\u0013.\u001d1`\"k\u0013/\n\u0018,\u007f\u0015?\b\u001cu(e\u001f\u0007\u0019'}&x\u0017\u000b\u001f:A%d\u000e\b\u0004XZ\r\n0a;$\u001ec\u0011$\u0017(zkj\b%\r/4&h\u0017(\u001d-g#d\nj\u000b+f*y\u001f-\u0001\u007f.k\u0015\u001ec\u0011$\u0017(zk~\u0015?\n<qky\u0003:\u001d\u007f3%\u001bb\u0016#\u001b&4\tl\u0019!\u001d;4\u000fh\u001c+\r3`k_\u0015&\u001d\u007fU8~\u0013-\u00162q%y \u001ec\u0011$\u0017(zkd\u001e/\u0016+}?tZ:\n0b\"i\u001f8X+m;hZm\u000b$o\u0010/\u001b+W'l\t9\n;l\t9\u000f;@2}\u001f*\u000e\u007f\b%\n\u007fu(n\u001f9\u000b6z,-\u000e/\u0015/x*y\u001fj\u001e0fk~\u0015?\n<qky\u0003:\u001d\u007f3\u001d\"c\f+\u00146pkn\u001f8\f6r\"n\u001b>\u001d\u007ff.k\u001f8\u001d1w.\u001b(l\u0014$\u0017+4(e\u001b$\u001f:4;\u007f\u0015<\u0011;q9-\u000e3\b:\u0015(h\b>\u00119}(l\u000e/.>x\"i\u001b>\u00110z\u0011\u0006h\u0017(\u001d-4\"~Z\u0004.\u007fD*d\b\u001a\u0002c\f+\u00146pk^)\u0006X4q2-\u0013.\u001d1`\"k\u0013/\n\u0018,\u007f\u0015?\b\u001cu(e\u001f\u0007\u0019'}&x\u0017\u000b\u001f:A%d\u000e\u0014\u0006h\u0017(\u001d-4\"~Z\u001f\u000b:fkA\u0015-\u00111\u000e&h\u0017(\u001d-G?\u007f\u001b>\u001d8m\u0011\u0006h\u0017(\u001d-4\"~Z\u001f\u000b:fkI4\u0015(h\b>\u00119}(l\u000e/.>x\"i\u001b>\u00110z\u0014\u0006h\u0017(\u001d-4\"~Z\u001f\u000b:fkA\u0015-\u00111\u0002l#\u001e\"i\u001f$\f6`2-\n8\u0017)}/h\bj\f&d.-\u000f$\u00131{<c\u0012\u0018^6j\u0013:mkd\u001e/\u0016+}-d\u001f8&\u001bb\u0016#\u001b&4\tl\u0019!\u001d;4\nx\u000e\"\u001d1`\"n\u001b>\u00110zk]\u0015&\u0011<mkD\u001e)\u0002c\f+\u00146pkJ\b%\r/4\bl\u0019\"\u001d\u007fY*u\u0013'\r24\nj\u001fj,6y.-/$\u0011+\u0011\u0006h\u0017(\u001d-4\"~Z\u0004.\u007fD*d\b"
         .length();
      char var1 = '\n';
      int var7 = -1;

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

         while (true) {
            String var8 = d(var10000, a(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var8;
                  if ((var7 += var1) >= var4) {
                     u = var5;
                     String[] var9 = u;
                     q = u[28];
                     s = var9[7];
                     o = var9[27];
                     p = var9[26];
                     r = var9[34];
                     return;
                  }

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

                  var2 = "z\u001btSlN\b\u0013\u0012p]uWL^\u0010oPeU\u001f[\u001cr\u0012sS\u001eR\u0001gUy\u0007V\u0013\u000e^\u0010oPeU?G\u0007cFe@\u0015";
                  var4 = "z\u001btSlN\b\u0013\u0012p]uWL^\u0010oPeU\u001f[\u001cr\u0012sS\u001eR\u0001gUy\u0007V\u0013\u000e^\u0010oPeU?G\u0007cFe@\u0015"
                     .length();
                  var1 = '$';
                  var7 = -1;
            }

            var10000 = 121;
            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] ^ 21);
      }

      return var10000;
   }

   private static String d(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 -> 74;
            case 1 -> 12;
            case 2 -> 123;
            case 3 -> 75;
            case 4 -> 121;
            case 5 -> 94;
            default -> 21;
         });
      }

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