/*
 * Decompiled with CFR 0.152.
 * 
 * Could not load the following classes:
 *  com.l7tech.gateway.common.Component
 *  com.l7tech.gateway.common.audit.AdminAuditRecord
 *  com.l7tech.gateway.common.audit.AuditRecordHeader
 *  com.l7tech.gateway.common.audit.AuditRecordUtils
 *  com.l7tech.gateway.common.audit.ExternalAuditRecordHeader
 *  com.l7tech.gateway.common.audit.MessageSummaryAuditRecord
 *  com.l7tech.gateway.common.audit.SystemAuditRecord
 *  com.l7tech.gateway.common.module.ServerModuleFile
 *  com.l7tech.gateway.common.security.keystore.KeystoreFileEntityHeader
 *  com.l7tech.gateway.common.security.keystore.SsgKeyEntry
 *  com.l7tech.gateway.common.transport.InterfaceTag
 *  com.l7tech.identity.Group
 *  com.l7tech.identity.IdentityProvider
 *  com.l7tech.identity.User
 *  com.l7tech.objectmodel.CustomKeyStoreEntityHeader
 *  com.l7tech.objectmodel.Entity
 *  com.l7tech.objectmodel.EntityHeader
 *  com.l7tech.objectmodel.EntityHeaderSet
 *  com.l7tech.objectmodel.EntityType
 *  com.l7tech.objectmodel.EntityTypeRegistry
 *  com.l7tech.objectmodel.FindException
 *  com.l7tech.objectmodel.Goid
 *  com.l7tech.objectmodel.GuidEntityHeader
 *  com.l7tech.objectmodel.HeaderBasedEntityFinder
 *  com.l7tech.objectmodel.IdentityHeader
 *  com.l7tech.objectmodel.NamedEntity
 *  com.l7tech.objectmodel.ObjectNotFoundException
 *  com.l7tech.objectmodel.PersistentEntity
 *  com.l7tech.objectmodel.SsgKeyHeader
 *  com.l7tech.objectmodel.UnsupportedEntityTypeException
 *  com.l7tech.objectmodel.ZoneableEntity
 *  com.l7tech.policy.DesignTimeEntityProvider
 *  com.l7tech.policy.PolicyUtil
 *  com.l7tech.policy.assertion.AssertionStatus
 *  com.l7tech.policy.assertion.UsesEntitiesAtDesignTime
 *  com.l7tech.security.token.SecurityTokenType
 *  com.l7tech.util.ConfigFactory
 *  com.l7tech.util.ExceptionUtils
 *  com.l7tech.util.Functions
 *  com.l7tech.util.Functions$BinaryVoid
 *  com.l7tech.util.Functions$Unary
 *  com.l7tech.util.GoidUpgradeMapper
 *  org.hibernate.HibernateException
 *  org.hibernate.MappingException
 *  org.hibernate.ObjectNotFoundException
 *  org.hibernate.metadata.ClassMetadata
 *  org.jetbrains.annotations.NotNull
 *  org.jetbrains.annotations.Nullable
 *  org.springframework.dao.DataAccessResourceFailureException
 *  org.springframework.orm.hibernate5.HibernateCallback
 *  org.springframework.orm.hibernate5.support.HibernateDaoSupport
 *  org.springframework.transaction.annotation.Propagation
 *  org.springframework.transaction.annotation.Transactional
 */
package com.l7tech.server;

import com.l7tech.gateway.common.Component;
import com.l7tech.gateway.common.audit.AdminAuditRecord;
import com.l7tech.gateway.common.audit.AuditRecordHeader;
import com.l7tech.gateway.common.audit.AuditRecordUtils;
import com.l7tech.gateway.common.audit.ExternalAuditRecordHeader;
import com.l7tech.gateway.common.audit.MessageSummaryAuditRecord;
import com.l7tech.gateway.common.audit.SystemAuditRecord;
import com.l7tech.gateway.common.module.ServerModuleFile;
import com.l7tech.gateway.common.security.keystore.KeystoreFileEntityHeader;
import com.l7tech.gateway.common.security.keystore.SsgKeyEntry;
import com.l7tech.gateway.common.transport.InterfaceTag;
import com.l7tech.identity.Group;
import com.l7tech.identity.IdentityProvider;
import com.l7tech.identity.User;
import com.l7tech.objectmodel.CustomKeyStoreEntityHeader;
import com.l7tech.objectmodel.Entity;
import com.l7tech.objectmodel.EntityHeader;
import com.l7tech.objectmodel.EntityHeaderSet;
import com.l7tech.objectmodel.EntityType;
import com.l7tech.objectmodel.EntityTypeRegistry;
import com.l7tech.objectmodel.FindException;
import com.l7tech.objectmodel.Goid;
import com.l7tech.objectmodel.GuidEntityHeader;
import com.l7tech.objectmodel.HeaderBasedEntityFinder;
import com.l7tech.objectmodel.IdentityHeader;
import com.l7tech.objectmodel.NamedEntity;
import com.l7tech.objectmodel.PersistentEntity;
import com.l7tech.objectmodel.SsgKeyHeader;
import com.l7tech.objectmodel.UnsupportedEntityTypeException;
import com.l7tech.objectmodel.ZoneableEntity;
import com.l7tech.policy.DesignTimeEntityProvider;
import com.l7tech.policy.PolicyUtil;
import com.l7tech.policy.assertion.AssertionStatus;
import com.l7tech.policy.assertion.UsesEntitiesAtDesignTime;
import com.l7tech.security.token.SecurityTokenType;
import com.l7tech.server.EntityFinder;
import com.l7tech.server.EntityHeaderUtils;
import com.l7tech.server.audit.AuditRecordManager;
import com.l7tech.server.bg;
import com.l7tech.server.bh;
import com.l7tech.server.bi;
import com.l7tech.server.entity.GenericEntityManager;
import com.l7tech.server.identity.IdentityProviderFactory;
import com.l7tech.server.module.ServerModuleFileManager;
import com.l7tech.server.p;
import com.l7tech.server.policy.CustomKeyValueStoreManager;
import com.l7tech.server.policy.EncapsulatedAssertionConfigManager;
import com.l7tech.server.policy.PolicyManager;
import com.l7tech.server.q;
import com.l7tech.server.security.keystore.SsgKeyFinder;
import com.l7tech.server.security.keystore.SsgKeyStoreManager;
import com.l7tech.util.ConfigFactory;
import com.l7tech.util.ExceptionUtils;
import com.l7tech.util.Functions;
import com.l7tech.util.GoidUpgradeMapper;
import java.io.Serializable;
import java.security.KeyStoreException;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Set;
import java.util.logging.Logger;
import org.hibernate.HibernateException;
import org.hibernate.MappingException;
import org.hibernate.ObjectNotFoundException;
import org.hibernate.metadata.ClassMetadata;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.springframework.dao.DataAccessResourceFailureException;
import org.springframework.orm.hibernate5.HibernateCallback;
import org.springframework.orm.hibernate5.support.HibernateDaoSupport;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

/*
 * Exception performing whole class analysis ignored.
 */
@Transactional(propagation=Propagation.REQUIRED, rollbackFor={Throwable.class})
public class EntityFinderImpl
extends HibernateDaoSupport
implements EntityFinder,
DesignTimeEntityProvider {
    private static final Logger a;
    private IdentityProviderFactory b;
    private PolicyManager c;
    private SsgKeyStoreManager d;
    private GenericEntityManager e;
    private EncapsulatedAssertionConfigManager f;
    private AuditRecordManager g;
    private CustomKeyValueStoreManager h;
    private ServerModuleFileManager i;
    private static final int j = 100;
    private static final String[] k;

    public void setEncapsulatedAssertionConfigManager(EncapsulatedAssertionConfigManager encapsulatedAssertionConfigManager) {
        this.f = encapsulatedAssertionConfigManager;
    }

    public void setIdentityProviderFactory(IdentityProviderFactory identityProviderFactory) {
        this.b = identityProviderFactory;
    }

    public void setPolicyManager(PolicyManager policyManager) {
        this.c = policyManager;
    }

    public void setKeyStoreManager(SsgKeyStoreManager ssgKeyStoreManager) {
        this.d = ssgKeyStoreManager;
    }

    public void setGenericEntityManager(GenericEntityManager genericEntityManager) {
        this.e = genericEntityManager;
    }

    public void setAuditRecordManager(@NotNull AuditRecordManager auditRecordManager) {
        try {
            if (auditRecordManager == null) {
                EntityFinderImpl.a(0);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw EntityFinderImpl.a(illegalArgumentException);
        }
        this.g = auditRecordManager;
    }

    public void setCustomKeyValueStoreManager(@NotNull CustomKeyValueStoreManager customKeyValueStoreManager) {
        try {
            if (customKeyValueStoreManager == null) {
                EntityFinderImpl.a(1);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw EntityFinderImpl.a(illegalArgumentException);
        }
        this.h = customKeyValueStoreManager;
    }

    public void setServerModuleFileManager(@NotNull ServerModuleFileManager serverModuleFileManager) {
        try {
            if (serverModuleFileManager == null) {
                EntityFinderImpl.a(2);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw EntityFinderImpl.a(illegalArgumentException);
        }
        this.i = serverModuleFileManager;
    }

    /*
     * Loose catch block
     */
    @Override
    @Transactional(readOnly=true)
    public EntityHeaderSet<EntityHeader> findAll(Class<? extends Entity> clazz) throws FindException {
        try {
            if (clazz == null) {
                throw new IllegalArgumentException(k[35]);
            }
        }
        catch (DataAccessResourceFailureException dataAccessResourceFailureException) {
            throw EntityFinderImpl.a((Exception)((Object)dataAccessResourceFailureException));
        }
        EntityType entityType = EntityType.findTypeByEntity(clazz);
        try {
            if (EntityType.SSG_KEY_ENTRY == entityType) {
                return this.a();
            }
        }
        catch (FindException findException) {
            throw EntityFinderImpl.a((Exception)((Object)findException));
        }
        try {
            if (EntityType.SSG_KEYSTORE == entityType) {
                return this.b();
            }
        }
        catch (FindException findException) {
            throw EntityFinderImpl.a((Exception)((Object)findException));
        }
        try {
            block19: {
                block20: {
                    if (Entity.class.isAssignableFrom(clazz)) break block19;
                    if (EntityType.USER.equals((Object)entityType)) break block19;
                    break block20;
                    catch (DataAccessResourceFailureException dataAccessResourceFailureException) {
                        throw EntityFinderImpl.a((Exception)((Object)dataAccessResourceFailureException));
                    }
                }
                try {
                    block21: {
                        if (EntityType.GROUP.equals((Object)entityType)) break block19;
                        break block21;
                        catch (DataAccessResourceFailureException dataAccessResourceFailureException) {
                            throw EntityFinderImpl.a((Exception)((Object)dataAccessResourceFailureException));
                        }
                    }
                    throw new UnsupportedEntityTypeException(k[10] + entityType.getName() + k[4]);
                }
                catch (DataAccessResourceFailureException dataAccessResourceFailureException) {
                    throw EntityFinderImpl.a((Exception)((Object)dataAccessResourceFailureException));
                }
            }
            return (EntityHeaderSet)this.getHibernateTemplate().execute((HibernateCallback)new bg(this, clazz, entityType));
        }
        catch (DataAccessResourceFailureException dataAccessResourceFailureException) {
            String[] stringArray = k;
            throw new FindException(stringArray[23], (Throwable)dataAccessResourceFailureException);
        }
        catch (IllegalStateException illegalStateException) {
            String[] stringArray = k;
            throw new FindException(stringArray[22], (Throwable)illegalStateException);
        }
        catch (HibernateException hibernateException) {
            throw new FindException(k[22], (Throwable)hibernateException);
        }
    }

    private EntityHeaderSet<EntityHeader> a() throws FindException {
        try {
            EntityHeaderSet entityHeaderSet = new EntityHeaderSet();
            for (SsgKeyFinder ssgKeyFinder : this.d.findAll()) {
                for (String string : ssgKeyFinder.getAliases()) {
                    SsgKeyEntry ssgKeyEntry = ssgKeyFinder.getCertificateChain(string);
                    entityHeaderSet.add((EntityHeader)new SsgKeyHeader(ssgKeyEntry.getId(), ssgKeyEntry.getKeystoreId(), ssgKeyEntry.getAlias(), ssgKeyEntry.getName()));
                }
            }
            return entityHeaderSet;
        }
        catch (KeyStoreException keyStoreException) {
            throw new FindException(k[6] + ExceptionUtils.getMessage((Throwable)keyStoreException), (Throwable)keyStoreException);
        }
    }

    private EntityHeaderSet<EntityHeader> b() throws FindException {
        try {
            EntityHeaderSet entityHeaderSet = new EntityHeaderSet();
            for (SsgKeyFinder ssgKeyFinder : this.d.findAll()) {
                boolean bl2;
                String string;
                String string2;
                Goid goid;
                KeystoreFileEntityHeader keystoreFileEntityHeader;
                KeystoreFileEntityHeader keystoreFileEntityHeader2;
                EntityHeaderSet entityHeaderSet2;
                try {
                    KeystoreFileEntityHeader keystoreFileEntityHeader3;
                    entityHeaderSet2 = entityHeaderSet;
                    keystoreFileEntityHeader2 = keystoreFileEntityHeader3;
                    keystoreFileEntityHeader = keystoreFileEntityHeader3;
                    goid = ssgKeyFinder.getGoid();
                    string2 = ssgKeyFinder.getName();
                    string = ssgKeyFinder.getType().toString();
                    bl2 = !ssgKeyFinder.isMutable();
                }
                catch (KeyStoreException keyStoreException) {
                    throw EntityFinderImpl.a(keyStoreException);
                }
                keystoreFileEntityHeader2(goid, string2, string, bl2);
                entityHeaderSet2.add((EntityHeader)keystoreFileEntityHeader);
            }
            return entityHeaderSet;
        }
        catch (KeyStoreException keyStoreException) {
            throw new FindException(k[36] + ExceptionUtils.getMessage((Throwable)keyStoreException), (Throwable)keyStoreException);
        }
    }

    /*
     * Loose catch block
     * Enabled force condition propagation
     * Lifted jumps to return sites
     */
    @Override
    @Transactional(readOnly=true)
    public Entity find(@NotNull EntityHeader entityHeader) throws FindException {
        Set set;
        block49: {
            block51: {
                block48: {
                    try {
                        if (entityHeader == null) {
                            EntityFinderImpl.a(3);
                        }
                    }
                    catch (Exception exception) {
                        throw EntityFinderImpl.a(exception);
                    }
                    if (entityHeader instanceof IdentityHeader) {
                        IdentityHeader identityHeader = (IdentityHeader)entityHeader;
                        IdentityProvider identityProvider = this.b.getProvider(identityHeader.getProviderGoid());
                        try {
                            if (identityProvider == null) {
                                return null;
                            }
                        }
                        catch (Exception exception) {
                            throw EntityFinderImpl.a(exception);
                        }
                        try {
                            if (entityHeader.getType() == EntityType.USER) {
                                return identityProvider.getUserManager().findByPrimaryKey(entityHeader.getStrId());
                            }
                        }
                        catch (Exception exception) {
                            throw EntityFinderImpl.a(exception);
                        }
                        try {
                            if (entityHeader.getType() == EntityType.GROUP) {
                                return identityProvider.getGroupManager().findByPrimaryKey(entityHeader.getStrId());
                            }
                        }
                        catch (Exception exception) {
                            throw EntityFinderImpl.a(exception);
                        }
                        String[] stringArray = k;
                        throw new IllegalArgumentException(stringArray[38]);
                    }
                    if (entityHeader instanceof SsgKeyHeader) {
                        SsgKeyHeader ssgKeyHeader = (SsgKeyHeader)entityHeader;
                        try {
                            return this.d.lookupKeyByKeyAlias(ssgKeyHeader.getAlias(), ssgKeyHeader.getKeystoreId());
                        }
                        catch (Exception exception) {
                            String[] stringArray = k;
                            throw new FindException(stringArray[13] + String.valueOf(ssgKeyHeader), (Throwable)exception);
                        }
                    }
                    if (EntityType.POLICY == entityHeader.getType()) {
                        String string = entityHeader.getStrId();
                        try {
                            return this.c.findByPrimaryKey(Goid.parseGoid((String)string));
                        }
                        catch (IllegalArgumentException illegalArgumentException) {
                            return this.c.findByGuid(string);
                        }
                    }
                    if (EntityType.ENCAPSULATED_ASSERTION != entityHeader.getType()) break block48;
                    try {
                        block50: {
                            break block50;
                            catch (Exception exception) {
                                throw EntityFinderImpl.a(exception);
                            }
                        }
                        if (!(entityHeader instanceof GuidEntityHeader)) return this.f.findByPrimaryKey(entityHeader.getGoid());
                        if (this.f == null) return this.f.findByPrimaryKey(entityHeader.getGoid());
                    }
                    catch (Exception exception) {
                        throw EntityFinderImpl.a(exception);
                    }
                    GuidEntityHeader guidEntityHeader = (GuidEntityHeader)entityHeader;
                    String string = guidEntityHeader.getGuid();
                    try {
                        if (string == null) return this.f.findByPrimaryKey(entityHeader.getGoid());
                        return (Entity)this.f.findByGuid(string);
                    }
                    catch (Exception exception) {
                        throw EntityFinderImpl.a(exception);
                    }
                }
                if (entityHeader instanceof ExternalAuditRecordHeader) {
                    ExternalAuditRecordHeader externalAuditRecordHeader = (ExternalAuditRecordHeader)entityHeader;
                    try {
                        if (externalAuditRecordHeader.getRecordType().equals(AuditRecordUtils.TYPE_ADMIN)) {
                            return new AdminAuditRecord(externalAuditRecordHeader.getLevel(), externalAuditRecordHeader.getNodeId(), new Goid(987L, 123L), null, externalAuditRecordHeader.getName(), 'O', null, new Goid(123L, 456L), k[40], null, null);
                        }
                    }
                    catch (Exception exception) {
                        throw EntityFinderImpl.a(exception);
                    }
                    try {
                        if (externalAuditRecordHeader.getRecordType().equals(AuditRecordUtils.TYPE_MESSAGE)) {
                            return new MessageSummaryAuditRecord(externalAuditRecordHeader.getLevel(), externalAuditRecordHeader.getNodeId(), null, AssertionStatus.NONE, null, null, 3, null, 3, 4, 3, new Goid(0L, 45L), null, null, false, SecurityTokenType.HTTP_BASIC, new Goid(123L, 456L), null, null, null);
                        }
                    }
                    catch (Exception exception) {
                        throw EntityFinderImpl.a(exception);
                    }
                    try {
                        if (externalAuditRecordHeader.getRecordType().equals(AuditRecordUtils.TYPE_SYSTEM)) {
                            return new SystemAuditRecord(externalAuditRecordHeader.getLevel(), externalAuditRecordHeader.getNodeId(), Component.GW_AUDIT_SYSTEM, k[18], false, new Goid(0L, 0L), null, null, k[18], k[21]);
                        }
                    }
                    catch (Exception exception) {
                        throw EntityFinderImpl.a(exception);
                    }
                    String[] stringArray = k;
                    throw new FindException(stringArray[19] + externalAuditRecordHeader.getRecordType());
                }
                try {
                    if (entityHeader instanceof AuditRecordHeader) {
                        return this.g.findByHeader(entityHeader);
                    }
                }
                catch (Exception exception) {
                    throw EntityFinderImpl.a(exception);
                }
                if (!(entityHeader instanceof CustomKeyStoreEntityHeader)) break block49;
                break block51;
                catch (Exception exception) {
                    throw EntityFinderImpl.a(exception);
                }
            }
            if (entityHeader.getGoid() == null) return this.h.findByUniqueName(entityHeader.getName());
            try {
                block52: {
                    break block52;
                    catch (Exception exception) {
                        throw EntityFinderImpl.a(exception);
                    }
                }
                if (!Goid.DEFAULT_GOID.equals((Object)entityHeader.getGoid())) return this.h.findByPrimaryKey(entityHeader.getGoid());
                return this.h.findByUniqueName(entityHeader.getName());
            }
            catch (Exception exception) {
                throw EntityFinderImpl.a(exception);
            }
        }
        if (!EntityType.INTERFACE_TAG.equals((Object)entityHeader.getType())) return this.find(EntityTypeRegistry.getEntityClass((EntityType)entityHeader.getType()), (Serializable)((Object)entityHeader.getStrId()));
        String string = ConfigFactory.getUncachedConfig().getProperty(InterfaceTag.PROPERTY_NAME);
        try {
            Set set2;
            try {
                set2 = string == null ? Collections.emptySet() : InterfaceTag.parseMultiple((String)string);
            }
            catch (Exception exception) {
                throw EntityFinderImpl.a(exception);
            }
            set = set2;
        }
        catch (ParseException parseException) {
            throw new FindException(k[34] + ExceptionUtils.getMessageWithCause((Throwable)parseException), (Throwable)parseException);
        }
        InterfaceTag interfaceTag = null;
        if (set == null) return interfaceTag;
        return (InterfaceTag)Functions.grepFirst((Iterable)set, (Functions.Unary)new p(this, entityHeader));
    }

    /*
     * Loose catch block
     */
    @Override
    @Transactional(readOnly=true)
    public <ET extends Entity> ET find(Class<ET> clazz, Serializable serializable) throws FindException {
        try {
            Serializable serializable2;
            EntityType entityType;
            block35: {
                Goid goid;
                ServerModuleFileManager serverModuleFileManager;
                block37: {
                    block36: {
                        block32: {
                            Goid goid2;
                            GenericEntityManager genericEntityManager;
                            block34: {
                                block33: {
                                    entityType = EntityTypeRegistry.getEntityType(clazz);
                                    if (EntityType.SSG_KEY_ENTRY == entityType) {
                                        String string = (String)((Object)serializable);
                                        int n2 = string.indexOf(":");
                                        if (n2 < 0) {
                                            String[] stringArray = k;
                                            a.fine(stringArray[12] + String.valueOf(serializable) + stringArray[37]);
                                            return null;
                                        }
                                        return (ET)this.d.lookupKeyByKeyAlias(string.substring(n2 + 1), GoidUpgradeMapper.mapId((EntityType)EntityType.SSG_KEYSTORE, (String)string.substring(0, n2)));
                                    }
                                    if (EntityType.SSG_KEYSTORE == entityType) {
                                        return (ET)this.d.findByPrimaryKey(GoidUpgradeMapper.mapId((EntityType)EntityType.SSG_KEYSTORE, (String)((String)((Object)serializable))));
                                    }
                                    if (EntityType.GENERIC != entityType) break block32;
                                    try {
                                        block39: {
                                            genericEntityManager = this.e;
                                            if (!(serializable instanceof Goid)) break block33;
                                            break block39;
                                            catch (IllegalArgumentException illegalArgumentException) {
                                                throw EntityFinderImpl.a(illegalArgumentException);
                                            }
                                        }
                                        goid2 = (Goid)serializable;
                                        break block34;
                                    }
                                    catch (IllegalArgumentException illegalArgumentException) {
                                        throw EntityFinderImpl.a(illegalArgumentException);
                                    }
                                }
                                goid2 = GoidUpgradeMapper.mapId((EntityType)EntityType.GENERIC, (String)serializable.toString());
                            }
                            return (ET)genericEntityManager.findByPrimaryKey(goid2);
                        }
                        if (EntityType.SERVER_MODULE_FILE != entityType) break block35;
                        try {
                            block40: {
                                serverModuleFileManager = this.i;
                                if (!(serializable instanceof Goid)) break block36;
                                break block40;
                                catch (IllegalArgumentException illegalArgumentException) {
                                    throw EntityFinderImpl.a(illegalArgumentException);
                                }
                            }
                            goid = (Goid)serializable;
                            break block37;
                        }
                        catch (IllegalArgumentException illegalArgumentException) {
                            throw EntityFinderImpl.a(illegalArgumentException);
                        }
                    }
                    goid = GoidUpgradeMapper.mapId((EntityType)EntityType.SERVER_MODULE_FILE, (String)serializable.toString());
                }
                ServerModuleFile serverModuleFile = (ServerModuleFile)serverModuleFileManager.findByPrimaryKey(goid);
                if (serverModuleFile != null) {
                    ServerModuleFile serverModuleFile2 = new ServerModuleFile();
                    serverModuleFile2.copyFrom(serverModuleFile, false, true, true);
                    return (ET)serverModuleFile2;
                }
                return null;
            }
            if (PersistentEntity.class.isAssignableFrom(clazz)) {
                try {
                    Goid goid;
                    try {
                        goid = serializable instanceof Goid ? (Goid)serializable : Goid.parseGoid((String)serializable.toString());
                    }
                    catch (IllegalArgumentException illegalArgumentException) {
                        throw EntityFinderImpl.a(illegalArgumentException);
                    }
                    serializable2 = goid;
                }
                catch (IllegalArgumentException illegalArgumentException) {
                    String[] stringArray = k;
                    a.fine(stringArray[28] + String.valueOf(serializable) + stringArray[32]);
                    serializable2 = serializable;
                }
            } else {
                if (EntityType.INTERFACE_TAG.equals((Object)entityType)) {
                    InterfaceTag interfaceTag;
                    Set set;
                    String string = ConfigFactory.getUncachedConfig().getProperty(InterfaceTag.PROPERTY_NAME);
                    try {
                        Set set2;
                        try {
                            set2 = string == null ? Collections.emptySet() : InterfaceTag.parseMultiple((String)string);
                        }
                        catch (IllegalArgumentException illegalArgumentException) {
                            throw EntityFinderImpl.a(illegalArgumentException);
                        }
                        set = set2;
                    }
                    catch (ParseException parseException) {
                        String[] stringArray = k;
                        a.fine(stringArray[41] + ExceptionUtils.getMessageWithCause((Throwable)parseException));
                        return null;
                    }
                    InterfaceTag interfaceTag2 = null;
                    if (set != null) {
                        interfaceTag2 = (InterfaceTag)Functions.grepFirst((Iterable)set, (Functions.Unary)new q(this, serializable));
                    }
                    try {
                        interfaceTag = interfaceTag2 == null ? null : interfaceTag2;
                    }
                    catch (IllegalArgumentException illegalArgumentException) {
                        throw EntityFinderImpl.a(illegalArgumentException);
                    }
                    return (ET)interfaceTag;
                }
                serializable2 = serializable;
            }
            Serializable serializable3 = serializable2;
            return (ET)((Entity)this.getHibernateTemplate().execute((HibernateCallback)new bh(this, clazz, serializable3)));
        }
        catch (Exception exception) {
            block38: {
                try {
                    try {
                        if (!ExceptionUtils.causedBy((Throwable)exception, ObjectNotFoundException.class) && !ExceptionUtils.causedBy((Throwable)exception, com.l7tech.objectmodel.ObjectNotFoundException.class)) break block38;
                    }
                    catch (IllegalArgumentException illegalArgumentException) {
                        throw EntityFinderImpl.a(illegalArgumentException);
                    }
                    return null;
                }
                catch (IllegalArgumentException illegalArgumentException) {
                    throw EntityFinderImpl.a(illegalArgumentException);
                }
            }
            throw new FindException(k[9], (Throwable)exception);
        }
    }

    @Override
    @Transactional(readOnly=true)
    public EntityHeader findHeader(EntityType entityType, Serializable serializable) throws FindException {
        Object ET = this.find(entityType.getEntityClass(), serializable);
        try {
            if (ET == null) {
                return null;
            }
        }
        catch (FindException findException) {
            throw EntityFinderImpl.a((Exception)((Object)findException));
        }
        String string = null;
        if (ET instanceof NamedEntity) {
            NamedEntity namedEntity = (NamedEntity)ET;
            string = namedEntity.getName();
        }
        return new EntityHeader(ET.getId(), entityType, string, null);
    }

    public Collection<EntityHeader> findByEntityTypeAndSecurityZoneGoid(@NotNull EntityType entityType, Goid goid) throws FindException {
        try {
            if (entityType == null) {
                EntityFinderImpl.a(4);
            }
        }
        catch (FindException findException) {
            throw EntityFinderImpl.a((Exception)((Object)findException));
        }
        try {
            if (!entityType.isSecurityZoneable()) {
                throw new IllegalArgumentException(k[26]);
            }
        }
        catch (FindException findException) {
            throw EntityFinderImpl.a((Exception)((Object)findException));
        }
        Collection collection = this.a(entityType.getEntityClass(), goid);
        ArrayList<EntityHeader> arrayList = new ArrayList<EntityHeader>();
        for (Entity entity : collection) {
            arrayList.add(EntityHeaderUtils.fromEntity(entity));
        }
        return arrayList;
    }

    private <ET extends Entity> Collection<ET> a(@NotNull Class<ET> clazz, Goid goid) throws FindException {
        try {
            if (clazz == null) {
                EntityFinderImpl.a(5);
            }
        }
        catch (HibernateException hibernateException) {
            throw EntityFinderImpl.a((Exception)((Object)hibernateException));
        }
        try {
            if (!ZoneableEntity.class.isAssignableFrom(clazz)) {
                throw new IllegalArgumentException(k[2]);
            }
        }
        catch (HibernateException hibernateException) {
            throw EntityFinderImpl.a((Exception)((Object)hibernateException));
        }
        try {
            return (Collection)this.getHibernateTemplate().execute((HibernateCallback)new bi(this, clazz, goid));
        }
        catch (HibernateException hibernateException) {
            String[] stringArray = k;
            throw new FindException(stringArray[29] + clazz.getName() + stringArray[17] + String.valueOf(goid), (Throwable)hibernateException);
        }
    }

    /*
     * Loose catch block
     * Enabled force condition propagation
     * Lifted jumps to return sites
     */
    private boolean a(Class clazz, ClassMetadata classMetadata) {
        block7: {
            if (Group.class.isAssignableFrom(clazz)) return true;
            try {
                if (!User.class.isAssignableFrom(clazz)) break block7;
                return true;
                catch (MappingException mappingException) {
                    throw EntityFinderImpl.a((Exception)((Object)mappingException));
                }
            }
            catch (MappingException mappingException) {
                throw EntityFinderImpl.a((Exception)((Object)mappingException));
            }
        }
        if (classMetadata == null) return false;
        try {
            String[] stringArray = classMetadata.getPropertyNames();
            int n2 = stringArray.length;
            for (int i2 = 0; i2 < n2; ++i2) {
                String[] stringArray2 = k;
                String string = stringArray[i2];
                if (!stringArray2[30].equals(string)) continue;
                return true;
            }
            return false;
        }
        catch (MappingException mappingException) {
            a.warning(k[14] + clazz.getClass().getName());
        }
        return false;
    }

    public void provideNeededEntities(@NotNull UsesEntitiesAtDesignTime usesEntitiesAtDesignTime, @Nullable Functions.BinaryVoid<EntityHeader, FindException> binaryVoid) throws FindException {
        try {
            if (usesEntitiesAtDesignTime == null) {
                EntityFinderImpl.a(6);
            }
        }
        catch (FindException findException) {
            throw EntityFinderImpl.a((Exception)((Object)findException));
        }
        PolicyUtil.provideNeededEntities((UsesEntitiesAtDesignTime)usesEntitiesAtDesignTime, (HeaderBasedEntityFinder)this, binaryVoid);
    }

    /*
     * Unable to fully structure code
     */
    static {
        block10: {
            block9: {
                var5 = new String[42];
                var3_1 = 0;
                var2_2 = "`l`61\u001bqbvv;\b(z`~a-\u0015qkk),-qO|a; -Qomm+,,g\u001fBue,6iytjp\u007f',4`9^0+,ucua\u001a+=}u`*\u001dr|p\u001c0:`ntO:<\u001fumla\f1&fdTe1$.qs\u0013&9m,e'{u9w*59{sma;k\u0017r|v) ;Yn}q3 \u000f}m|I>+(sdk&Dkv07ixnvo6+.4ti$/7 b`ma\u007f.,m!qa>!,fr#$\u0004gpj;\u0005bue%?\u0015Bvq3!'3u9b6+-4dwp6104\u0014Uqa\u007f '`hm}\u007f10dd9k9en\"bvip)~`dzlp6,fw|vp\u0000'`hm}\u0019,'pdkM25%\fQkm2$;m!ra&e\u001aDkv07ixnvo6+.4ti$4 04gvvee\"qkk/ ;`x9#1$$q&9`0 :4ovp\u007f 1}rm$6+i\u0015r|p\u001e0-}uKa<*;pLxj>\",f\ndwp610Ar|v\u0018!xj;e:qblv6104{vj:e.{h}$\u0004gxo:!Dkv07ixnvo6+.4`l`61ifdzk-!i`xiaee\u001egpj;\u00070Wmxw,\u0004'pR|g*7 `xCk1 \u000e{h}\u0007174qug$\u0016Bvq3!'3u9b6+-4dwp61 qr\u0016Bvq3!'3u9b6+-4dwp61 qr\u0004u`t:\u001ablw+*$_d`R>)<qRmk- \u0004uoxc:7*Dwp610@xia\u007f(<gu9f:e:aqik-1igdzq-,=m!ck1 ::\u001ar|p\f ;bdkI0!<xd_m3 \u0004uoxc:7\fQkm2$;m!ra&e'Twe=),4uv$- =fh|r:e,zupp6 :4vpp7e*x`jw\u007f\u0004oxi:#gpj;\u00070Qomm+<\u001dmq|E1!\u001aqblv610Nnwa\u0018* p/!pw\u007f+&`!x$)$%}e9o:<r4tjm1\"iGukm1\"ib`uq:e zrma>!\u0006i|e; ;\u001eBvq3!iznm$3*(p!Pj+ ;r`za\u000b$.g;9\u001cdwp6104bue,6iw`w$1*=4c|$10%x$Dkv07ixnvo6+.4ti$4 04rmk- i|dx`:7:.!R!pw\u007f+&`!x$)$%}e9W\f\u0002\u0016_D@[\u001a\u000b\u001dFX9o:<g4O|a;6i`n9f:e z!ml:e/{ste+\u007fi(j|},1&fdP`a\u007fuumpe,{EDwp610\\dx`:7i}r9e1e\u0000pdwp610\\dx`:7e4clp\u007f10dd9m,e'qhml:7iAR\\V\u007f+&f!^V\u0010\u0010\u0019>@kc*(,zu9b07iTOvp\u00110%x!ie-$$qu|v\u007fblg&9k9elg/<w\u007f(<gu9j01ivd9j*)%";
                var4_3 = "`l`61\u001bqbvv;\b(z`~a-\u0015qkk),-qO|a; -Qomm+,,g\u001fBue,6iytjp\u007f',4`9^0+,ucua\u001a+=}u`*\u001dr|p\u001c0:`ntO:<\u001fumla\f1&fdTe1$.qs\u0013&9m,e'{u9w*59{sma;k\u0017r|v) ;Yn}q3 \u000f}m|I>+(sdk&Dkv07ixnvo6+.4ti$/7 b`ma\u007f.,m!qa>!,fr#$\u0004gpj;\u0005bue%?\u0015Bvq3!'3u9b6+-4dwp6104\u0014Uqa\u007f '`hm}\u007f10dd9k9en\"bvip)~`dzlp6,fw|vp\u0000'`hm}\u0019,'pdkM25%\fQkm2$;m!ra&e\u001aDkv07ixnvo6+.4ti$4 04gvvee\"qkk/ ;`x9#1$$q&9`0 :4ovp\u007f 1}rm$6+i\u0015r|p\u001e0-}uKa<*;pLxj>\",f\ndwp610Ar|v\u0018!xj;e:qblv6104{vj:e.{h}$\u0004gxo:!Dkv07ixnvo6+.4`l`61ifdzk-!i`xiaee\u001egpj;\u00070Wmxw,\u0004'pR|g*7 `xCk1 \u000e{h}\u0007174qug$\u0016Bvq3!'3u9b6+-4dwp61 qr\u0016Bvq3!'3u9b6+-4dwp61 qr\u0004u`t:\u001ablw+*$_d`R>)<qRmk- \u0004uoxc:7*Dwp610@xia\u007f(<gu9f:e:aqik-1igdzq-,=m!ck1 ::\u001ar|p\f ;bdkI0!<xd_m3 \u0004uoxc:7\fQkm2$;m!ra&e'Twe=),4uv$- =fh|r:e,zupp6 :4vpp7e*x`jw\u007f\u0004oxi:#gpj;\u00070Qomm+<\u001dmq|E1!\u001aqblv610Nnwa\u0018* p/!pw\u007f+&`!x$)$%}e9o:<r4tjm1\"iGukm1\"ib`uq:e zrma>!\u0006i|e; ;\u001eBvq3!iznm$3*(p!Pj+ ;r`za\u000b$.g;9\u001cdwp6104bue,6iw`w$1*=4c|$10%x$Dkv07ixnvo6+.4ti$4 04rmk- i|dx`:7:.!R!pw\u007f+&`!x$)$%}e9W\f\u0002\u0016_D@[\u001a\u000b\u001dFX9o:<g4O|a;6i`n9f:e z!ml:e/{ste+\u007fi(j|},1&fdP`a\u007fuumpe,{EDwp610\\dx`:7i}r9e1e\u0000pdwp610\\dx`:7e4clp\u007f10dd9m,e'qhml:7iAR\\V\u007f+&f!^V\u0010\u0010\u0019>@kc*(,zu9b07iTOvp\u00110%x!ie-$$qu|v\u007fblg&9k9elg/<w\u007f(<gu9j01ivd9j*)%".length();
                var1_4 = 18;
                var0_5 = -1;
lbl7:
                // 2 sources

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

                while (true) {
                    var5[var3_1++] = EntityFinderImpl.a(v0, EntityFinderImpl.a(v2));
                    if ((var0_5 += var1_4) < var4_3) {
                        var1_4 = var2_2.charAt(var0_5);
                        ** continue;
                    }
                    var2_2 = "\u0012\r\u001aO\u001e7\u0003\u0004FT\u001c\u000f\u001b\u0018QF_]\u0005T%\u001f^UN\u0007\u0015\u000f\u0014~Q[\u0012NL";
                    var4_3 = "\u0012\r\u001aO\u001e7\u0003\u0004FT\u001c\u000f\u001b\u0018QF_]\u0005T%\u001f^UN\u0007\u0015\u000f\u0014~Q[\u0012NL".length();
                    var1_4 = 4;
                    var0_5 = -1;
lbl22:
                    // 2 sources

                    while (true) {
                        v0 = 40;
                        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++] = EntityFinderImpl.a(v0, EntityFinderImpl.a(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;
            }
        }
        EntityFinderImpl.k = var5;
        EntityFinderImpl.a = Logger.getLogger(EntityFinderImpl.class.getName());
    }

    /*
     * Exception decompiling
     */
    private static /* synthetic */ void a(int var0) {
        /*
         * This method has failed to decompile.  When submitting a bug report, please provide this stack trace, and (if you hold appropriate legal rights) the relevant class file.
         * 
         * org.benf.cfr.reader.util.ConfusedCFRException: Tried to end blocks [0[TRYBLOCK]], but top level block is 2[SWITCH]
         *     at org.benf.cfr.reader.bytecode.analysis.opgraph.Op04StructuredStatement.processEndingBlocks(Op04StructuredStatement.java:435)
         *     at org.benf.cfr.reader.bytecode.analysis.opgraph.Op04StructuredStatement.buildNestedBlocks(Op04StructuredStatement.java:484)
         *     at org.benf.cfr.reader.bytecode.analysis.opgraph.Op03SimpleStatement.createInitialStructuredBlock(Op03SimpleStatement.java:736)
         *     at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysisInner(CodeAnalyser.java:850)
         *     at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysisOrWrapFail(CodeAnalyser.java:278)
         *     at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysis(CodeAnalyser.java:201)
         *     at org.benf.cfr.reader.entities.attributes.AttributeCode.analyse(AttributeCode.java:94)
         *     at org.benf.cfr.reader.entities.Method.analyse(Method.java:531)
         *     at org.benf.cfr.reader.entities.ClassFile.analyseMid(ClassFile.java:1050)
         *     at org.benf.cfr.reader.entities.ClassFile.analyseTop(ClassFile.java:942)
         *     at org.benf.cfr.reader.Driver.doJarVersionTypes(Driver.java:257)
         *     at org.benf.cfr.reader.Driver.doJar(Driver.java:139)
         *     at org.benf.cfr.reader.CfrDriverImpl.analyse(CfrDriverImpl.java:76)
         *     at org.benf.cfr.reader.Main.main(Main.java:54)
         */
        throw new IllegalStateException("Decompilation failed");
    }

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

    private static char[] a(String string) {
        char[] cArray = string.toCharArray();
        if (cArray.length < 2) {
            cArray = cArray;
            cArray[0] = (char)(cArray[0] ^ 0x49);
        }
        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 -> 92;
                    case 1 -> 68;
                    case 2 -> 89;
                    case 3 -> 2;
                    case 4 -> 24;
                    case 5 -> 20;
                    default -> 73;
                })));
                ++n3;
                n4 = n4;
            } while (n4 > n3);
        }
        return new String(cArray2).intern();
    }
}

