/*
 * Decompiled with CFR 0.152.
 * 
 * Could not load the following classes:
 *  com.l7tech.gateway.common.audit.Audit
 *  com.l7tech.gateway.common.audit.AuditDetailMessage
 *  com.l7tech.gateway.common.audit.AuditFactory
 *  com.l7tech.gateway.common.audit.AuditHaver
 *  com.l7tech.gateway.common.audit.LoggingAudit
 *  com.l7tech.policy.assertion.Assertion
 *  com.l7tech.policy.assertion.UsesVariables
 *  com.l7tech.util.CollectionUtils
 *  com.l7tech.util.Functions$UnaryVoid
 *  com.l7tech.util.Option
 *  jakarta.inject.Inject
 *  org.jetbrains.annotations.NotNull
 *  org.jetbrains.annotations.Nullable
 */
package com.l7tech.server.policy.assertion;

import com.l7tech.gateway.common.audit.Audit;
import com.l7tech.gateway.common.audit.AuditDetailMessage;
import com.l7tech.gateway.common.audit.AuditFactory;
import com.l7tech.gateway.common.audit.AuditHaver;
import com.l7tech.gateway.common.audit.LoggingAudit;
import com.l7tech.policy.assertion.Assertion;
import com.l7tech.policy.assertion.UsesVariables;
import com.l7tech.server.message.PolicyEnforcementContext;
import com.l7tech.server.policy.assertion.ServerAssertion;
import com.l7tech.server.policy.assertion.d;
import com.l7tech.server.policy.assertion.e;
import com.l7tech.server.policy.assertion.f;
import com.l7tech.server.policy.variable.ExpandVariables;
import com.l7tech.server.util.Injector;
import com.l7tech.util.CollectionUtils;
import com.l7tech.util.Functions;
import com.l7tech.util.Option;
import jakarta.inject.Inject;
import java.util.Collections;
import java.util.Map;
import java.util.concurrent.atomic.AtomicReference;
import java.util.logging.Logger;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

/*
 * Exception performing whole class analysis ignored.
 */
public abstract class AbstractServerAssertion<AT extends Assertion>
implements ServerAssertion<AT> {
    @NotNull
    protected final Logger logger;
    @NotNull
    protected final AT assertion;
    @Inject
    private AuditFactory auditFactory;
    private Injector a;
    private final AtomicReference<Audit> b;
    private final Option<String[]> c;
    private static final String[] K;

    public AbstractServerAssertion(@NotNull AT AT) {
        if (AT == null) {
            AbstractServerAssertion.a(0);
        }
        this(AT, null);
    }

    public AbstractServerAssertion(@NotNull AT AT, @Nullable AuditFactory auditFactory) {
        if (AT == null) {
            AbstractServerAssertion.a(1);
        }
        this.b = new AtomicReference();
        this.assertion = AT;
        this.auditFactory = auditFactory;
        this.logger = Logger.getLogger(this.getClass().getName());
        if (AT instanceof UsesVariables) {
            UsesVariables usesVariables = (UsesVariables)AT;
            this.c = Option.some((Object)usesVariables.getVariablesUsed());
        } else {
            this.c = Option.none();
        }
    }

    @Override
    @NotNull
    public AT getAssertion() {
        AT AT;
        try {
            AT = this.assertion;
            if (AT == null) {
                AbstractServerAssertion.a(2);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw AbstractServerAssertion.a(illegalArgumentException);
        }
        return AT;
    }

    @Override
    public void close() {
    }

    @NotNull
    protected final Audit getAudit() {
        Audit audit;
        try {
            audit = this.a(true);
            if (audit == null) {
                AbstractServerAssertion.a(3);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw AbstractServerAssertion.a(illegalArgumentException);
        }
        return audit;
    }

    @NotNull
    protected final AuditHaver getAuditHaver() {
        return new d(this);
    }

    protected final void logAndAudit(@NotNull AuditDetailMessage auditDetailMessage, @Nullable String[] stringArray, @Nullable Throwable throwable) {
        try {
            if (auditDetailMessage == null) {
                AbstractServerAssertion.a(4);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw AbstractServerAssertion.a(illegalArgumentException);
        }
        this.getAudit().logAndAudit(auditDetailMessage, stringArray, throwable);
    }

    protected final void logAndAudit(@NotNull AuditDetailMessage auditDetailMessage, @Nullable Throwable throwable) {
        try {
            if (auditDetailMessage == null) {
                AbstractServerAssertion.a(5);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw AbstractServerAssertion.a(illegalArgumentException);
        }
        this.getAudit().logAndAudit(auditDetailMessage, new String[0], throwable);
    }

    protected final void logAndAudit(@NotNull AuditDetailMessage auditDetailMessage, String ... stringArray) {
        try {
            if (auditDetailMessage == null) {
                AbstractServerAssertion.a(6);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw AbstractServerAssertion.a(illegalArgumentException);
        }
        try {
            if (stringArray == null) {
                AbstractServerAssertion.a(7);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw AbstractServerAssertion.a(illegalArgumentException);
        }
        this.getAudit().logAndAudit(auditDetailMessage, stringArray);
    }

    protected final void logAndAudit(@NotNull AuditDetailMessage auditDetailMessage) {
        try {
            if (auditDetailMessage == null) {
                AbstractServerAssertion.a(8);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw AbstractServerAssertion.a(illegalArgumentException);
        }
        this.getAudit().logAndAudit(auditDetailMessage);
    }

    @Inject
    protected final void setInjector(Injector injector) {
        try {
            if (this.a == null) {
                this.a = injector;
                this.injectDependencies();
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw AbstractServerAssertion.a(illegalArgumentException);
        }
    }

    protected final void inject(@NotNull Object object) {
        try {
            if (object == null) {
                AbstractServerAssertion.a(9);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw AbstractServerAssertion.a(illegalArgumentException);
        }
        this.a.inject(object);
    }

    protected final void injectAll(@NotNull Iterable<?> iterable) {
        try {
            if (iterable == null) {
                AbstractServerAssertion.a(10);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw AbstractServerAssertion.a(illegalArgumentException);
        }
        CollectionUtils.foreach(iterable, (boolean)false, (Functions.UnaryVoid)new e(this));
    }

    protected void injectDependencies() {
    }

    @NotNull
    protected final VariableExpander getVariableExpander(@NotNull PolicyEnforcementContext policyEnforcementContext) {
        try {
            if (policyEnforcementContext == null) {
                AbstractServerAssertion.a(11);
            }
        }
        catch (IllegalArgumentException illegalArgumentException) {
            throw AbstractServerAssertion.a(illegalArgumentException);
        }
        Audit audit = this.getAudit();
        Map<String, Object> map = this.c.isSome() ? policyEnforcementContext.getVariableMap((String[])this.c.some(), audit) : Collections.emptyMap();
        return new VariableExpander(audit, map);
    }

    private Audit a(boolean bl2) {
        Audit audit;
        block4: {
            block5: {
                block6: {
                    audit = this.b.get();
                    try {
                        try {
                            if (audit != null) break block4;
                            if (this.auditFactory != null) break block5;
                        }
                        catch (IllegalArgumentException illegalArgumentException) {
                            throw AbstractServerAssertion.a(illegalArgumentException);
                        }
                        if (!bl2) break block6;
                    }
                    catch (IllegalArgumentException illegalArgumentException) {
                        throw AbstractServerAssertion.a(illegalArgumentException);
                    }
                    audit = new f(this);
                    break block4;
                }
                return new LoggingAudit(this.logger);
            }
            audit = this.auditFactory.newInstance((Object)this, this.logger);
            this.b.compareAndSet(null, audit);
        }
        return audit;
    }

    /*
     * 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 6[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 IllegalArgumentException a(IllegalArgumentException illegalArgumentException) {
        return illegalArgumentException;
    }

    /*
     * Unable to fully structure code
     */
    static {
        block10: {
            block9: {
                var5 = new String[17];
                var3_1 = 0;
                var2_2 = "1tU\u0007(f@{\\\u001dY\b;bF]L\rC(*\u001cI]hw\u001cF0'_yM\u0001E8'\u0017o\u0017LY|jGoMID3s\u0012n\\\u001d_.i\u0012rL\u0005F\t5iXyZ\u001dk0k\u0013;bFJX\u001bC=e^y|\u0011Z=iVyK\u0006(f@{\\\u001d:?h_3U^^9dZ3J\fX*b@3I\u0006F5dK3X\u001aY9uFuV\u0007\u0005\u001deAhK\bI(TWnO\fX\u001dtAyK\u001dC3i:?h_3U^^9dZ3J\fX*b@3I\u0006F5dK3X\u001aY9uFuV\u0007\u0005\u001deAhK\bI(TWnO\fX\u001dtAyK\u001dC3i\u0006,f@}T\u001a\u00065iXyZ\u001d\u000b0hU]W\rk)c[h\f;bF]J\u001aO.s[sW\u0006`n\\uMW\t=tAyK\u001dC3i";
                var4_3 = "1tU\u0007(f@{\\\u001dY\b;bF]L\rC(*\u001cI]hw\u001cF0'_yM\u0001E8'\u0017o\u0017LY|jGoMID3s\u0012n\\\u001d_.i\u0012rL\u0005F\t5iXyZ\u001dk0k\u0013;bFJX\u001bC=e^y|\u0011Z=iVyK\u0006(f@{\\\u001d:?h_3U^^9dZ3J\fX*b@3I\u0006F5dK3X\u001aY9uFuV\u0007\u0005\u001deAhK\bI(TWnO\fX\u001dtAyK\u001dC3i:?h_3U^^9dZ3J\fX*b@3I\u0006F5dK3X\u001aY9uFuV\u0007\u0005\u001deAhK\bI(TWnO\fX\u001dtAyK\u001dC3i\u0006,f@}T\u001a\u00065iXyZ\u001d\u000b0hU]W\rk)c[h\f;bF]J\u001aO.s[sW\u0006`n\\uMW\t=tAyK\u001dC3i".length();
                var1_4 = 3;
                var0_5 = -1;
lbl7:
                // 2 sources

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

                while (true) {
                    var5[var3_1++] = AbstractServerAssertion.a(v0, AbstractServerAssertion.e(v2));
                    if ((var0_5 += var1_4) < var4_3) {
                        var1_4 = var2_2.charAt(var0_5);
                        ** continue;
                    }
                    var2_2 = "\b`@|A\u0019Q=2Af^\\\u007f\u0007}SGY\u0010SibF{M\u0011Z=wU)\u000bYLn2Ho\fYLg7T)A\tL=2IfX\\],2I|@\u0010\u0007*}I}I\u0004K";
                    var4_3 = "\b`@|A\u0019Q=2Af^\\\u007f\u0007}SGY\u0010SibF{M\u0011Z=wU)\u000bYLn2Ho\fYLg7T)A\tL=2IfX\\],2I|@\u0010\u0007*}I}I\u0004K".length();
                    var1_4 = 62;
                    var0_5 = -1;
lbl22:
                    // 2 sources

                    while (true) {
                        v0 = 66;
                        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++] = AbstractServerAssertion.a(v0, AbstractServerAssertion.e(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;
            }
        }
        AbstractServerAssertion.K = var5;
    }

    private static char[] e(String string) {
        char[] cArray = string.toCharArray();
        if (cArray.length < 2) {
            cArray = cArray;
            cArray[0] = (char)(cArray[0] ^ 0x7D);
        }
        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 -> 11;
                    case 1 -> 80;
                    case 2 -> 101;
                    case 3 -> 75;
                    case 4 -> 110;
                    case 5 -> 62;
                    default -> 125;
                })));
                ++n3;
                n4 = n4;
            } while (n4 > n3);
        }
        return new String(cArray2).intern();
    }

    /*
     * Exception performing whole class analysis ignored.
     */
    protected static final class VariableExpander {
        @NotNull
        private final Audit a;
        @NotNull
        private final Map<String, Object> b;
        private static final String[] c;

        private VariableExpander(@NotNull Audit audit, @NotNull Map<String, Object> map) {
            if (audit == null) {
                VariableExpander.a(0);
            }
            if (map == null) {
                VariableExpander.a(1);
            }
            this.a = audit;
            this.b = map;
        }

        @NotNull
        public String expandVariables(String string) {
            String string2;
            String string3;
            try {
                string3 = string == null ? "" : ExpandVariables.process(string, this.b, this.a);
            }
            catch (IllegalArgumentException illegalArgumentException) {
                throw VariableExpander.a(illegalArgumentException);
            }
            try {
                string2 = string3;
                if (string3 == null) {
                    VariableExpander.a(2);
                }
            }
            catch (IllegalArgumentException illegalArgumentException) {
                throw VariableExpander.a(illegalArgumentException);
            }
            return string2;
        }

        public String expandVariablesNull(String string) {
            String string2;
            try {
                string2 = string == null ? null : this.expandVariables(string);
            }
            catch (IllegalArgumentException illegalArgumentException) {
                throw VariableExpander.a(illegalArgumentException);
            }
            return string2;
        }

        /*
         * 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 6[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.analyseInnerClassesPass1(ClassFile.java:923)
             *     at org.benf.cfr.reader.entities.ClassFile.analyseMid(ClassFile.java:1035)
             *     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 IllegalArgumentException a(IllegalArgumentException illegalArgumentException) {
            return illegalArgumentException;
        }

        /*
         * Unable to fully structure code
         */
        static {
            block10: {
                block9: {
                    var5 = new String[8];
                    var3_1 = 0;
                    var2_2 = "\u0001G8G|\u0014>4\u00159]cQ\u0010\u000eZ+|d\u001d<`E>@p\u001c54P-\u00126T#g\u00150T1T#n\u0010,\u0012|\u0004#4\u00151]eQ2%\u00151G}\u001d\u0006|\\1[eO\u000f%M/S\u007f\u0015\u0006!G6Ss\u001d53*\u0000{0F_\u0004<,\u00152We\u0019?$\u0015zA?T#`X*AeQ>/A\u007f@t\u0005%2[\u007f\\d\u001d<\t6T-[p\u0013<%FK#Z2\u001d}F$%V7\u001db\u0014\"6P-\u001da\u001e<)V&\u001dp\u0002#%G+[~\u001f\u007f\u0001W,Fc\u001034f:@g\u0014\"\u0001F,Wc\u00059/[{dp\u00039!W3WT\t ![;Wc";
                    var4_3 = "\u0001G8G|\u0014>4\u00159]cQ\u0010\u000eZ+|d\u001d<`E>@p\u001c54P-\u00126T#g\u00150T1T#n\u0010,\u0012|\u0004#4\u00151]eQ2%\u00151G}\u001d\u0006|\\1[eO\u000f%M/S\u007f\u0015\u0006!G6Ss\u001d53*\u0000{0F_\u0004<,\u00152We\u0019?$\u0015zA?T#`X*AeQ>/A\u007f@t\u0005%2[\u007f\\d\u001d<\t6T-[p\u0013<%FK#Z2\u001d}F$%V7\u001db\u0014\"6P-\u001da\u001e<)V&\u001dp\u0002#%G+[~\u001f\u007f\u0001W,Fc\u001034f:@g\u0014\"\u0001F,Wc\u00059/[{dp\u00039!W3WT\t ![;Wc".length();
                    var1_4 = 62;
                    var0_5 = -1;
lbl7:
                    // 2 sources

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

                    while (true) {
                        var5[var3_1++] = VariableExpander.a(v0, VariableExpander.a(v2));
                        if ((var0_5 += var1_4) < var4_3) {
                            var1_4 = var2_2.charAt(var0_5);
                            ** continue;
                        }
                        var2_2 = "\u0014m\u0005*Jq\u0013\u0012a\u0000*U#\u0015\u0001g\u001a*V)\u000b\u001ea\u0011*G5\u0014\u0012p\u001clI(H6`\u001bqT'\u0004\u0003Q\rwP#\u00156q\u001b`T2\u000e\u0018lLSG4\u000e\u0016`\u0004`c>\u0017\u0016l\f`T\u0005\u0016w\flR";
                        var4_3 = "\u0014m\u0005*Jq\u0013\u0012a\u0000*U#\u0015\u0001g\u001a*V)\u000b\u001ea\u0011*G5\u0014\u0012p\u001clI(H6`\u001bqT'\u0004\u0003Q\rwP#\u00156q\u001b`T2\u000e\u0018lLSG4\u000e\u0016`\u0004`c>\u0017\u0016l\f`T\u0005\u0016w\flR".length();
                        var1_4 = 75;
                        var0_5 = -1;
lbl22:
                        // 2 sources

                        while (true) {
                            v0 = 51;
                            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++] = VariableExpander.a(v0, VariableExpander.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;
                }
            }
            VariableExpander.c = var5;
        }

        private static char[] a(String string) {
            char[] cArray = string.toCharArray();
            if (cArray.length < 2) {
                cArray = cArray;
                cArray[0] = (char)(cArray[0] ^ 0x54);
            }
            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 -> 68;
                        case 1 -> 49;
                        case 2 -> 91;
                        case 3 -> 54;
                        case 4 -> 21;
                        case 5 -> 117;
                        default -> 84;
                    })));
                    ++n3;
                    n4 = n4;
                } while (n4 > n3);
            }
            return new String(cArray2).intern();
        }
    }
}

