/*
 * Decompiled with CFR 0.152.
 * 
 * Could not load the following classes:
 *  com.l7tech.common.io.CertUtils
 *  com.l7tech.gateway.common.audit.Audit
 *  com.l7tech.gateway.common.audit.AuditDetailMessage
 *  com.l7tech.gateway.common.audit.SystemMessages
 *  com.l7tech.identity.AuthenticationException
 *  com.l7tech.identity.BadCredentialsException
 *  com.l7tech.identity.IdentityProviderConfig
 *  com.l7tech.identity.IdentityProviderConfigManager
 *  com.l7tech.identity.InvalidIdProviderCfgException
 *  com.l7tech.identity.User
 *  com.l7tech.identity.ValidationException
 *  com.l7tech.identity.cert.ClientCertManager
 *  com.l7tech.identity.cert.ClientCertManager$VetoSave
 *  com.l7tech.identity.ldap.GroupMappingConfig
 *  com.l7tech.identity.ldap.LdapIdentityProviderConfig
 *  com.l7tech.identity.ldap.LdapIdentityProviderConfig$UserCertificateUseType
 *  com.l7tech.identity.ldap.LdapIdentityProviderConfig$UserLookupByCertMode
 *  com.l7tech.identity.ldap.LdapUrlBasedIdentityProviderConfig
 *  com.l7tech.identity.ldap.LdapUser
 *  com.l7tech.identity.ldap.MemberStrategy
 *  com.l7tech.identity.ldap.UserMappingConfig
 *  com.l7tech.kerberos.KerberosServiceTicket
 *  com.l7tech.objectmodel.EntityHeaderSet
 *  com.l7tech.objectmodel.EntityType
 *  com.l7tech.objectmodel.FindException
 *  com.l7tech.objectmodel.IdentityHeader
 *  com.l7tech.policy.assertion.credential.CredentialFormat
 *  com.l7tech.policy.assertion.credential.LoginCredentials
 *  com.l7tech.policy.variable.VariableNameSyntaxException
 *  com.l7tech.security.token.NtlmToken
 *  com.l7tech.util.ArrayUtils
 *  com.l7tech.util.ConfigFactory
 *  com.l7tech.util.ExceptionUtils
 *  com.l7tech.util.HexUtils
 *  com.l7tech.util.ResourceUtils
 *  org.jetbrains.annotations.Nullable
 *  org.springframework.beans.BeansException
 *  org.springframework.beans.factory.InitializingBean
 *  org.springframework.context.ApplicationContext
 *  org.springframework.context.ApplicationContextAware
 */
package com.l7tech.server.identity.ldap;

import com.l7tech.common.io.CertUtils;
import com.l7tech.gateway.common.audit.Audit;
import com.l7tech.gateway.common.audit.AuditDetailMessage;
import com.l7tech.gateway.common.audit.SystemMessages;
import com.l7tech.identity.AuthenticationException;
import com.l7tech.identity.BadCredentialsException;
import com.l7tech.identity.IdentityProviderConfig;
import com.l7tech.identity.IdentityProviderConfigManager;
import com.l7tech.identity.InvalidIdProviderCfgException;
import com.l7tech.identity.User;
import com.l7tech.identity.ValidationException;
import com.l7tech.identity.cert.ClientCertManager;
import com.l7tech.identity.ldap.GroupMappingConfig;
import com.l7tech.identity.ldap.LdapIdentityProviderConfig;
import com.l7tech.identity.ldap.LdapUrlBasedIdentityProviderConfig;
import com.l7tech.identity.ldap.LdapUser;
import com.l7tech.identity.ldap.MemberStrategy;
import com.l7tech.identity.ldap.UserMappingConfig;
import com.l7tech.kerberos.KerberosServiceTicket;
import com.l7tech.objectmodel.EntityHeaderSet;
import com.l7tech.objectmodel.EntityType;
import com.l7tech.objectmodel.FindException;
import com.l7tech.objectmodel.IdentityHeader;
import com.l7tech.policy.assertion.credential.CredentialFormat;
import com.l7tech.policy.assertion.credential.LoginCredentials;
import com.l7tech.policy.variable.VariableNameSyntaxException;
import com.l7tech.security.token.NtlmToken;
import com.l7tech.server.Lifecycle;
import com.l7tech.server.LifecycleException;
import com.l7tech.server.ServerConfig;
import com.l7tech.server.audit.Auditor;
import com.l7tech.server.identity.AuthenticationResult;
import com.l7tech.server.identity.ConfigurableIdentityProvider;
import com.l7tech.server.identity.DigestAuthenticator;
import com.l7tech.server.identity.SessionAuthenticator;
import com.l7tech.server.identity.cert.CertificateAuthenticator;
import com.l7tech.server.identity.ldap.LdapCertificateCache;
import com.l7tech.server.identity.ldap.LdapClassLoaderRequired;
import com.l7tech.server.identity.ldap.LdapGroupManager;
import com.l7tech.server.identity.ldap.LdapIdentityProvider;
import com.l7tech.server.identity.ldap.LdapRuntimeConfig;
import com.l7tech.server.identity.ldap.LdapSslCustomizerSupport;
import com.l7tech.server.identity.ldap.LdapUrlProviderImpl;
import com.l7tech.server.identity.ldap.LdapUserManager;
import com.l7tech.server.identity.ldap.LdapUtils;
import com.l7tech.server.identity.ldap.aa;
import com.l7tech.server.identity.ldap.ad;
import com.l7tech.server.identity.ldap.af;
import com.l7tech.server.identity.ldap.f;
import com.l7tech.server.identity.ldap.g;
import com.l7tech.server.identity.ldap.h;
import com.l7tech.server.identity.ldap.i;
import com.l7tech.server.identity.ldap.k;
import com.l7tech.server.identity.ldap.w;
import com.l7tech.server.identity.ldap.x;
import com.l7tech.server.identity.ldap.y;
import com.l7tech.server.identity.ldap.z;
import com.l7tech.server.policy.variable.ExpandVariables;
import com.l7tech.server.policy.variable.ServerVariables;
import com.l7tech.util.ArrayUtils;
import com.l7tech.util.ConfigFactory;
import com.l7tech.util.ExceptionUtils;
import com.l7tech.util.HexUtils;
import com.l7tech.util.ResourceUtils;
import java.math.BigInteger;
import java.net.URI;
import java.net.URISyntaxException;
import java.security.cert.CertificateEncodingException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Properties;
import java.util.Set;
import java.util.TreeSet;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.naming.CommunicationException;
import javax.naming.ConfigurationException;
import javax.naming.Context;
import javax.naming.NamingException;
import javax.naming.PartialResultException;
import javax.naming.SizeLimitExceededException;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
import javax.naming.directory.SearchResult;
import javax.naming.ldap.BasicControl;
import javax.naming.ldap.InitialLdapContext;
import javax.security.auth.x500.X500Principal;
import org.jetbrains.annotations.Nullable;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;

@LdapClassLoaderRequired
public class LdapIdentityProviderImpl
implements LdapIdentityProvider,
InitializingBean,
ApplicationContextAware,
ConfigurableIdentityProvider,
Lifecycle {
    private static final String a;
    private static final String b;
    private static final Logger c;
    private static final BigInteger d;
    private static final BigInteger e;
    private Auditor f;
    private LdapRuntimeConfig g;
    private LdapIdentityProviderConfig h;
    private ServerConfig i;
    private IdentityProviderConfigManager j;
    private ClientCertManager k;
    private LdapUserManager l;
    private LdapGroupManager m;
    private CertificateAuthenticator n;
    private SessionAuthenticator o;
    private LdapUrlProviderImpl p;
    private String[] q;
    private ad r;
    private LdapCertificateCache s;
    private static final String[] t;

    @Override
    public void setIdentityProviderConfig(IdentityProviderConfig identityProviderConfig) throws InvalidIdProviderCfgException {
        block16: {
            try {
                if (this.h != null) {
                    throw new InvalidIdProviderCfgException(t[42]);
                }
            }
            catch (InvalidIdProviderCfgException invalidIdProviderCfgException) {
                throw LdapIdentityProviderImpl.a((Exception)((Object)invalidIdProviderCfgException));
            }
            try {
                try {
                    this.h = (LdapIdentityProviderConfig)identityProviderConfig;
                    if (this.h.getLdapUrl() != null && this.h.getLdapUrl().length >= 1) break block16;
                }
                catch (InvalidIdProviderCfgException invalidIdProviderCfgException) {
                    throw LdapIdentityProviderImpl.a((Exception)((Object)invalidIdProviderCfgException));
                }
                throw new InvalidIdProviderCfgException(t[113]);
            }
            catch (InvalidIdProviderCfgException invalidIdProviderCfgException) {
                throw LdapIdentityProviderImpl.a((Exception)((Object)invalidIdProviderCfgException));
            }
        }
        try {
            if (this.l == null) {
                throw new InvalidIdProviderCfgException(t[31]);
            }
        }
        catch (InvalidIdProviderCfgException invalidIdProviderCfgException) {
            throw LdapIdentityProviderImpl.a((Exception)((Object)invalidIdProviderCfgException));
        }
        try {
            if (this.m == null) {
                throw new InvalidIdProviderCfgException(t[115]);
            }
        }
        catch (InvalidIdProviderCfgException invalidIdProviderCfgException) {
            throw LdapIdentityProviderImpl.a((Exception)((Object)invalidIdProviderCfgException));
        }
        try {
            if (this.h.getReturningAttributes() != null) {
                this.q = this.d();
            }
        }
        catch (InvalidIdProviderCfgException invalidIdProviderCfgException) {
            throw LdapIdentityProviderImpl.a((Exception)((Object)invalidIdProviderCfgException));
        }
        this.l.configure(this);
        this.m.configure(this);
        this.o = new SessionAuthenticator(this.h.getGoid());
        this.r = new af(this, this.h.getSearchBase(), this.q);
        this.p = new LdapUrlProviderImpl((LdapUrlBasedIdentityProviderConfig)this.h, this.i);
        String string = this.h.getName() + t[108] + String.valueOf(this.h.getGoid()) + "," + this.h.getVersion() + ")";
        this.s = new LdapCertificateCache(this.h, this.j, this.g, this.r, this.a(), string, this.c());
    }

    private Set<String> a() {
        UserMappingConfig[] userMappingConfigArray;
        HashSet<String> hashSet = new HashSet<String>();
        for (UserMappingConfig userMappingConfig : userMappingConfigArray = this.h.getUserMappings()) {
            String string;
            block5: {
                string = userMappingConfig.getUserCertAttrName();
                try {
                    try {
                        if (string != null && string.trim().length() >= 1) break block5;
                    }
                    catch (IllegalArgumentException illegalArgumentException) {
                        throw LdapIdentityProviderImpl.a(illegalArgumentException);
                    }
                    c.fine(t[103] + userMappingConfig.getObjClass() + t[67]);
                    continue;
                }
                catch (IllegalArgumentException illegalArgumentException) {
                    throw LdapIdentityProviderImpl.a(illegalArgumentException);
                }
            }
            hashSet.add(string.trim());
        }
        return hashSet;
    }

    private boolean b() {
        boolean bl2;
        try {
            bl2 = this.h.getUserCertificateUseType() != LdapIdentityProviderConfig.UserCertificateUseType.NONE;
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw LdapIdentityProviderImpl.a(illegalArgumentException);
        }
        return bl2;
    }

    private boolean c() {
        boolean bl2;
        block5: {
            block4: {
                try {
                    try {
                        if (this.h.getUserCertificateUseType() != LdapIdentityProviderConfig.UserCertificateUseType.INDEX && this.h.getUserCertificateUseType() != LdapIdentityProviderConfig.UserCertificateUseType.INDEX_CUSTOM) break block4;
                    }
                    catch (IllegalArgumentException illegalArgumentException) {
                        throw LdapIdentityProviderImpl.a(illegalArgumentException);
                    }
                    bl2 = true;
                    break block5;
                }
                catch (IllegalArgumentException illegalArgumentException) {
                    throw LdapIdentityProviderImpl.a(illegalArgumentException);
                }
            }
            bl2 = false;
        }
        return bl2;
    }

    public void setLdapRuntimeConfig(LdapRuntimeConfig ldapRuntimeConfig) {
        this.g = ldapRuntimeConfig;
    }

    public void setServerConfig(ServerConfig serverConfig) {
        this.i = serverConfig;
    }

    public void setCertificateAuthenticator(CertificateAuthenticator certificateAuthenticator) {
        this.n = certificateAuthenticator;
    }

    @Override
    public LdapIdentityProviderConfig getConfig() {
        return this.h;
    }

    public LdapUserManager getUserManager() {
        return this.l;
    }

    public LdapGroupManager getGroupManager() {
        return this.m;
    }

    /*
     * Unable to fully structure code
     */
    @Override
    public AuthenticationResult authenticate(LoginCredentials var1_1) throws AuthenticationException {
        block31: {
            block32: {
                try {
                    var2_2 = this.findUserByCredential(var1_1);
                }
                catch (FindException var3_3) {
                    if (var1_1.getFormat() == CredentialFormat.KERBEROSTICKET) {
                        var4_5 = (KerberosServiceTicket)var1_1.getPayload();
                        var5_8 = LdapIdentityProviderImpl.t;
                        throw new AuthenticationException(var5_8[64] + var4_5.getClientPrincipalName() + var5_8[14], (Throwable)var3_3);
                    }
                    var5_9 = LdapIdentityProviderImpl.t;
                    throw new AuthenticationException(var5_9[49], (Throwable)var3_3);
                }
                try {
                    if (var2_2 == null) {
                        throw new AuthenticationException(LdapIdentityProviderImpl.t[77]);
                    }
                }
                catch (FindException v0) {
                    throw LdapIdentityProviderImpl.a((Exception)v0);
                }
                var3_4 = var1_1.getFormat();
                try {
                    if (var3_4 == CredentialFormat.CLEARTEXT) {
                        return this.a(var1_1, var2_2);
                    }
                }
                catch (FindException v1) {
                    throw LdapIdentityProviderImpl.a((Exception)v1);
                }
                try {
                    if (var3_4 == CredentialFormat.DIGEST) {
                        return DigestAuthenticator.authenticateDigestCredentials(var1_1, (User)var2_2);
                    }
                }
                catch (FindException v2) {
                    throw LdapIdentityProviderImpl.a((Exception)v2);
                }
                try {
                    if (var3_4 == CredentialFormat.KERBEROSTICKET) {
                        return new AuthenticationResult((User)var2_2, var1_1.getSecurityTokens());
                    }
                }
                catch (FindException v3) {
                    throw LdapIdentityProviderImpl.a((Exception)v3);
                }
                try {
                    if (var3_4 == CredentialFormat.NTLMTOKEN) {
                        return new AuthenticationResult((User)var2_2, var1_1.getSecurityToken());
                    }
                }
                catch (FindException v4) {
                    throw LdapIdentityProviderImpl.a((Exception)v4);
                }
                try {
                    if (var3_4 == CredentialFormat.SESSIONTOKEN) {
                        return this.o.authenticateSessionCredentials(var1_1, (User)var2_2);
                    }
                }
                catch (FindException v5) {
                    throw LdapIdentityProviderImpl.a((Exception)v5);
                }
                try {
                    block33: {
                        if (var3_4 == CredentialFormat.CLIENTCERT) ** GOTO lbl56
                        if (var3_4 != CredentialFormat.SAML) break block31;
                        break block33;
                        catch (FindException v6) {
                            throw LdapIdentityProviderImpl.a((Exception)v6);
                        }
                    }
                    try {
                        block34: {
                            if (!this.b()) break block32;
                            break block34;
                            catch (FindException v7) {
                                throw LdapIdentityProviderImpl.a((Exception)v7);
                            }
                        }
                        if (var2_2.getLdapCertBytes() == null) break block32;
                    }
                    catch (FindException v8) {
                        throw LdapIdentityProviderImpl.a((Exception)v8);
                    }
                    return this.n.authenticateX509Credentials(var1_1, var2_2.getCertificate(), (User)var2_2, this.h.getCertificateValidationType(), (Audit)this.f, false);
                }
                catch (FindException v9) {
                    throw LdapIdentityProviderImpl.a((Exception)v9);
                }
                {
                    catch (CertificateException var4_6) {
                        var5_10 = LdapIdentityProviderImpl.t;
                        throw new AuthenticationException(var5_10[73] + ExceptionUtils.getMessage((Throwable)var4_6), (Throwable)var4_6);
                    }
                }
            }
            return this.n.authenticateX509Credentials(var1_1, (User)var2_2, this.h.getCertificateValidationType(), (Audit)this.f);
        }
        var4_7 = LdapIdentityProviderImpl.t[114] + String.valueOf(var1_1.getFormat());
        LdapIdentityProviderImpl.c.log(Level.SEVERE, var4_7);
        throw new AuthenticationException(var4_7);
    }

    @Override
    public AuthenticationResult authenticate(LoginCredentials loginCredentials, boolean bl2) throws AuthenticationException {
        return this.authenticate(loginCredentials);
    }

    /*
     * Loose catch block
     */
    @Override
    public LdapUser findUserByCredential(LoginCredentials loginCredentials) throws FindException {
        LdapUser ldapUser;
        block14: {
            block12: {
                block15: {
                    block13: {
                        ldapUser = null;
                        if (loginCredentials.getFormat() != CredentialFormat.KERBEROSTICKET) break block13;
                        KerberosServiceTicket kerberosServiceTicket = (KerberosServiceTicket)loginCredentials.getPayload();
                        String[] stringArray = t;
                        ldapUser = this.a(this.a(kerberosServiceTicket), stringArray[71] + kerberosServiceTicket.getClientPrincipalName() + stringArray[14]);
                        break block14;
                    }
                    if (loginCredentials.getFormat() != CredentialFormat.SESSIONTOKEN) break block15;
                    String string = this.o.getUserId(loginCredentials);
                    if (string != null) {
                        ldapUser = (LdapUser)this.l.findByPrimaryKey(string);
                    }
                    break block14;
                }
                if (loginCredentials.getFormat() != CredentialFormat.CLIENTCERT) break block12;
                try {
                    block16: {
                        if (!this.b()) break block12;
                        break block16;
                        catch (CertificateEncodingException certificateEncodingException) {
                            throw LdapIdentityProviderImpl.a(certificateEncodingException);
                        }
                    }
                    if (!LdapIdentityProviderConfig.UserLookupByCertMode.CERT.equals((Object)this.h.getUserLookupByCertMode())) break block12;
                }
                catch (CertificateEncodingException certificateEncodingException) {
                    throw LdapIdentityProviderImpl.a(certificateEncodingException);
                }
                try {
                    LdapUser ldapUser2;
                    String string = this.s.a(loginCredentials.getClientCert());
                    try {
                        ldapUser2 = string == null ? null : (LdapUser)this.l.findByPrimaryKey(string);
                    }
                    catch (CertificateEncodingException certificateEncodingException) {
                        throw LdapIdentityProviderImpl.a(certificateEncodingException);
                    }
                    ldapUser = ldapUser2;
                }
                catch (CertificateEncodingException certificateEncodingException) {
                    String[] stringArray = t;
                    throw new FindException(stringArray[105] + ExceptionUtils.getMessage((Throwable)certificateEncodingException), (Throwable)certificateEncodingException);
                }
            }
            if (loginCredentials.getFormat() == CredentialFormat.NTLMTOKEN) {
                NtlmToken ntlmToken = (NtlmToken)loginCredentials.getSecurityToken();
                String[] stringArray = t;
                ldapUser = this.a(this.a(ntlmToken), stringArray[97] + ntlmToken.getLogin() + stringArray[14]);
            } else if (loginCredentials.getLogin() != null) {
                ldapUser = (LdapUser)this.l.findByLogin(loginCredentials.getLogin());
            }
        }
        return ldapUser;
    }

    private LdapUser a(Collection<IdentityHeader> collection, String string) throws FindException {
        LdapUser ldapUser;
        block6: {
            block7: {
                ldapUser = null;
                try {
                    try {
                        if (collection == null) break block6;
                        if (collection.size() <= 1) break block7;
                    }
                    catch (FindException findException) {
                        throw LdapIdentityProviderImpl.a((Exception)((Object)findException));
                    }
                    throw new FindException(string);
                }
                catch (FindException findException) {
                    throw LdapIdentityProviderImpl.a((Exception)((Object)findException));
                }
            }
            if (!collection.isEmpty()) {
                for (IdentityHeader identityHeader : collection) {
                    if (identityHeader.getType() != EntityType.USER) continue;
                    ldapUser = (LdapUser)this.l.findByPrimaryKey(identityHeader.getStrId());
                }
            }
        }
        return ldapUser;
    }

    private AuthenticationResult a(LoginCredentials loginCredentials, LdapUser ldapUser) throws BadCredentialsException {
        boolean bl2 = this.l.authenticateBasic(ldapUser.getDn(), new String(loginCredentials.getCredentials()));
        try {
            if (bl2) {
                return new AuthenticationResult((User)ldapUser, loginCredentials.getSecurityTokens());
            }
        }
        catch (BadCredentialsException badCredentialsException) {
            throw LdapIdentityProviderImpl.a((Exception)((Object)badCredentialsException));
        }
        String[] stringArray = t;
        c.info(stringArray[72] + loginCredentials.getLogin());
        throw new BadCredentialsException(stringArray[30]);
    }

    @Override
    public Collection<String> getReturningAttributes() {
        Collection<String> collection = null;
        if (this.q != null) {
            collection = Collections.unmodifiableCollection(Arrays.asList(this.q));
        }
        return collection;
    }

    public EntityHeaderSet<IdentityHeader> search(EntityType[] entityTypeArray, String string) throws FindException {
        Object object;
        block21: {
            String string2;
            String string3;
            boolean bl2;
            block19: {
                block20: {
                    boolean bl3;
                    block18: {
                        block17: {
                            try {
                                try {
                                    if (entityTypeArray != null && entityTypeArray.length >= 1) break block17;
                                }
                                catch (FindException findException) {
                                    throw LdapIdentityProviderImpl.a((Exception)((Object)findException));
                                }
                                throw new IllegalArgumentException(t[38]);
                            }
                            catch (FindException findException) {
                                throw LdapIdentityProviderImpl.a((Exception)((Object)findException));
                            }
                        }
                        bl2 = false;
                        bl3 = false;
                        for (EntityType entityType : entityTypeArray) {
                            if (entityType == EntityType.USER) {
                                bl2 = true;
                                continue;
                            }
                            if (entityType != EntityType.GROUP) continue;
                            bl3 = true;
                        }
                        try {
                            try {
                                if (bl2 || bl3) break block18;
                            }
                            catch (FindException findException) {
                                throw LdapIdentityProviderImpl.a((Exception)((Object)findException));
                            }
                            throw new IllegalArgumentException(t[123]);
                        }
                        catch (FindException findException) {
                            throw LdapIdentityProviderImpl.a((Exception)((Object)findException));
                        }
                    }
                    string3 = this.userSearchFilterWithParam(string);
                    string2 = this.groupSearchFilterWithParam(string, new MemberStrategy[0]);
                    try {
                        try {
                            if (!bl2 || !bl3) break block19;
                        }
                        catch (FindException findException) {
                            throw LdapIdentityProviderImpl.a((Exception)((Object)findException));
                        }
                        if (string2 != null) break block20;
                    }
                    catch (FindException findException) {
                        throw LdapIdentityProviderImpl.a((Exception)((Object)findException));
                    }
                    object = string3;
                    break block21;
                }
                String string4 = string2;
                String string5 = string3;
                object = t[110] + string5 + string4 + ")";
                break block21;
            }
            object = bl2 ? string3 : string2;
        }
        try {
            if (object == null) {
                return EntityHeaderSet.empty();
            }
        }
        catch (FindException findException) {
            throw LdapIdentityProviderImpl.a((Exception)((Object)findException));
        }
        return this.b((String)object);
    }

    private Collection<IdentityHeader> a(KerberosServiceTicket kerberosServiceTicket) throws FindException {
        boolean bl2;
        String string = kerberosServiceTicket.getClientPrincipalName();
        int n2 = string.indexOf(64);
        int n3 = string.lastIndexOf(64);
        try {
            bl2 = n2 != n3;
        }
        catch (FindException findException) {
            throw LdapIdentityProviderImpl.a((Exception)((Object)findException));
        }
        boolean bl3 = bl2;
        String string2 = string;
        if (n3 != -1) {
            string2 = string.substring(0, n3);
        }
        try {
            if (string2.length() == 0) {
                throw new FindException(t[9] + string + t[65]);
            }
        }
        catch (FindException findException) {
            throw LdapIdentityProviderImpl.a((Exception)((Object)findException));
        }
        try {
            if (c.isLoggable(Level.FINEST)) {
                c.log(Level.FINEST, t[39], new Object[]{bl3, string});
            }
        }
        catch (FindException findException) {
            throw LdapIdentityProviderImpl.a((Exception)((Object)findException));
        }
        ArrayList<i> arrayList = new ArrayList<i>();
        for (int i2 = 0; i2 < this.h.getUserMappings().length; ++i2) {
            UserMappingConfig userMappingConfig = this.h.getUserMappings()[i2];
            String string3 = null;
            if (bl3) {
                string3 = userMappingConfig.getKerberosEnterpriseAttrName();
            }
            if (string3 == null && (string3 = userMappingConfig.getKerberosAttrName()) == null) {
                string3 = userMappingConfig.getLoginAttrName();
            }
            arrayList.add(new i(userMappingConfig.getObjClass(), string3, string2));
        }
        String string4 = this.a(arrayList.toArray(new i[arrayList.size()]), true);
        return this.b(string4);
    }

    private Collection<IdentityHeader> a(NtlmToken ntlmToken) throws FindException {
        String string = t[118] + ntlmToken.getUserSid() + ")";
        return this.b(string);
    }

    @Override
    public X509Certificate findCertBySki(String string) {
        X509Certificate x509Certificate;
        block3: {
            x509Certificate = null;
            if (this.b()) {
                x509Certificate = this.s.a(string);
                try {
                    if (x509Certificate != null || this.c()) break block3;
                }
                catch (IllegalArgumentException illegalArgumentException) {
                    throw LdapIdentityProviderImpl.a(illegalArgumentException);
                }
                x509Certificate = this.a(string);
            }
        }
        return x509Certificate;
    }

    @Override
    public X509Certificate findCertByIssuerAndSerial(X500Principal x500Principal, BigInteger bigInteger) {
        X509Certificate x509Certificate;
        block3: {
            x509Certificate = null;
            if (this.b()) {
                x509Certificate = this.s.a(x500Principal, bigInteger);
                try {
                    if (x509Certificate != null || this.c()) break block3;
                }
                catch (IllegalArgumentException illegalArgumentException) {
                    throw LdapIdentityProviderImpl.a(illegalArgumentException);
                }
                x509Certificate = this.a(x500Principal, bigInteger);
            }
        }
        return x509Certificate;
    }

    @Override
    public X509Certificate findCertByThumbprintSHA1(String string) throws FindException {
        X509Certificate x509Certificate = null;
        if (this.b()) {
            x509Certificate = this.s.b(string);
        }
        return x509Certificate;
    }

    @Override
    public X509Certificate findCertBySubjectDn(X500Principal x500Principal) throws FindException {
        X509Certificate x509Certificate = null;
        if (this.b()) {
            x509Certificate = this.s.a(x500Principal);
        }
        return x509Certificate;
    }

    private X509Certificate a(String string) {
        X509Certificate x509Certificate;
        block4: {
            x509Certificate = null;
            try {
                String string2 = this.h.getUserCertificateSKISearchFilter();
                try {
                    if (string2 == null || string2.isEmpty()) break block4;
                }
                catch (FindException findException) {
                    throw LdapIdentityProviderImpl.a((Exception)((Object)findException));
                }
                x509Certificate = this.a(string2, null, null, string);
            }
            catch (FindException findException) {
                c.log(Level.WARNING, t[36], findException);
            }
        }
        return x509Certificate;
    }

    private X509Certificate a(X500Principal x500Principal, BigInteger bigInteger) {
        X509Certificate x509Certificate;
        block4: {
            x509Certificate = null;
            try {
                String string = this.h.getUserCertificateIssuerSerialSearchFilter();
                try {
                    if (string == null || string.isEmpty()) break block4;
                }
                catch (FindException findException) {
                    throw LdapIdentityProviderImpl.a((Exception)((Object)findException));
                }
                x509Certificate = this.a(string, x500Principal, bigInteger, null);
            }
            catch (FindException findException) {
                c.log(Level.WARNING, t[124], findException);
            }
        }
        return x509Certificate;
    }

    /*
     * Loose catch block
     */
    private X509Certificate a(String string, X500Principal x500Principal, BigInteger bigInteger, String string2) throws FindException {
        X509Certificate x509Certificate;
        block17: {
            x509Certificate = null;
            String string3 = this.b(string, x500Principal, bigInteger, string2);
            try {
                Set<String> set = this.a();
                String[] stringArray = new String[1];
                ArrayList arrayList = new ArrayList();
                this.r.a(string3, 1L, set, new w(this, stringArray, set, arrayList));
                if (arrayList.isEmpty()) break block17;
                for (X509Certificate x509Certificate2 : arrayList) {
                    block19: {
                        block18: {
                            block20: {
                                if (x500Principal == null) break block18;
                                if (bigInteger == null) break block18;
                                break block20;
                                catch (NamingException namingException) {
                                    throw LdapIdentityProviderImpl.a(namingException);
                                }
                            }
                            try {
                                block21: {
                                    if (!x500Principal.equals(x509Certificate2.getIssuerX500Principal())) break block19;
                                    break block21;
                                    catch (NamingException namingException) {
                                        throw LdapIdentityProviderImpl.a(namingException);
                                    }
                                }
                                if (!bigInteger.equals(x509Certificate2.getSerialNumber())) break block19;
                            }
                            catch (NamingException namingException) {
                                throw LdapIdentityProviderImpl.a(namingException);
                            }
                            x509Certificate = x509Certificate2;
                            break block19;
                        }
                        try {
                            if (string2 == null || !string2.equals(CertUtils.getSki((X509Certificate)x509Certificate2))) break block19;
                        }
                        catch (NamingException namingException) {
                            throw LdapIdentityProviderImpl.a(namingException);
                        }
                        x509Certificate = x509Certificate2;
                    }
                    try {
                        if (x509Certificate == null) continue;
                        break;
                    }
                    catch (NamingException namingException) {
                        throw LdapIdentityProviderImpl.a(namingException);
                    }
                }
                X509Certificate[] x509CertificateArray = arrayList.toArray(new X509Certificate[arrayList.size()]);
                this.s.a(stringArray[0], x509CertificateArray);
            }
            catch (NamingException namingException) {
                String[] stringArray = t;
                throw new FindException(stringArray[90] + string3, (Throwable)namingException);
            }
            catch (CertificateException certificateException) {
                throw new FindException(t[90] + string3, (Throwable)certificateException);
            }
        }
        try {
            if (x509Certificate == null) {
                this.s.a(x500Principal, bigInteger, string2);
            }
        }
        catch (NamingException namingException) {
            throw LdapIdentityProviderImpl.a(namingException);
        }
        return x509Certificate;
    }

    private EntityHeaderSet<IdentityHeader> b(String string) throws FindException {
        EntityHeaderSet entityHeaderSet = new EntityHeaderSet(new TreeSet());
        try {
            this.r.a(string, this.g.getMaxSearchResultSize(), null, new x(this, entityHeaderSet));
        }
        catch (SizeLimitExceededException sizeLimitExceededException) {
            String[] stringArray = t;
            c.log(Level.FINE, stringArray[86] + sizeLimitExceededException.getMessage() + "'");
            entityHeaderSet.setMaxExceeded(this.g.getMaxSearchResultSize());
        }
        catch (javax.naming.AuthenticationException authenticationException) {
            String[] stringArray = t;
            throw new FindException(stringArray[88], (Throwable)authenticationException);
        }
        catch (PartialResultException partialResultException) {
            String[] stringArray = t;
            c.log(Level.WARNING, stringArray[40], partialResultException);
        }
        catch (NamingException namingException) {
            String string2 = t[35] + string;
            c.log(Level.INFO, string2, ExceptionUtils.getDebugException((Throwable)namingException));
            throw new FindException(string2, ExceptionUtils.getDebugException((Throwable)namingException));
        }
        return entityHeaderSet;
    }

    public String getAuthRealm() {
        return HexUtils.REALM;
    }

    @Override
    public String userSearchFilterWithParam(String string) {
        try {
            if (this.h == null) {
                throw new IllegalStateException(t[66]);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw LdapIdentityProviderImpl.a(illegalArgumentException);
        }
        UserMappingConfig[] userMappingConfigArray = this.h.getUserMappings();
        ArrayList<i> arrayList = new ArrayList<i>();
        String string2 = LdapUtils.filterMatchEscape(string);
        for (UserMappingConfig userMappingConfig : userMappingConfigArray) {
            arrayList.add(new i(userMappingConfig.getObjClass(), userMappingConfig.getLoginAttrName(), string2));
            arrayList.add(new i(userMappingConfig.getObjClass(), userMappingConfig.getNameAttrName(), string2));
        }
        return this.a(arrayList.toArray(new i[arrayList.size()]), false);
    }

    private String a(i[] iArray, boolean bl2) {
        h h2 = new h();
        try {
            if (iArray.length > 1) {
                h2.or();
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw LdapIdentityProviderImpl.a(illegalArgumentException);
        }
        for (i i2 : iArray) {
            block10: {
                block9: {
                    try {
                        h2.and();
                        h2.objectClass(i2.a);
                        if (!bl2) break block9;
                        h2.attrEquals(i2.b, i2.c);
                        break block10;
                    }
                    catch (IllegalArgumentException illegalArgumentException) {
                        throw LdapIdentityProviderImpl.a(illegalArgumentException);
                    }
                }
                h2.attrEqualsUnsafe(i2.b, i2.c);
            }
            h2.end();
        }
        try {
            if (iArray.length > 1) {
                h2.end();
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw LdapIdentityProviderImpl.a(illegalArgumentException);
        }
        return h2.buildFilter();
    }

    @Override
    public String groupSearchFilterWithParam(String string, MemberStrategy ... memberStrategyArray) {
        GroupMappingConfig[] groupMappingConfigArray;
        block14: {
            try {
                if (this.h == null) {
                    throw new IllegalStateException(t[47]);
                }
            }
            catch (IllegalArgumentException illegalArgumentException) {
                throw LdapIdentityProviderImpl.a(illegalArgumentException);
            }
            groupMappingConfigArray = this.h.getGroupMappings();
            try {
                try {
                    if (groupMappingConfigArray != null && groupMappingConfigArray.length > 0) break block14;
                }
                catch (IllegalArgumentException illegalArgumentException) {
                    throw LdapIdentityProviderImpl.a(illegalArgumentException);
                }
                return null;
            }
            catch (IllegalArgumentException illegalArgumentException) {
                throw LdapIdentityProviderImpl.a(illegalArgumentException);
            }
        }
        String string2 = LdapUtils.filterMatchEscape(string);
        ArrayList<i> arrayList = new ArrayList<i>();
        for (GroupMappingConfig groupMappingConfig : groupMappingConfigArray) {
            try {
                block15: {
                    try {
                        try {
                            if (memberStrategyArray == null || memberStrategyArray.length == 0) break block15;
                        }
                        catch (IllegalArgumentException illegalArgumentException) {
                            throw LdapIdentityProviderImpl.a(illegalArgumentException);
                        }
                        if (!ArrayUtils.contains((Object[])memberStrategyArray, (Object)groupMappingConfig.getMemberStrategy())) continue;
                    }
                    catch (IllegalArgumentException illegalArgumentException) {
                        throw LdapIdentityProviderImpl.a(illegalArgumentException);
                    }
                }
                arrayList.add(new i(groupMappingConfig.getObjClass(), groupMappingConfig.getNameAttrName(), string2));
            }
            catch (IllegalArgumentException illegalArgumentException) {
                throw LdapIdentityProviderImpl.a(illegalArgumentException);
            }
        }
        return this.a(arrayList.toArray(new i[arrayList.size()]), false);
    }

    @Override
    public DirContext getBrowseContext() throws NamingException {
        String string = this.getLastWorkingLdapUrl();
        if (string == null) {
            string = this.markCurrentUrlFailureAndGetFirstAvailableOne(null);
        }
        while (string != null) {
            try {
                Properties properties = this.getLdapEnvProperties(string);
                return new InitialDirContext(properties);
            }
            catch (RuntimeException | CommunicationException exception) {
                String[] stringArray = t;
                c.log(Level.WARNING, stringArray[59] + string + stringArray[46] + ExceptionUtils.getMessageWithCause((Throwable)exception), ExceptionUtils.getDebugException((Throwable)exception));
                string = this.markCurrentUrlFailureAndGetFirstAvailableOne(string);
            }
        }
        throw new CommunicationException(t[1]);
    }

    /*
     * WARNING - Removed try catching itself - possible behaviour change.
     * Could not resolve type clashes
     * Unable to fully structure code
     */
    public void test(boolean var1_1, String var2_2, char[] var3_3) throws InvalidIdProviderCfgException {
        var4_4 = null;
        try {
            block87: {
                block88: {
                    block85: {
                        block86: {
                            block83: {
                                block84: {
                                    block81: {
                                        block82: {
                                            block95: {
                                                block79: {
                                                    block80: {
                                                        block77: {
                                                            block78: {
                                                                block92: {
                                                                    block75: {
                                                                        block76: {
                                                                            try {
                                                                                var4_4 = this.getBrowseContext();
                                                                            }
                                                                            catch (NamingException var5_5) {
                                                                                if (var5_5 instanceof javax.naming.AuthenticationException) {
                                                                                    var19_8 = LdapIdentityProviderImpl.t;
                                                                                    var6_12 = var19_8[27];
                                                                                    LdapIdentityProviderImpl.c.log(Level.INFO, var19_8[101] + (String)var6_12, ExceptionUtils.getDebugException((Throwable)var5_5));
                                                                                } else {
                                                                                    var19_9 = LdapIdentityProviderImpl.t;
                                                                                    var6_12 = var19_9[57] + ExceptionUtils.getMessage((Throwable)var5_5) + var19_9[14];
                                                                                    LdapIdentityProviderImpl.c.log(Level.INFO, var19_9[18] + (String)var6_12, ExceptionUtils.getDebugException((Throwable)var5_5));
                                                                                }
                                                                                throw new InvalidIdProviderCfgException((String)var6_12);
                                                                            }
                                                                            if (var1_1) {
                                                                                return;
                                                                            }
                                                                            try {
                                                                                var19_10 = LdapIdentityProviderImpl.t;
                                                                                this.r.a(var4_4, var19_10[53], 1L, null, null);
                                                                            }
                                                                            catch (NamingException var5_6) {
                                                                                var19_11 = LdapIdentityProviderImpl.t;
                                                                                throw new InvalidIdProviderCfgException(var19_11[100] + this.h.getSearchBase());
                                                                            }
                                                                            var5_7 = false;
                                                                            var6_13 = this.h.getUserMappings();
                                                                            var7_14 = new ArrayList<UserMappingConfig[]>();
                                                                            var8_15 = new ArrayList<UserMappingConfig[]>();
                                                                            for (UserMappingConfig[] var12_20 : var6_13) {
                                                                                block74: {
                                                                                    if (var12_20.getLoginAttrName() == null) ** GOTO lbl37
                                                                                    try {
                                                                                        block90: {
                                                                                            if (var12_20.getLoginAttrName().length() >= 1) break block74;
                                                                                            break block90;
                                                                                            catch (NamingException v0) {
                                                                                                throw LdapIdentityProviderImpl.a(v0);
                                                                                            }
                                                                                        }
                                                                                        var8_15.add(var12_20);
                                                                                        continue;
                                                                                    }
                                                                                    catch (NamingException v1) {
                                                                                        throw LdapIdentityProviderImpl.a(v1);
                                                                                    }
                                                                                }
                                                                                var13_22 = new h();
                                                                                var13_22.or();
                                                                                var13_22.and();
                                                                                var13_22.objectClass(var12_20.getObjClass());
                                                                                var13_22.attrPresent(var12_20.getLoginAttrName());
                                                                                var13_22.end();
                                                                                var13_22.and();
                                                                                var13_22.objectClass(var12_20.getObjClass());
                                                                                var13_22.attrPresent(var12_20.getLoginAttrName());
                                                                                var13_22.end();
                                                                                var13_22.end();
                                                                                try {
                                                                                    var14_24 = new boolean[]{false};
                                                                                    this.r.a(var4_4, var13_22.buildFilter(), 0L, null, (k)new y(this, var14_24));
                                                                                    var5_7 |= var14_24[0];
                                                                                }
                                                                                catch (NamingException var14_25) {
                                                                                    var7_14.add(var12_20);
                                                                                    var19_10 = LdapIdentityProviderImpl.t;
                                                                                    LdapIdentityProviderImpl.c.log(Level.FINE, var19_10[4] + var12_20.getObjClass(), var14_25);
                                                                                }
                                                                            }
                                                                            var9_16 = this.h.getGroupMappings();
                                                                            var10_18 = new ArrayList<Object>();
                                                                            var11_19 = 0;
                                                                            for (Object var15_27 : var9_16) {
                                                                                var16_28 = new h();
                                                                                var16_28.and();
                                                                                var16_28.objectClass(var15_27.getObjClass());
                                                                                var16_28.attrPresent(var15_27.getNameAttrName());
                                                                                var16_28.end();
                                                                                try {
                                                                                    var17_31 /* !! */  = new boolean[]{false};
                                                                                    this.r.a(var4_4, var16_28.buildFilter(), 0L, null, (k)new z(this, var17_31 /* !! */ ));
                                                                                    var11_19 |= var17_31 /* !! */ [0];
                                                                                }
                                                                                catch (NamingException var17_32) {
                                                                                    var10_18.add(var15_27);
                                                                                    var19_10 = LdapIdentityProviderImpl.t;
                                                                                    LdapIdentityProviderImpl.c.log(Level.FINE, var19_10[94] + var15_27.getObjClass(), var17_32);
                                                                                }
                                                                            }
                                                                            var12_21 /* !! */  = true;
                                                                            var13_23 = 1;
                                                                            var14_26 = 1;
                                                                            switch (com.l7tech.server.identity.ldap.g.a[this.h.getUserCertificateUseType().ordinal()]) {
                                                                                case 1: {
                                                                                    var15_27 = new boolean[]{false};
                                                                                    try {
                                                                                        this.r.a(var4_4, this.h.getUserCertificateIndexSearchFilter(), 1000L, null, (k)new aa(this, var6_13, (boolean[])var15_27));
                                                                                    }
                                                                                    catch (Exception var16_29) {
                                                                                        var19_10 = LdapIdentityProviderImpl.t;
                                                                                        LdapIdentityProviderImpl.c.log(Level.FINE, var19_10[106], var16_29);
                                                                                    }
                                                                                    var12_21 /* !! */  = var15_27[0];
                                                                                    break;
                                                                                }
                                                                                case 2: {
                                                                                    var15_27 = this.h.getUserCertificateIssuerSerialSearchFilter();
                                                                                    try {
                                                                                        if (var15_27 != null && !var15_27.isEmpty()) {
                                                                                        }
                                                                                        ** GOTO lbl117
                                                                                    }
                                                                                    catch (NamingException v2) {
                                                                                        throw LdapIdentityProviderImpl.a(v2);
                                                                                    }
                                                                                    var13_23 = 0;
                                                                                    try {
                                                                                        var16_28 = this.c((String)var15_27);
                                                                                        this.r.a(var4_4, (String)var16_28, 1L, null, null);
                                                                                        var13_23 = 1;
                                                                                    }
                                                                                    catch (Exception var16_30) {
                                                                                        var19_10 = LdapIdentityProviderImpl.t;
                                                                                        LdapIdentityProviderImpl.c.log(Level.FINE, var19_10[17], var16_30);
                                                                                    }
lbl117:
                                                                                    // 3 sources

                                                                                    var16_28 = this.h.getUserCertificateSKISearchFilter();
                                                                                    try {
                                                                                        if (var16_28 == null || var16_28.isEmpty()) break;
                                                                                    }
                                                                                    catch (NamingException v3) {
                                                                                        throw LdapIdentityProviderImpl.a(v3);
                                                                                    }
                                                                                    var14_26 = 0;
                                                                                    try {
                                                                                        var17_31 /* !! */  = (boolean[])this.c((String)var16_28);
                                                                                        this.r.a(var4_4, (String)var17_31 /* !! */ , 1L, null, null);
                                                                                        var14_26 = 1;
                                                                                    }
                                                                                    catch (NamingException var17_33) {
                                                                                        var19_10 = LdapIdentityProviderImpl.t;
                                                                                        LdapIdentityProviderImpl.c.log(Level.FINE, var19_10[17], var17_33);
                                                                                    }
                                                                                    break;
                                                                                }
                                                                            }
                                                                            var15_27 = new StringBuilder();
                                                                            if (var8_15.size() <= 0) break block75;
                                                                            try {
                                                                                block91: {
                                                                                    if (var15_27.length() <= 0) break block76;
                                                                                    break block91;
                                                                                    catch (NamingException v4) {
                                                                                        throw LdapIdentityProviderImpl.a(v4);
                                                                                    }
                                                                                }
                                                                                var15_27.append('\n');
                                                                            }
                                                                            catch (NamingException v5) {
                                                                                throw LdapIdentityProviderImpl.a(v5);
                                                                            }
                                                                        }
                                                                        var19_10 = LdapIdentityProviderImpl.t;
                                                                        var15_27.append(var19_10[50]);
                                                                        var16_28 = var8_15.iterator();
                                                                        while (var16_28.hasNext()) {
                                                                            var17_31 /* !! */  = (boolean[])((UserMappingConfig)var16_28.next());
                                                                            var15_27.append(" ").append(var17_31 /* !! */ .getObjClass());
                                                                        }
                                                                    }
                                                                    if (var7_14.size() > 0) ** GOTO lbl165
                                                                    if (var10_18.size() <= 0) break block77;
                                                                    break block92;
                                                                    catch (NamingException v6) {
                                                                        throw LdapIdentityProviderImpl.a(v6);
                                                                    }
                                                                }
                                                                try {
                                                                    block93: {
                                                                        if (var15_27.length() <= 0) break block78;
                                                                        break block93;
                                                                        catch (NamingException v7) {
                                                                            throw LdapIdentityProviderImpl.a(v7);
                                                                        }
                                                                    }
                                                                    var15_27.append('\n');
                                                                }
                                                                catch (NamingException v8) {
                                                                    throw LdapIdentityProviderImpl.a(v8);
                                                                }
                                                            }
                                                            var19_10 = LdapIdentityProviderImpl.t;
                                                            var15_27.append(var19_10[120]);
                                                            var16_28 = var7_14.iterator();
                                                            while (var16_28.hasNext()) {
                                                                var17_31 /* !! */  = (boolean[])((UserMappingConfig)var16_28.next());
                                                                var19_10 = LdapIdentityProviderImpl.t;
                                                                var15_27.append(var19_10[111]).append(var17_31 /* !! */ .getObjClass());
                                                            }
                                                            var16_28 = var10_18.iterator();
                                                            while (var16_28.hasNext()) {
                                                                var17_31 /* !! */  = (boolean[])((GroupMappingConfig)var16_28.next());
                                                                var19_10 = LdapIdentityProviderImpl.t;
                                                                var15_27.append(var19_10[78]).append(var17_31 /* !! */ .getObjClass());
                                                            }
                                                        }
                                                        if (var5_7) break block79;
                                                        try {
                                                            block94: {
                                                                if (var15_27.length() <= 0) break block80;
                                                                break block94;
                                                                catch (NamingException v9) {
                                                                    throw LdapIdentityProviderImpl.a(v9);
                                                                }
                                                            }
                                                            var15_27.append('\n');
                                                        }
                                                        catch (NamingException v10) {
                                                            throw LdapIdentityProviderImpl.a(v10);
                                                        }
                                                    }
                                                    var19_10 = LdapIdentityProviderImpl.t;
                                                    var15_27.append(var19_10[79]);
                                                }
                                                if (var11_19 != 0) break block81;
                                                if (var9_16.length <= 0) break block81;
                                                break block95;
                                                catch (NamingException v11) {
                                                    throw LdapIdentityProviderImpl.a(v11);
                                                }
                                            }
                                            try {
                                                block96: {
                                                    if (var15_27.length() <= 0) break block82;
                                                    break block96;
                                                    catch (NamingException v12) {
                                                        throw LdapIdentityProviderImpl.a(v12);
                                                    }
                                                }
                                                var15_27.append('\n');
                                            }
                                            catch (NamingException v13) {
                                                throw LdapIdentityProviderImpl.a(v13);
                                            }
                                        }
                                        var19_10 = LdapIdentityProviderImpl.t;
                                        var15_27.append(var19_10[68]);
                                    }
                                    if (var12_21 /* !! */ ) break block83;
                                    try {
                                        block97: {
                                            if (var15_27.length() <= 0) break block84;
                                            break block97;
                                            catch (NamingException v14) {
                                                throw LdapIdentityProviderImpl.a(v14);
                                            }
                                        }
                                        var15_27.append('\n');
                                    }
                                    catch (NamingException v15) {
                                        throw LdapIdentityProviderImpl.a(v15);
                                    }
                                }
                                var19_10 = LdapIdentityProviderImpl.t;
                                var15_27.append(var19_10[80]);
                            }
                            if (var13_23 != 0) break block85;
                            try {
                                block98: {
                                    if (var15_27.length() <= 0) break block86;
                                    break block98;
                                    catch (NamingException v16) {
                                        throw LdapIdentityProviderImpl.a(v16);
                                    }
                                }
                                var15_27.append('\n');
                            }
                            catch (NamingException v17) {
                                throw LdapIdentityProviderImpl.a(v17);
                            }
                        }
                        var19_10 = LdapIdentityProviderImpl.t;
                        var15_27.append(var19_10[41]);
                    }
                    if (var14_26 != 0) break block87;
                    try {
                        block99: {
                            if (var15_27.length() <= 0) break block88;
                            break block99;
                            catch (NamingException v18) {
                                throw LdapIdentityProviderImpl.a(v18);
                            }
                        }
                        var15_27.append('\n');
                    }
                    catch (NamingException v19) {
                        throw LdapIdentityProviderImpl.a(v19);
                    }
                }
                var19_10 = LdapIdentityProviderImpl.t;
                var15_27.append(var19_10[60]);
            }
            try {
                if (var15_27.length() > 0) {
                    LdapIdentityProviderImpl.c.fine(LdapIdentityProviderImpl.t[13] + var15_27.toString());
                    throw new InvalidIdProviderCfgException(var15_27.toString());
                }
            }
            catch (NamingException v20) {
                throw LdapIdentityProviderImpl.a(v20);
            }
            LdapIdentityProviderImpl.c.finest(LdapIdentityProviderImpl.t[83]);
        }
        finally {
            ResourceUtils.closeQuietly((Context)var4_4);
        }
    }

    public void preSaveClientCert(LdapUser ldapUser, X509Certificate[] x509CertificateArray) throws ClientCertManager.VetoSave {
    }

    public void setUserManager(LdapUserManager ldapUserManager) {
        this.l = ldapUserManager;
    }

    public void setGroupManager(LdapGroupManager ldapGroupManager) {
        this.m = ldapGroupManager;
    }

    /*
     * Loose catch block
     */
    public boolean hasClientCert(String string) throws AuthenticationException {
        try {
            block10: {
                boolean bl2;
                LdapUser ldapUser;
                block11: {
                    boolean bl3;
                    block13: {
                        block12: {
                            block14: {
                                ldapUser = (LdapUser)this.l.findByLogin(string);
                                if (ldapUser == null) break block10;
                                if (!this.b()) break block11;
                                break block14;
                                catch (FindException findException) {
                                    throw LdapIdentityProviderImpl.a((Exception)((Object)findException));
                                }
                            }
                            try {
                                block15: {
                                    if (ldapUser.getLdapCertBytes() == null) break block12;
                                    break block15;
                                    catch (FindException findException) {
                                        throw LdapIdentityProviderImpl.a((Exception)((Object)findException));
                                    }
                                }
                                bl3 = true;
                                break block13;
                            }
                            catch (FindException findException) {
                                throw LdapIdentityProviderImpl.a((Exception)((Object)findException));
                            }
                        }
                        bl3 = false;
                    }
                    return bl3;
                }
                try {
                    bl2 = this.k.getUserCert((User)ldapUser) != null;
                }
                catch (FindException findException) {
                    throw LdapIdentityProviderImpl.a((Exception)((Object)findException));
                }
                return bl2;
            }
            return false;
        }
        catch (FindException findException) {
            throw new AuthenticationException(String.format(t[76], string), (Throwable)findException);
        }
    }

    public void setClientCertManager(ClientCertManager clientCertManager) {
        this.k = clientCertManager;
    }

    public void setConfigManager(IdentityProviderConfigManager identityProviderConfigManager) {
        this.j = identityProviderConfigManager;
    }

    public void afterPropertiesSet() throws Exception {
        try {
            if (this.k == null) {
                throw new IllegalStateException(t[16]);
            }
        }
        catch (Exception exception) {
            throw LdapIdentityProviderImpl.a(exception);
        }
        try {
            if (this.f == null) {
                throw new IllegalStateException(t[45]);
            }
        }
        catch (Exception exception) {
            throw LdapIdentityProviderImpl.a(exception);
        }
        try {
            if (this.l == null) {
                throw new IllegalStateException(t[107]);
            }
        }
        catch (Exception exception) {
            throw LdapIdentityProviderImpl.a(exception);
        }
        try {
            if (this.m == null) {
                throw new IllegalStateException(t[116]);
            }
        }
        catch (Exception exception) {
            throw LdapIdentityProviderImpl.a(exception);
        }
    }

    @Override
    public void start() throws LifecycleException {
        try {
            this.s.start();
            if (this.m instanceof Lifecycle) {
                ((Lifecycle)((Object)this.m)).start();
            }
        }
        catch (LifecycleException lifecycleException) {
            throw LdapIdentityProviderImpl.a(lifecycleException);
        }
    }

    @Override
    public void stop() throws LifecycleException {
        try {
            this.s.stop();
            if (this.m instanceof Lifecycle) {
                ((Lifecycle)((Object)this.m)).stop();
            }
        }
        catch (LifecycleException lifecycleException) {
            throw LdapIdentityProviderImpl.a(lifecycleException);
        }
    }

    @Override
    public boolean isValidEntryBasedOnUserAccountControlAttribute(String string, Attributes attributes) {
        block21: {
            Long l2;
            block22: {
                long l3 = 2L;
                long l4 = 16L;
                long l5 = 0x800000L;
                String[] stringArray = t;
                Attribute attribute = attributes.get(stringArray[81]);
                try {
                    if (attribute == null || attribute.size() <= 0) break block21;
                }
                catch (NamingException namingException) {
                    throw LdapIdentityProviderImpl.a(namingException);
                }
                Object object = null;
                try {
                    object = attribute.get(0);
                }
                catch (NamingException namingException) {
                    stringArray = t;
                    c.log(Level.SEVERE, stringArray[7]);
                }
                l2 = null;
                if (object instanceof String) {
                    l2 = Long.valueOf((String)object);
                } else if (object instanceof Long) {
                    l2 = (Long)object;
                } else {
                    try {
                        if (object != null) {
                            c.severe(t[93] + object.getClass().getName());
                        }
                    }
                    catch (NamingException namingException) {
                        throw LdapIdentityProviderImpl.a(namingException);
                    }
                }
                try {
                    try {
                        if (l2 == null) break block21;
                        if ((l2 & 2L) != 2L) break block22;
                    }
                    catch (NamingException namingException) {
                        throw LdapIdentityProviderImpl.a(namingException);
                    }
                    this.f.logAndAudit((AuditDetailMessage)SystemMessages.AUTH_USER_DISABLED, string);
                    return false;
                }
                catch (NamingException namingException) {
                    throw LdapIdentityProviderImpl.a(namingException);
                }
            }
            try {
                if ((l2 & 0x10L) == 16L) {
                    this.f.logAndAudit((AuditDetailMessage)SystemMessages.AUTH_USER_LOCKED, string);
                    return false;
                }
            }
            catch (NamingException namingException) {
                throw LdapIdentityProviderImpl.a(namingException);
            }
            try {
                if ((l2 & 0x800000L) == 0x800000L) {
                    this.f.logAndAudit((AuditDetailMessage)SystemMessages.AUTH_USER_EXPIRED, string);
                    return false;
                }
            }
            catch (NamingException namingException) {
                throw LdapIdentityProviderImpl.a(namingException);
            }
        }
        return true;
    }

    @Override
    public boolean checkExpiredMSADAccount(String string, Attributes attributes) {
        block12: {
            Object object;
            block13: {
                String[] stringArray = t;
                Attribute attribute = attributes.get(stringArray[33]);
                try {
                    if (attribute == null || attribute.size() <= 0) break block12;
                }
                catch (NamingException namingException) {
                    throw LdapIdentityProviderImpl.a(namingException);
                }
                object = null;
                try {
                    object = attribute.get(0);
                }
                catch (NamingException namingException) {
                    stringArray = t;
                    c.log(Level.SEVERE, stringArray[12]);
                }
                try {
                    if (object == null) break block12;
                    if (!(object instanceof String)) break block13;
                }
                catch (NamingException namingException) {
                    throw LdapIdentityProviderImpl.a(namingException);
                }
                String string2 = (String)object;
                try {
                    if (string2.equals("0")) {
                        return false;
                    }
                }
                catch (NamingException namingException) {
                    throw LdapIdentityProviderImpl.a(namingException);
                }
                BigInteger bigInteger = new BigInteger(string2);
                BigInteger bigInteger2 = bigInteger.subtract(d).divide(e);
                try {
                    if (System.currentTimeMillis() > bigInteger2.longValue()) {
                        this.f.logAndAudit((AuditDetailMessage)SystemMessages.AUTH_USER_EXPIRED, string);
                        return true;
                    }
                    break block12;
                }
                catch (NamingException namingException) {
                    throw LdapIdentityProviderImpl.a(namingException);
                }
            }
            c.severe(t[69] + object.getClass().getName());
        }
        return false;
    }

    /*
     * Loose catch block
     * Enabled force condition propagation
     * Lifted jumps to return sites
     */
    @Override
    public IdentityHeader searchResultToHeader(SearchResult searchResult) {
        UserMappingConfig[] userMappingConfigArray;
        Attributes attributes = searchResult.getAttributes();
        String string = searchResult.getNameInNamespace();
        String[] stringArray = t;
        Attribute attribute = attributes.get(stringArray[15]);
        UserMappingConfig[] userMappingConfigArray2 = userMappingConfigArray = this.h.getUserMappings();
        int n2 = userMappingConfigArray2.length;
        for (int i2 = 0; i2 < n2; ++i2) {
            Object object;
            UserMappingConfig userMappingConfig;
            block26: {
                block28: {
                    userMappingConfig = userMappingConfigArray2[i2];
                    String string2 = userMappingConfig.getObjClass();
                    if (!LdapUtils.a(attribute, string2)) continue;
                    if (!this.isValidEntryBasedOnUserAccountControlAttribute(string, attributes)) return null;
                    break block28;
                    catch (NamingException namingException) {
                        throw LdapIdentityProviderImpl.a(namingException);
                    }
                }
                try {
                    if (!this.checkExpiredMSADAccount(string, attributes)) break block26;
                    return null;
                    catch (NamingException namingException) {
                        throw LdapIdentityProviderImpl.a(namingException);
                    }
                }
                catch (NamingException namingException) {
                    throw LdapIdentityProviderImpl.a(namingException);
                }
            }
            String string3 = null;
            try {
                object = LdapUtils.a(attributes, userMappingConfig.getLoginAttrName());
            }
            catch (NamingException namingException) {
                stringArray = t;
                c.log(Level.WARNING, stringArray[91], namingException);
                object = null;
            }
            if (object != null) {
                string3 = object.toString();
            }
            String string4 = null;
            try {
                object = LdapUtils.a(attributes, userMappingConfig.getNameAttrName());
            }
            catch (NamingException namingException) {
                stringArray = t;
                c.log(Level.WARNING, stringArray[37], namingException);
                object = null;
            }
            if (object != null) {
                string4 = object.toString();
            }
            String string5 = null;
            try {
                stringArray = t;
                object = LdapUtils.a(attributes, stringArray[2]);
            }
            catch (NamingException namingException) {
                stringArray = t;
                c.log(Level.FINEST, stringArray[119], namingException);
                object = null;
            }
            if (object != null) {
                string5 = object.toString();
            }
            try {
                if (string3 == null) return null;
                return new IdentityHeader(this.h.getGoid(), string, EntityType.USER, string3, string5, string4, null);
            }
            catch (NamingException namingException) {
                throw LdapIdentityProviderImpl.a(namingException);
            }
        }
        for (UserMappingConfig userMappingConfig : userMappingConfigArray2 = this.h.getGroupMappings()) {
            Object object;
            String string6;
            block27: {
                if (!LdapUtils.a(attribute, userMappingConfig.getObjClass())) continue;
                string6 = null;
                Attribute attribute2 = attributes.get(userMappingConfig.getNameAttrName());
                try {
                    if (attribute2 == null || attribute2.size() <= 0) break block27;
                }
                catch (NamingException namingException) {
                    throw LdapIdentityProviderImpl.a(namingException);
                }
                try {
                    string6 = attribute2.get(0).toString();
                }
                catch (NamingException namingException) {
                    stringArray = t;
                    c.log(Level.WARNING, stringArray[34], ExceptionUtils.getDebugException((Throwable)namingException));
                }
            }
            if (string6 == null) {
                string6 = string;
            }
            String string7 = null;
            try {
                stringArray = t;
                object = LdapUtils.a(attributes, stringArray[61]);
            }
            catch (NamingException namingException) {
                c.log(Level.FINEST, t[98], namingException);
                object = null;
            }
            if (object == null) return new IdentityHeader(this.h.getGoid(), string, EntityType.GROUP, string6, string7, null, null);
            string7 = object.toString();
            return new IdentityHeader(this.h.getGoid(), string, EntityType.GROUP, string6, string7, null, null);
        }
        return null;
    }

    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.f = new Auditor(this, applicationContext, c);
    }

    public void validate(LdapUser ldapUser) throws ValidationException {
        User user;
        try {
            user = this.l.findByPrimaryKey(ldapUser.getId());
        }
        catch (FindException findException) {
            String[] stringArray = t;
            throw new ValidationException(stringArray[85] + ldapUser.getLogin() + stringArray[54], (Throwable)findException);
        }
        try {
            if (user == null) {
                throw new ValidationException(t[99] + ldapUser.getLogin() + t[5]);
            }
        }
        catch (FindException findException) {
            throw LdapIdentityProviderImpl.a((Exception)((Object)findException));
        }
    }

    @Override
    public String getLastWorkingLdapUrl() {
        return this.p.getLastWorkingLdapUrl();
    }

    @Override
    public String markCurrentUrlFailureAndGetFirstAvailableOne(@Nullable String string) {
        return this.p.markCurrentUrlFailureAndGetFirstAvailableOne(string);
    }

    public Properties getLdapEnvProperties(String string) throws NamingException {
        String string2;
        String[] stringArray;
        Properties properties;
        block10: {
            properties = null;
            properties = LdapUtils.newEnvironment();
            stringArray = t;
            properties.put(stringArray[6], "3");
            properties.put(stringArray[117], stringArray[10]);
            properties.put(stringArray[28], string);
            properties.put(stringArray[62], stringArray[23]);
            properties.put(stringArray[92], Long.toString(this.g.getLdapConnectionTimeout()));
            properties.put(stringArray[63], Long.toString(this.g.getLdapReadTimeout()));
            properties.put(stringArray[32], ConfigFactory.getProperty((String)stringArray[122], (String)stringArray[29]));
            String string3 = this.h.getBindDN();
            try {
                if (string3 == null || string3.length() <= 0) break block10;
            }
            catch (FindException findException) {
                throw LdapIdentityProviderImpl.a((Exception)((Object)findException));
            }
            try {
                string2 = ServerVariables.expandSinglePasswordOnlyVariable((Audit)this.f, this.h.getBindPasswd());
            }
            catch (FindException findException) {
                stringArray = t;
                throw (ConfigurationException)new ConfigurationException(stringArray[74] + ExceptionUtils.getMessage((Throwable)findException)).initCause(findException);
            }
            try {
                properties.put(t[43], t[84]);
                properties.put(t[96], string3);
                if (string2 != null) {
                    properties.put(t[82], string2);
                }
            }
            catch (FindException findException) {
                throw LdapIdentityProviderImpl.a((Exception)((Object)findException));
            }
        }
        try {
            string2 = null;
            String string4 = new URI(string).getScheme();
            stringArray = t;
            if (stringArray[56].equalsIgnoreCase(string4)) {
                string2 = LdapSslCustomizerSupport.getSSLSocketFactoryClassname(this.h.isClientAuthEnabled(), this.h.getKeystoreId(), this.h.getKeyAlias());
                properties.put(stringArray[48], string2);
                properties.put(stringArray[3], stringArray[75]);
            }
            properties.putAll(LdapUtils.LDAP_ENV_OVERRIDES);
            LdapUtils.lock(properties);
        }
        catch (IllegalArgumentException | URISyntaxException exception) {
            stringArray = t;
            c.log(Level.WARNING, stringArray[0] + string + stringArray[51] + ExceptionUtils.getMessage((Throwable)exception), ExceptionUtils.getDebugException((Throwable)exception));
        }
        return properties;
    }

    @Override
    public DirContext getPaginatedSearchContext() throws NamingException {
        String string = this.getLastWorkingLdapUrl();
        if (string == null) {
            string = this.markCurrentUrlFailureAndGetFirstAvailableOne(null);
        }
        while (string != null) {
            String[] stringArray;
            try {
                Properties properties = this.getLdapEnvProperties(string);
                return new InitialLdapContext(properties, new BasicControl[0]);
            }
            catch (RuntimeException | CommunicationException exception) {
                stringArray = t;
                c.log(Level.WARNING, stringArray[55] + string + stringArray[26] + ExceptionUtils.getMessageWithCause((Throwable)exception), ExceptionUtils.getDebugException((Throwable)exception));
                string = this.markCurrentUrlFailureAndGetFirstAvailableOne(string);
            }
            catch (NamingException namingException) {
                stringArray = t;
                c.log(Level.WARNING, stringArray[112] + string + stringArray[87] + ExceptionUtils.getMessage((Throwable)namingException), ExceptionUtils.getDebugException((Throwable)namingException));
                string = this.markCurrentUrlFailureAndGetFirstAvailableOne(string);
            }
        }
        throw new CommunicationException(t[121]);
    }

    private String c(String string) throws InvalidIdProviderCfgException {
        try {
            return this.b(string, new X500Principal(t[95]), BigInteger.ZERO, HexUtils.encodeBase64((byte[])new byte[1]));
        }
        catch (FindException findException) {
            throw new InvalidIdProviderCfgException(findException.getMessage());
        }
    }

    private String b(String string, X500Principal x500Principal, BigInteger bigInteger, String string2) throws FindException {
        HashMap<String, String> hashMap = new HashMap<String, String>();
        try {
            if (x500Principal != null) {
                hashMap.put(t[11], x500Principal.getName());
                hashMap.put(t[19], x500Principal.getName(t[89]));
                hashMap.put(t[102], x500Principal.getName());
            }
        }
        catch (VariableNameSyntaxException variableNameSyntaxException) {
            throw LdapIdentityProviderImpl.a((Exception)((Object)variableNameSyntaxException));
        }
        try {
            if (bigInteger != null) {
                hashMap.put(t[52], bigInteger.toString());
            }
        }
        catch (VariableNameSyntaxException variableNameSyntaxException) {
            throw LdapIdentityProviderImpl.a((Exception)((Object)variableNameSyntaxException));
        }
        try {
            if (string2 != null) {
                hashMap.put(t[109], string2);
                hashMap.put(t[20], HexUtils.hexDump((byte[])HexUtils.decodeBase64((String)string2)));
            }
        }
        catch (VariableNameSyntaxException variableNameSyntaxException) {
            throw LdapIdentityProviderImpl.a((Exception)((Object)variableNameSyntaxException));
        }
        try {
            return ExpandVariables.process(string, hashMap, (Audit)this.f, true, new f(this));
        }
        catch (VariableNameSyntaxException variableNameSyntaxException) {
            String[] stringArray = t;
            throw new FindException(stringArray[8] + ExceptionUtils.getMessage((Throwable)variableNameSyntaxException) + stringArray[24]);
        }
        catch (IllegalArgumentException illegalArgumentException) {
            String[] stringArray = t;
            throw new FindException(stringArray[25] + ExceptionUtils.getMessage((Throwable)illegalArgumentException) + stringArray[14]);
        }
    }

    private String[] d() {
        UserMappingConfig[] userMappingConfigArray;
        LinkedHashSet<String> linkedHashSet = new LinkedHashSet<String>();
        String[] stringArray = t;
        linkedHashSet.add(stringArray[58]);
        linkedHashSet.add(stringArray[61]);
        linkedHashSet.add(stringArray[104]);
        linkedHashSet.add(stringArray[22]);
        UserMappingConfig[] userMappingConfigArray2 = userMappingConfigArray = this.h.getUserMappings();
        int n2 = userMappingConfigArray2.length;
        for (int i2 = 0; i2 < n2; ++i2) {
            UserMappingConfig userMappingConfig = userMappingConfigArray2[i2];
            this.b(linkedHashSet, userMappingConfig.getEmailNameAttrName());
            this.b(linkedHashSet, userMappingConfig.getFirstNameAttrName());
            this.b(linkedHashSet, userMappingConfig.getKerberosAttrName());
            this.b(linkedHashSet, userMappingConfig.getKerberosEnterpriseAttrName());
            this.b(linkedHashSet, userMappingConfig.getLastNameAttrName());
            this.b(linkedHashSet, userMappingConfig.getLoginAttrName());
            this.b(linkedHashSet, userMappingConfig.getNameAttrName());
            this.b(linkedHashSet, userMappingConfig.getPasswdAttrName());
            this.a(linkedHashSet, userMappingConfig.getUserCertAttrName(), t[70]);
        }
        for (UserMappingConfig userMappingConfig : userMappingConfigArray2 = this.h.getGroupMappings()) {
            this.b(linkedHashSet, userMappingConfig.getMemberAttrName());
            this.b(linkedHashSet, userMappingConfig.getNameAttrName());
        }
        String[] stringArray2 = this.h.getReturningAttributes();
        try {
            if (stringArray2 != null) {
                linkedHashSet.addAll(Arrays.asList(stringArray2));
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw LdapIdentityProviderImpl.a(illegalArgumentException);
        }
        return linkedHashSet.toArray(new String[linkedHashSet.size()]);
    }

    private void b(Collection<? super String> collection, String string) {
        this.a(collection, string, null);
    }

    private void a(Collection<? super String> collection, String string, String string2) {
        block8: {
            block7: {
                try {
                    try {
                        if (string == null || string.isEmpty()) break block7;
                    }
                    catch (IllegalArgumentException illegalArgumentException) {
                        throw LdapIdentityProviderImpl.a(illegalArgumentException);
                    }
                    collection.add(string.trim());
                    break block8;
                }
                catch (IllegalArgumentException illegalArgumentException) {
                    throw LdapIdentityProviderImpl.a(illegalArgumentException);
                }
            }
            try {
                if (string2 != null) {
                    collection.add(string2);
                }
            }
            catch (IllegalArgumentException illegalArgumentException) {
                throw LdapIdentityProviderImpl.a(illegalArgumentException);
            }
        }
    }

    /*
     * Unable to fully structure code
     */
    static {
        block10: {
            block9: {
                var5 = new String[125];
                var3_1 = 0;
                var2_2 = "\u0001W}z84')R1P\u0013\u0007\u001alcCPw4\u000fYdp3f$#B1y$2+.Zxo?f)#Xey/2j#X1}9?j#P1h?#j Rplw38 E?\u000b(Sb\u007f%/:8_~r\u001d&Wg}y(+!_\u007f{y5//Ccu#?d<D~h8%% \u001a)Dcs%f>)Eeu9!j9Etnw++<Fxr0\nlX~hw %9Xu\u0018&Wg}y(+!_\u007f{y*.-F?j249%Y\u007f2\u001cD~~;#'lWr\u007f259%Xv<#./lCby%\u0007)/Ydr#\u0005%\"Bcs;f+8Bcu53>)\u001e\u001fSpn4.j*_}h24j:Wcu6$&)\u0016tn%)8l\u0011*\tDcs%f:>Yry$5#\"Q1w24()D~ow68%Xru''&lXpq2fm /Y|2$3$b\\\u007fx>h&(Wa2\u001b\"+<ued\u0011')8Yce\u0006%Ebi242\u001cD~~;#'lWr\u007f259%Xv<#./lWr\u007f83$8sil>4/?weh%f+8Bcu53>)\"\u0018Sbhw68#Rd\u007f2\"j*Y}p81#\"Q1y%4%>\u001eb5mf\u0002k\u0018\u000b#T{y42) Wbo*\u0018^t<\u0014*#)Xe<\u0014#88_wu4'>)\u0016\\}9'-)D1u$f8)Gdu%#.-\tDcs%f>)Eeu9!j/Sch> #/Weyw/$(Si<$#+>Uy<1/&8Sc!\u0000rPLw%%\"Px{\"4+8_~rw2/?B1z6/&9Dt2w\u0010%Ebi24d/W\u007fs9/)-Z\u0018?Csv2%>'Shu3#$8_wu24d$Si\u0005}\u0006!,g\u000e-Urs\"(>\tNau%#9\u00048Ddy\u0002k\u0018)\u001fSpn4.j*_}h24j:Wcu6$&)\u0016an8%/?Exr0f/>D~nwa\u0002b\u00168\u000fW\u007fr82j/Y\u007fr2%>lB~<#.#?\u0016uu%#)8Yce{f+9Byy92#/Weu8(j*Wxp2\"d\u0018&Wg}y(+!_\u007f{y68#@xx24d9D}\u0006*Y}p81 /Dtx2(>%W}ow\"#(\u0016\u007fs#f+9Byy92#/Wey\u0016\u0019Etn\u001a'$-Qtnw/9lX~hw5/8\u0014&Wg}y(+!_\u007f{y4/*Scn6*\u000e-Urs\"(>\tNau%#9#/W\u007fr82j)Nen6%>lXpq2f,>Y|<#.#?\u0016vn83:\u001e\u0000rPLw5/-Drtw#8>Yc< />$\u0016wu;2/>\u00161\tDcs%f&#Yzu9!j9F1\u007f24>%Px\u007f62/lTh<\u0004\r\u0003l_\u007f<3/8)Ues%?d\u0011/W\u007fr82j)Nen6%>lU\u007f\u001b!Cbhw6+?E1}#f&)Wbhw)$)\u0016ee'#E\u001cScz84'%Xv<\u001b\u0002\u000b\u001c\u0016by64)$\u0016sew-/>Ttn85j<Dxr4/:-Z1;p={1\u00116<\u007f#$8Scl%/9)\fj,*o\"\u0000rPLw5/-Drtw#8>Yc0w6+>Bx};f8)Edp#hT\u0018^t<$#+>Uy<1/&8Sc<1)8lCby%f))Deu1/)-Btow$3l_bo\"#8lXpq2f+\"R1o24#-Z1r\"+()D1u$f#\"@pp>\"d\u001e\u001cD~j>\"/>\u0016xow'&>Spx.f)#Xwu038)R#&Wg}y(+!_\u007f{y5//Ccu#?d-Cet2(>%Uph>)$\u0012}\u0007'(cr}\u007f\u0000!,gvz|\u0006!, \rCuu#)8l^pow(%8\u0016sy2(j%Xxh>'&%Ltx\u0002b\u0016\u001d8^xow68#@xx24j\"Stx$f+lU~r1/-m\u001f&Wg}y(+!_\u007f{y*.-F?z6%>#Dh2$))'Se!\u000fYdp3(m8\u0016pi#./\"Bx\u007f62/lUcy3#$8_pp$<\u0018^t<1)& Yfu9!j9Etnw++<Fxr0n9e\u0016usw(%8\u0016uy1/$)\u0016}s0/$lWeh%/(9Bt2\u0002v\u0016\f?Scu6*$9[sy%\u000fdYsv2%>\u000fZpo${`e\u0011lRxxw(%8\u0016g};/.-Bt+\u000fYdp3f$#B1y$2+.Zxo?f)#Xey/2j9Exr0f\u0006\bwA<\u0002\u0014\u0006l\u0005 Rpl$\"\u000fW\u007fr82j/Y\u007fr2%>lB~<#.#?\u0016uu%#)8Ycewa\u000b#T{y42) Wbo+\u000fYdp3f$#B1y$2+.Zxo?f)#Xey/2j9Exr0f\u0006\bwA<\u0002\u0014\u0006lM\u0018^t<$#+>Uy<1/&8Sc<1)8lCby%f))Deu1/)-Btow$3lEd~=#)8\u0016zy.f#(S\u007fh> #)D1u$f#\"@pp>\"d\u000b(Sb\u007f%/:8_~r\u001e/Y|2$3$b\\\u007fx>h&(Wa24)$\"Srhy6%#Z\u001e/Y|2$3$b\\\u007fx>h&(Wa2%#+(\u0018eu:#%9B0\u000fYdp3(m8\u0016wu9\"j\u0000rPLw39)D1z84j'Sc~24%?\u0016an>()%Fppwa\u001ak\u001a1\u007f6($#B1x22/>[xr2f\u0018\tw]Qy\u001d8^xow68#@xx24j\"Stx$f+lU~r1/-mclU~r#'#\"Su<2+:8O1\u007f24>lWeh%/(9Bt<9'')\u00181H?/9l[pl'/$+\u0016fu;*j.S1u0(%>Su<65j<Wchw),lByyw/$(Siu9!j<D~\u007f259b*\u0018^xow%%\"Px{\"4+8_~rw\"#(\u0016\u007fs#f3%S}xw'$5\u0016vn83:K8^t<62>>_si##j-Urs\"(>\tNau%#9lApow68)Etr#f(9B1e>#&(Su<6f>5Ft<9)>lEdl')88Su&w\u00169Etn\u0014#88_wu4'>)\rsu9'852\nYdr3f'9Zeu'*/lzU]\u0007f??Scow %>\u0016zy%$/>Yb<'4#\"Uxl6*jk%/Dtx2(>%W}ow\"#(\u0016\u007fs#f+9Byy92#/Weyw %>\u0016'\u001cD~~;#'lRt\u007f8\"#\"Q1\u007f24>lZ~\u007f62/(\u0016xrw\n\u000e\rf+<%\u0019Xp~;#j8Y1y/6+\"R1P\u0013\u0007\u001alTxr3f:-Ebk84.v\u0016\u0003?E}\u0017\u000fYdp3(m8\u0016wu9\"j9Etnwao?\u0011\u0018\u0018^t<\"5/>\u0016us25j\"Ye<2>#?B?\u000flqcs\"6j!Wal>(-l*\u0018^xow%%\"Px{\"4+8_~rw\"#(\u0016\u007fs#f3%S}xw'$5\u0016do249N\u0018^t<$#+>Uy<1/&8Sc<1)8lUtn#/,%Uph2f#\"Rtd>(-lRxxw(%8\u0016hu2*.lW\u007few39)D1\u007f24>%Px\u007f62/?\u00129Etn\u0016%)#C\u007fh\u0014)$8D~p &Wg}y(+!_\u007f{y5//Ccu#?d/Dtx2(>%W}o(8^xow*.-F1\u007f8(,%Q1k65j8Sbh2\"j?Cr\u007f259*C}p.\u0006?_|l;#\u0005\u0019Etnw*8^t<$#+>Uy<%#99Zeow#2/Stx2\"j8^t<:'2%[dqmfm\u0002v\u0016)\u0000rPLw5/-Drtw#8>Yc&w\u0007?8^tr#/)-Bxs9f,-_}y3h\t\u000fw_S\u0019\u000f\t\rz\u001e\u0000rPLw5/-Drtw#8>Yc< />$\u0016wu;2/>\u0016\u0019/W\u007fr82j)Nen6%>lCby%f&#Qxr!/Y|2$3$b\\\u007fx>h&(Wa24)$\"Srhy2#!S~i#>\nyDR\u0013f??Sc]4%%9Xe_8(>>Y}<62>>_si##j.Ce<>5j#P1i9#2<Srh2\"j8Oaymf\u001b)Dcs%f>)Eeu9!j+D~i'f'-Fau9!,/X,H25>l\u007fbo\"#8`\u0016~ij\u0012/?B1S%!+\"_k}#/%\"\u001a1\u007fj\u0012/?B\u001e&Wg}y(+!_\u007f{y5//Ccu#?d<Dxr4/:-Z-\nYdr3f'9Zeu'*/lzU]\u0007f??Scow %>\u0016~r2f\u0004\u0018z\\<#)!)X6\u001d\"Y1x25)>_ah>)$lP~nw2\"%E1y9285\u0016\u0005Rtr#/>5fcs!/.)D1I$#8l\u001a\u000fW\u007fr82j?Spn4.j9Exr0f(-Et&w!\u0000rPLw%%\"Px{\"4+8_~rw2/?B1z6/&9Dt2w\u000e%Ebi24d>Pr.esy\u0017\u0019Etnw++<Fxr0f,#D1\u007f;'9?\u0016\u00129Etn\u0016%)#C\u007fh\u0014)$8D~p\u001a\u0005Xg};/.lCby%f))Deu1/)-Bt&w-\tDcs%f>)Eeu9!j/Sch> #/Weyw/$(Si<$#+>Uy<1/&8Sc$\u0019Etn\u001a'$-Qtnw.+?\u0016\u007fs#f()S\u007f<>(#8_pp></(\u0002d\u0015\u0014?Csv2%>'Shu3#$8_wu24\u0002dJ\u000elcby%f'-Fau9!j\u0013\u0001W}z84')R1P\u0013\u0007\u001alcCPw(\u0018^xow%%\"Px{w\"%)E1r82j/Y\u007fh6/$lW\u007f<;\"+<\u0016dn;C\rBey:6>lB~<63>$S\u007fh>%+8S1i$/$+\u0016dr$3:<Ych2\"j!Set8\"j#X1h?/9lFcs!/.)D+<\u0017\u000bD~i'\u000b+\"Wvy%f#?\u0016\u007fs#f9)B%\u000bD~i'\u000b+\"Wvy%f\"-E1r82j.Strw/$%Bx};/0)R\u001b&Wg}y(+!_\u007f{y +/B~n.h#\"_eu6*\u000bdYsv2%>\u001f_u!\u001d\"Y1x25)>_ah>)$lP~nw2\"%E1y9285%\u0018^t<1)& Yfu9!j!Wal>(-?\u0016r}\"5/(\u0016tn%)8?\f4\u000fYdp3f$#B1y$2+.Zxo?f)#Xey/2j#X1}9?j#P1h?#j Rplw38 E?\f Rpl\u0005#,)Dc};";
                var4_3 = "\u0001W}z84')R1P\u0013\u0007\u001alcCPw4\u000fYdp3f$#B1y$2+.Zxo?f)#Xey/2j#X1}9?j#P1h?#j Rplw38 E?\u000b(Sb\u007f%/:8_~r\u001d&Wg}y(+!_\u007f{y5//Ccu#?d<D~h8%% \u001a)Dcs%f>)Eeu9!j9Etnw++<Fxr0\nlX~hw %9Xu\u0018&Wg}y(+!_\u007f{y*.-F?j249%Y\u007f2\u001cD~~;#'lWr\u007f259%Xv<#./lCby%\u0007)/Ydr#\u0005%\"Bcs;f+8Bcu53>)\u001e\u001fSpn4.j*_}h24j:Wcu6$&)\u0016tn%)8l\u0011*\tDcs%f:>Yry$5#\"Q1w24()D~ow68%Xru''&lXpq2fm /Y|2$3$b\\\u007fx>h&(Wa2\u001b\"+<ued\u0011')8Yce\u0006%Ebi242\u001cD~~;#'lWr\u007f259%Xv<#./lWr\u007f83$8sil>4/?weh%f+8Bcu53>)\"\u0018Sbhw68#Rd\u007f2\"j*Y}p81#\"Q1y%4%>\u001eb5mf\u0002k\u0018\u000b#T{y42) Wbo*\u0018^t<\u0014*#)Xe<\u0014#88_wu4'>)\u0016\\}9'-)D1u$f8)Gdu%#.-\tDcs%f>)Eeu9!j/Sch> #/Weyw/$(Si<$#+>Uy<1/&8Sc!\u0000rPLw%%\"Px{\"4+8_~rw2/?B1z6/&9Dt2w\u0010%Ebi24d/W\u007fs9/)-Z\u0018?Csv2%>'Shu3#$8_wu24d$Si\u0005}\u0006!,g\u000e-Urs\"(>\tNau%#9\u00048Ddy\u0002k\u0018)\u001fSpn4.j*_}h24j:Wcu6$&)\u0016an8%/?Exr0f/>D~nwa\u0002b\u00168\u000fW\u007fr82j/Y\u007fr2%>lB~<#.#?\u0016uu%#)8Yce{f+9Byy92#/Weu8(j*Wxp2\"d\u0018&Wg}y(+!_\u007f{y68#@xx24d9D}\u0006*Y}p81 /Dtx2(>%W}ow\"#(\u0016\u007fs#f+9Byy92#/Wey\u0016\u0019Etn\u001a'$-Qtnw/9lX~hw5/8\u0014&Wg}y(+!_\u007f{y4/*Scn6*\u000e-Urs\"(>\tNau%#9#/W\u007fr82j)Nen6%>lXpq2f,>Y|<#.#?\u0016vn83:\u001e\u0000rPLw5/-Drtw#8>Yc< />$\u0016wu;2/>\u00161\tDcs%f&#Yzu9!j9F1\u007f24>%Px\u007f62/lTh<\u0004\r\u0003l_\u007f<3/8)Ues%?d\u0011/W\u007fr82j)Nen6%>lU\u007f\u001b!Cbhw6+?E1}#f&)Wbhw)$)\u0016ee'#E\u001cScz84'%Xv<\u001b\u0002\u000b\u001c\u0016by64)$\u0016sew-/>Ttn85j<Dxr4/:-Z1;p={1\u00116<\u007f#$8Scl%/9)\fj,*o\"\u0000rPLw5/-Drtw#8>Yc0w6+>Bx};f8)Edp#hT\u0018^t<$#+>Uy<1/&8Sc<1)8lCby%f))Deu1/)-Btow$3l_bo\"#8lXpq2f+\"R1o24#-Z1r\"+()D1u$f#\"@pp>\"d\u001e\u001cD~j>\"/>\u0016xow'&>Spx.f)#Xwu038)R#&Wg}y(+!_\u007f{y5//Ccu#?d-Cet2(>%Uph>)$\u0012}\u0007'(cr}\u007f\u0000!,gvz|\u0006!, \rCuu#)8l^pow(%8\u0016sy2(j%Xxh>'&%Ltx\u0002b\u0016\u001d8^xow68#@xx24j\"Stx$f+lU~r1/-m\u001f&Wg}y(+!_\u007f{y*.-F?z6%>#Dh2$))'Se!\u000fYdp3(m8\u0016pi#./\"Bx\u007f62/lUcy3#$8_pp$<\u0018^t<1)& Yfu9!j9Etnw++<Fxr0n9e\u0016usw(%8\u0016uy1/$)\u0016}s0/$lWeh%/(9Bt2\u0002v\u0016\f?Scu6*$9[sy%\u000fdYsv2%>\u000fZpo${`e\u0011lRxxw(%8\u0016g};/.-Bt+\u000fYdp3f$#B1y$2+.Zxo?f)#Xey/2j9Exr0f\u0006\bwA<\u0002\u0014\u0006l\u0005 Rpl$\"\u000fW\u007fr82j/Y\u007fr2%>lB~<#.#?\u0016uu%#)8Ycewa\u000b#T{y42) Wbo+\u000fYdp3f$#B1y$2+.Zxo?f)#Xey/2j9Exr0f\u0006\bwA<\u0002\u0014\u0006lM\u0018^t<$#+>Uy<1/&8Sc<1)8lCby%f))Deu1/)-Btow$3lEd~=#)8\u0016zy.f#(S\u007fh> #)D1u$f#\"@pp>\"d\u000b(Sb\u007f%/:8_~r\u001e/Y|2$3$b\\\u007fx>h&(Wa24)$\"Srhy6%#Z\u001e/Y|2$3$b\\\u007fx>h&(Wa2%#+(\u0018eu:#%9B0\u000fYdp3(m8\u0016wu9\"j\u0000rPLw39)D1z84j'Sc~24%?\u0016an>()%Fppwa\u001ak\u001a1\u007f6($#B1x22/>[xr2f\u0018\tw]Qy\u001d8^xow68#@xx24j\"Stx$f+lU~r1/-mclU~r#'#\"Su<2+:8O1\u007f24>lWeh%/(9Bt<9'')\u00181H?/9l[pl'/$+\u0016fu;*j.S1u0(%>Su<65j<Wchw),lByyw/$(Siu9!j<D~\u007f259b*\u0018^xow%%\"Px{\"4+8_~rw\"#(\u0016\u007fs#f3%S}xw'$5\u0016vn83:K8^t<62>>_si##j-Urs\"(>\tNau%#9lApow68)Etr#f(9B1e>#&(Su<6f>5Ft<9)>lEdl')88Su&w\u00169Etn\u0014#88_wu4'>)\rsu9'852\nYdr3f'9Zeu'*/lzU]\u0007f??Scow %>\u0016zy%$/>Yb<'4#\"Uxl6*jk%/Dtx2(>%W}ow\"#(\u0016\u007fs#f+9Byy92#/Weyw %>\u0016'\u001cD~~;#'lRt\u007f8\"#\"Q1\u007f24>lZ~\u007f62/(\u0016xrw\n\u000e\rf+<%\u0019Xp~;#j8Y1y/6+\"R1P\u0013\u0007\u001alTxr3f:-Ebk84.v\u0016\u0003?E}\u0017\u000fYdp3(m8\u0016wu9\"j9Etnwao?\u0011\u0018\u0018^t<\"5/>\u0016us25j\"Ye<2>#?B?\u000flqcs\"6j!Wal>(-l*\u0018^xow%%\"Px{\"4+8_~rw\"#(\u0016\u007fs#f3%S}xw'$5\u0016do249N\u0018^t<$#+>Uy<1/&8Sc<1)8lUtn#/,%Uph2f#\"Rtd>(-lRxxw(%8\u0016hu2*.lW\u007few39)D1\u007f24>%Px\u007f62/?\u00129Etn\u0016%)#C\u007fh\u0014)$8D~p &Wg}y(+!_\u007f{y5//Ccu#?d/Dtx2(>%W}o(8^xow*.-F1\u007f8(,%Q1k65j8Sbh2\"j?Cr\u007f259*C}p.\u0006?_|l;#\u0005\u0019Etnw*8^t<$#+>Uy<%#99Zeow#2/Stx2\"j8^t<:'2%[dqmfm\u0002v\u0016)\u0000rPLw5/-Drtw#8>Yc&w\u0007?8^tr#/)-Bxs9f,-_}y3h\t\u000fw_S\u0019\u000f\t\rz\u001e\u0000rPLw5/-Drtw#8>Yc< />$\u0016wu;2/>\u0016\u0019/W\u007fr82j)Nen6%>lCby%f&#Qxr!/Y|2$3$b\\\u007fx>h&(Wa24)$\"Srhy2#!S~i#>\nyDR\u0013f??Sc]4%%9Xe_8(>>Y}<62>>_si##j.Ce<>5j#P1i9#2<Srh2\"j8Oaymf\u001b)Dcs%f>)Eeu9!j+D~i'f'-Fau9!,/X,H25>l\u007fbo\"#8`\u0016~ij\u0012/?B1S%!+\"_k}#/%\"\u001a1\u007fj\u0012/?B\u001e&Wg}y(+!_\u007f{y5//Ccu#?d<Dxr4/:-Z-\nYdr3f'9Zeu'*/lzU]\u0007f??Scow %>\u0016~r2f\u0004\u0018z\\<#)!)X6\u001d\"Y1x25)>_ah>)$lP~nw2\"%E1y9285\u0016\u0005Rtr#/>5fcs!/.)D1I$#8l\u001a\u000fW\u007fr82j?Spn4.j9Exr0f(-Et&w!\u0000rPLw%%\"Px{\"4+8_~rw2/?B1z6/&9Dt2w\u000e%Ebi24d>Pr.esy\u0017\u0019Etnw++<Fxr0f,#D1\u007f;'9?\u0016\u00129Etn\u0016%)#C\u007fh\u0014)$8D~p\u001a\u0005Xg};/.lCby%f))Deu1/)-Bt&w-\tDcs%f>)Eeu9!j/Sch> #/Weyw/$(Si<$#+>Uy<1/&8Sc$\u0019Etn\u001a'$-Qtnw.+?\u0016\u007fs#f()S\u007f<>(#8_pp></(\u0002d\u0015\u0014?Csv2%>'Shu3#$8_wu24\u0002dJ\u000elcby%f'-Fau9!j\u0013\u0001W}z84')R1P\u0013\u0007\u001alcCPw(\u0018^xow%%\"Px{w\"%)E1r82j/Y\u007fh6/$lW\u007f<;\"+<\u0016dn;C\rBey:6>lB~<63>$S\u007fh>%+8S1i$/$+\u0016dr$3:<Ych2\"j!Set8\"j#X1h?/9lFcs!/.)D+<\u0017\u000bD~i'\u000b+\"Wvy%f#?\u0016\u007fs#f9)B%\u000bD~i'\u000b+\"Wvy%f\"-E1r82j.Strw/$%Bx};/0)R\u001b&Wg}y(+!_\u007f{y +/B~n.h#\"_eu6*\u000bdYsv2%>\u001f_u!\u001d\"Y1x25)>_ah>)$lP~nw2\"%E1y9285%\u0018^t<1)& Yfu9!j!Wal>(-?\u0016r}\"5/(\u0016tn%)8?\f4\u000fYdp3f$#B1y$2+.Zxo?f)#Xey/2j#X1}9?j#P1h?#j Rplw38 E?\f Rpl\u0005#,)Dc};".length();
                var1_4 = 19;
                var0_5 = -1;
lbl7:
                // 2 sources

                while (true) {
                    v0 = 24;
                    v1 = ++var0_5;
                    v2 = var2_2.substring(v1, v1 + var1_4);
                    v3 = -1;
                    break block9;
                    break;
                }
lbl13:
                // 1 sources

                while (true) {
                    var5[var3_1++] = LdapIdentityProviderImpl.a(v0, LdapIdentityProviderImpl.d(v2));
                    if ((var0_5 += var1_4) < var4_3) {
                        var1_4 = var2_2.charAt(var0_5);
                        ** continue;
                    }
                    var2_2 = "\u0007p^F\u001bY\u0018\u0006zZ\u0003\u000b\u0016\u001b\u0007hGMH\f\u0006\u0016{]\u0003\t\u0017\u0011Sf\\\u0003\u000f\u000b\u001a\u0006y];6{\\L\u001aY\u0019\u001cfEJ\u0006\u001eU\u0006y\u000e@\r\u000b\u0001\u001aoG@\t\r\u0010SkW\u0003\u0001\n\u0006\u0006l\\\f\u001b\u001c\u0007\u001ahB\u0003\u0001\u0017U\u0017`\\F\u000b\r\u001a\u0001p\u0000";
                    var4_3 = "\u0007p^F\u001bY\u0018\u0006zZ\u0003\u000b\u0016\u001b\u0007hGMH\f\u0006\u0016{]\u0003\t\u0017\u0011Sf\\\u0003\u000f\u000b\u001a\u0006y];6{\\L\u001aY\u0019\u001cfEJ\u0006\u001eU\u0006y\u000e@\r\u000b\u0001\u001aoG@\t\r\u0010SkW\u0003\u0001\n\u0006\u0006l\\\f\u001b\u001c\u0007\u001ahB\u0003\u0001\u0017U\u0017`\\F\u000b\r\u001a\u0001p\u0000".length();
                    var1_4 = 38;
                    var0_5 = -1;
lbl22:
                    // 2 sources

                    while (true) {
                        v0 = 39;
                        v4 = ++var0_5;
                        v2 = var2_2.substring(v4, v4 + var1_4);
                        v3 = 0;
                        break block9;
                        break;
                    }
                    break;
                }
lbl28:
                // 1 sources

                while (true) {
                    var5[var3_1++] = LdapIdentityProviderImpl.a(v0, LdapIdentityProviderImpl.d(v2));
                    if ((var0_5 += var1_4) < var4_3) {
                        var1_4 = var2_2.charAt(var0_5);
                        ** continue;
                    }
                    break block10;
                    break;
                }
            }
            switch (v3) {
                default: {
                    ** continue;
                }
                ** case 0:
lbl39:
                // 1 sources

                ** continue;
            }
        }
        LdapIdentityProviderImpl.t = var5;
        LdapIdentityProviderImpl.b = LdapIdentityProviderImpl.t[55];
        LdapIdentityProviderImpl.a = LdapIdentityProviderImpl.t[112];
        LdapIdentityProviderImpl.c = Logger.getLogger(LdapIdentityProviderImpl.class.getName());
        var0_6 = LdapIdentityProviderImpl.t;
        LdapIdentityProviderImpl.d = new BigInteger(var0_6[44]);
        LdapIdentityProviderImpl.e = new BigInteger(var0_6[21]);
    }

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

    private static char[] d(String string) {
        char[] cArray = string.toCharArray();
        if (cArray.length < 2) {
            cArray = cArray;
            cArray[0] = (char)(cArray[0] ^ 0x52);
        }
        return cArray;
    }

    /*
     * Handled impossible loop by duplicating code
     * Enabled aggressive block sorting
     */
    private static String a(int n2, char[] cArray) {
        char[] cArray2;
        block11: {
            int n3;
            int n4;
            int n5;
            block10: {
                n5 = n2;
                cArray2 = cArray;
                n4 = cArray.length;
                n3 = 0;
                if (!true) break block10;
                n4 = n4;
                if (n4 <= n3) break block11;
            }
            do {
                n5 = n5;
                cArray2 = cArray2;
                int n6 = n3;
                cArray2[n6] = (char)(cArray2[n6] ^ (n5 ^ (switch (n3 % 7) {
                    case 0 -> 84;
                    case 1 -> 46;
                    case 2 -> 9;
                    case 3 -> 4;
                    case 4 -> 79;
                    case 5 -> 94;
                    default -> 82;
                })));
                ++n3;
                n4 = n4;
            } while (n4 > n3);
        }
        return new String(cArray2).intern();
    }
}

