/*
 * Decompiled with CFR 0.152.
 * 
 * Could not load the following classes:
 *  com.l7tech.common.mime.ByteArrayStashManager
 *  com.l7tech.common.mime.ContentTypeHeader
 *  com.l7tech.common.mime.MimeBody
 *  com.l7tech.common.mime.MimeHeader
 *  com.l7tech.common.mime.NoSuchPartException
 *  com.l7tech.common.mime.PartInfo
 *  com.l7tech.common.mime.PartIterator
 *  com.l7tech.common.mime.StashManager
 *  com.l7tech.message.MimeKnob
 *  com.l7tech.policy.assertion.AssertionStatus
 *  com.l7tech.policy.assertion.HtmlFormDataAssertion
 *  com.l7tech.policy.assertion.PolicyAssertionException
 *  com.l7tech.util.IOUtils
 *  jakarta.mail.internet.ContentDisposition
 *  jakarta.mail.internet.ParseException
 */
package com.l7tech.server.policy.assertion;

import com.l7tech.common.mime.ByteArrayStashManager;
import com.l7tech.common.mime.ContentTypeHeader;
import com.l7tech.common.mime.MimeBody;
import com.l7tech.common.mime.MimeHeader;
import com.l7tech.common.mime.NoSuchPartException;
import com.l7tech.common.mime.PartInfo;
import com.l7tech.common.mime.PartIterator;
import com.l7tech.common.mime.StashManager;
import com.l7tech.message.MimeKnob;
import com.l7tech.policy.assertion.AssertionStatus;
import com.l7tech.policy.assertion.HtmlFormDataAssertion;
import com.l7tech.policy.assertion.PolicyAssertionException;
import com.l7tech.server.message.PolicyEnforcementContext;
import com.l7tech.server.policy.assertion.AbstractServerAssertion;
import com.l7tech.server.policy.assertion.r;
import com.l7tech.server.policy.assertion.s;
import com.l7tech.util.IOUtils;
import jakarta.mail.internet.ContentDisposition;
import jakarta.mail.internet.ParseException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Map;
import java.util.NoSuchElementException;
import java.util.logging.Level;
import java.util.logging.Logger;

public class ServerHtmlFormDataAssertion
extends AbstractServerAssertion<HtmlFormDataAssertion> {
    private static final Logger d;
    private static final String[] e;

    public ServerHtmlFormDataAssertion(HtmlFormDataAssertion htmlFormDataAssertion) {
        super(htmlFormDataAssertion);
    }

    /*
     * Exception decompiling
     */
    @Override
    public AssertionStatus checkRequest(PolicyEnforcementContext var1_1) throws IOException, PolicyAssertionException {
        /*
         * 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 [51[CATCHBLOCK]], but top level block is 19[TRYBLOCK]
         *     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:1055)
         *     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 void a(Map<String, String[]> map, Map<String, r> map2, boolean bl2) {
        boolean bl3;
        try {
            bl3 = !bl2;
        }
        catch (NumberFormatException numberFormatException) {
            throw ServerHtmlFormDataAssertion.a(numberFormatException);
        }
        boolean bl4 = bl3;
        for (String string : map.keySet()) {
            r r2 = map2.get(string);
            if (r2 == null) {
                r2 = new r(string);
                map2.put(string, r2);
            }
            for (String string2 : map.get(string)) {
                r2.fieldValues.add(new s(string2, false));
            }
            r2.inUri |= bl2;
            r2.inBody |= bl4;
        }
    }

    private void a(Map<String, r> map, MimeKnob mimeKnob) throws IOException {
        try {
            PartIterator partIterator = mimeKnob.getParts();
            int n2 = 0;
            while (partIterator.hasNext()) {
                block24: {
                    Object object;
                    String string;
                    boolean bl2;
                    r r2;
                    ContentDisposition contentDisposition;
                    String[] stringArray;
                    PartInfo partInfo;
                    block23: {
                        try {
                            partInfo = partIterator.next();
                        }
                        catch (NoSuchElementException noSuchElementException) {
                            stringArray = e;
                            d.info(stringArray[6]);
                            break;
                        }
                        stringArray = e;
                        MimeHeader mimeHeader = partInfo.getHeader(stringArray[8]);
                        try {
                            if (mimeHeader == null) {
                                throw new IOException(stringArray[25] + n2 + ")");
                            }
                        }
                        catch (NoSuchElementException noSuchElementException) {
                            throw ServerHtmlFormDataAssertion.a(noSuchElementException);
                        }
                        contentDisposition = new ContentDisposition(mimeHeader.getFullValue());
                        String string2 = contentDisposition.getDisposition();
                        try {
                            if (!e[18].equals(string2)) {
                                throw new IOException(e[29] + n2 + e[22] + mimeHeader.getFullValue() + ")");
                            }
                        }
                        catch (NoSuchElementException noSuchElementException) {
                            throw ServerHtmlFormDataAssertion.a(noSuchElementException);
                        }
                        stringArray = e;
                        String string3 = contentDisposition.getParameter(stringArray[9]);
                        try {
                            if (string3 == null) {
                                throw new IOException(stringArray[24] + n2 + stringArray[22] + mimeHeader.getFullValue() + ")");
                            }
                        }
                        catch (NoSuchElementException noSuchElementException) {
                            throw ServerHtmlFormDataAssertion.a(noSuchElementException);
                        }
                        r2 = map.get(string3);
                        if (r2 == null) {
                            r2 = new r(string3);
                            map.put(string3, r2);
                        }
                        r2.inBody = true;
                        ContentTypeHeader contentTypeHeader = partInfo.getContentType();
                        try {
                            if (!contentTypeHeader.matches(e[17], e[2])) break block23;
                            this.a(r2, partInfo.getInputStream(false), contentTypeHeader);
                            break block24;
                        }
                        catch (NoSuchElementException noSuchElementException) {
                            throw ServerHtmlFormDataAssertion.a(noSuchElementException);
                        }
                    }
                    stringArray = e;
                    String string4 = contentDisposition.getParameter(stringArray[12]);
                    try {
                        boolean bl3 = bl2 = string4 != null;
                    }
                    catch (NoSuchElementException noSuchElementException) {
                        throw ServerHtmlFormDataAssertion.a(noSuchElementException);
                    }
                    if (bl2) {
                        string = string4;
                    } else {
                        object = IOUtils.slurpStream((InputStream)partInfo.getInputStream(false));
                        string = new String((byte[])object, partInfo.getContentType().getEncoding());
                    }
                    object = new s(string, bl2);
                    r2.fieldValues.add((s)object);
                }
                ++n2;
            }
        }
        catch (NoSuchPartException noSuchPartException) {
            String[] stringArray = e;
            throw new IOException(stringArray[32] + noSuchPartException.toString());
        }
        catch (ParseException parseException) {
            throw new IOException(e[21] + parseException.toString());
        }
    }

    /*
     * Loose catch block
     */
    private void a(r r2, InputStream inputStream, ContentTypeHeader contentTypeHeader) throws IOException {
        try {
            MimeBody mimeBody = new MimeBody((StashManager)new ByteArrayStashManager(), contentTypeHeader, inputStream, 0L);
            PartIterator partIterator = mimeBody.iterator();
            int n2 = 0;
            while (partIterator.hasNext()) {
                block17: {
                    String string;
                    block18: {
                        ContentDisposition contentDisposition;
                        MimeHeader mimeHeader;
                        String[] stringArray;
                        block19: {
                            PartInfo partInfo;
                            try {
                                partInfo = partIterator.next();
                            }
                            catch (NoSuchElementException noSuchElementException) {
                                stringArray = e;
                                d.info(stringArray[16]);
                                break;
                            }
                            stringArray = e;
                            mimeHeader = partInfo.getHeader(stringArray[33]);
                            try {
                                if (mimeHeader == null) {
                                    throw new IOException(stringArray[10] + n2 + ")");
                                }
                            }
                            catch (NoSuchElementException noSuchElementException) {
                                throw ServerHtmlFormDataAssertion.a(noSuchElementException);
                            }
                            contentDisposition = new ContentDisposition(mimeHeader.getFullValue());
                            String string2 = contentDisposition.getDisposition();
                            if (e[11].equals(string2)) break block19;
                            try {
                                block20: {
                                    if (!d.isLoggable(Level.FINE)) break block17;
                                    break block20;
                                    catch (NoSuchElementException noSuchElementException) {
                                        throw ServerHtmlFormDataAssertion.a(noSuchElementException);
                                    }
                                }
                                d.fine(e[23] + n2 + e[27] + mimeHeader.getFullValue() + ")");
                                break block17;
                            }
                            catch (NoSuchElementException noSuchElementException) {
                                throw ServerHtmlFormDataAssertion.a(noSuchElementException);
                            }
                        }
                        stringArray = e;
                        string = contentDisposition.getParameter(stringArray[13]);
                        if (string != null) break block18;
                        try {
                            block21: {
                                if (!d.isLoggable(Level.FINE)) break block17;
                                break block21;
                                catch (NoSuchElementException noSuchElementException) {
                                    throw ServerHtmlFormDataAssertion.a(noSuchElementException);
                                }
                            }
                            d.fine(e[26] + n2 + e[22] + mimeHeader.getFullValue() + ")");
                            break block17;
                        }
                        catch (NoSuchElementException noSuchElementException) {
                            throw ServerHtmlFormDataAssertion.a(noSuchElementException);
                        }
                    }
                    r2.fieldValues.add(new s(string, true));
                }
                ++n2;
            }
        }
        catch (ParseException parseException) {
            throw new IOException(e[20] + parseException.toString());
        }
    }

    /*
     * Unable to fully structure code
     */
    static {
        block10: {
            block9: {
                var5 = new String[39];
                var3_1 = 0;
                var2_2 = "r\u001ez*\u0007F{7Qxe\u0005Kc1Is!Y\u0014r\u001er$\u0010F/*Gf DFc2Qa \u0000\u001a\u00053Wn \u0000\br\u001e`$\bRjc\u000b?Nf)\rDn*Wy+\tr\u001ey&\u0007R}-\u0003=\u0013Kz1\rWn,J9#\u000bUbsZw1\u0005\u0007b?G6-\u0005Qj~W{5\u0016H\u007f;Lz<DSj,S\u007f+\u0005Sj:\u001e[\f)b/<Qr<J\t3Kz1\rWn,J\u0013\u001dQx1\u0001I{sz\u007f6\u0014H|7J\u007f*\n\u00040_{ S\u0013We6\rIh~}y+\u0010Ba*\u0013R,\u0017W`-Wb,\u000bI/6[w!\u0001U/7P6$DJz2J\u007f5\u0005U{qS\u007f=\u0001C/-Kt5\u0005U{p\u001e>6\u0011E\u007f?Lbe\u0014H|7J\u007f*\n\u001a\u00048Wz \b8Wz \nFb;\b8Wz \nFb;\u001f\b[d,\u0002Nj:\u00046\r0s_~Ls4\u0011B|*\u001e{ \u0010O`:\u001e>\u0015&\u0013a2\u0013\ni1L{h\u0011Uc;Pu*\u0000Bk@\u0010[e1\u0001C/3Kz1\rWn,J9(\r_j:\u001e{$\u001d\u0007g?Hse\rJ\u007f,Qf \u0016Kv~Js7\tNa?Js!DjF\u0013{6'\u000bCvp\t3Kz1\rWn,J\t8Qd(ICn*_\t8Qd(ICn*_F\u001d_x+\u000bS/._d6\u0001\u0007L1Pb \nS\"\u001aWe5\u000bTf*Wy+DHi~_6(\u0011K{7Nw7\u0010\bb7Fs!DTz<Nw7\u0010\t/\u001d_c6\u0001\u001d/G\u001d_x+\u000bS/._d6\u0001\u0007L1Pb \nS\"\u001aWe5\u000bTf*Wy+DHi~_6(\u0011K{7Nw7\u0010\bi1L{h\u0000F{?\u001ef$\u0016S!~}w0\u0017B5~\tr\u001e~ \u0005Cj,\u0003=\u0017Yx*\u0016Na9\u001ex*\n\ni7Rse\tRc*Wf$\u0016S 3Wn \u0000\u0007|+\\f$\u0016S!~\u0016e0\u0006Wn,J65\u000bTf*Wy+Yb\u001dQx1\u0001I{sz\u007f6\u0014H|7J\u007f*\n\u0007f0\u001ewe\tRc*Wf$\u0016S 8Qd(ICn*_65\u0005U{~Wee\tN|-Wx\"DSg;\u001e4+\u0005Jj|\u001ef$\u0016Fb;Js7J\u0007'._d1DW`-Wb,\u000bI2Q\u0013We6\rIh~}y+\u0010Ba*\u0013R,\u0017W`-Wb,\u000bI/6[w!\u0001U/7P6$DJz2J\u007f5\u0005U{qXy7\t\nk?Jwe\u0014F}*\u00106m\u0014F}*\u001ef*\u0017N{7Qxx\\\u0017Yx*\u0016Na9\u001ewe\tRc*Wf$\u0016S 3Wn \u0000\u0007i7Rse\u0017Rm._d1DPf*Vy0\u0010\u0007{6[6g\u0002Nc;Pw(\u0001\u0005/._d$\tB{;L8eLTz<Nw7\u0010\u0007\u007f1M\u007f1\rHac\tr\u001e~ \u0005Cj,\u0003$\b[d,\u0002Nj:\u00046\u0003\u000bUb~X\u007f \bC/2Qu$\u0010N`0\u001e>+\u0005JjcU\u001dQx1\u0001I{sz\u007f6\u0014H|7J\u007f*\n\u0007f0\u001ewe\tRc*Wf$\u0016S 8Qd(ICn*_65\u0005U{~Wee\nH{~\u001cp*\u0016J\":_b$F\t/vNw7\u0010\u0007\u007f1M\u007f1\rHac\u000b?Nf)\rDn*Wy+\fr\u001e{,\nhl=Kd6Y!\u001d_x+\u000bS/,[w!DJz2J\u007f5\u0005U{qXy7\t\nk?Jw\u007fD\u0013\u001dQx1\u0001I{sz\u007f6\u0014H|7J\u007f*\n%\b[d,\u0002Nj:\u00046\u0003\u000bUb~X\u007f \bC/:_b$DSv.[6m\nFb;\u0003.\u0017Pb \u0016In2\u001eS7\u0016H}d\u001e[,\u0017Tf0Y6-\u0005Ik2[de\u0002H}~Zw1\u0005\u0007{'Nse\fr\u001e{$\u001chl=Kd6Y";
                var4_3 = "r\u001ez*\u0007F{7Qxe\u0005Kc1Is!Y\u0014r\u001er$\u0010F/*Gf DFc2Qa \u0000\u001a\u00053Wn \u0000\br\u001e`$\bRjc\u000b?Nf)\rDn*Wy+\tr\u001ey&\u0007R}-\u0003=\u0013Kz1\rWn,J9#\u000bUbsZw1\u0005\u0007b?G6-\u0005Qj~W{5\u0016H\u007f;Lz<DSj,S\u007f+\u0005Sj:\u001e[\f)b/<Qr<J\t3Kz1\rWn,J\u0013\u001dQx1\u0001I{sz\u007f6\u0014H|7J\u007f*\n\u00040_{ S\u0013We6\rIh~}y+\u0010Ba*\u0013R,\u0017W`-Wb,\u000bI/6[w!\u0001U/7P6$DJz2J\u007f5\u0005U{qS\u007f=\u0001C/-Kt5\u0005U{p\u001e>6\u0011E\u007f?Lbe\u0014H|7J\u007f*\n\u001a\u00048Wz \b8Wz \nFb;\b8Wz \nFb;\u001f\b[d,\u0002Nj:\u00046\r0s_~Ls4\u0011B|*\u001e{ \u0010O`:\u001e>\u0015&\u0013a2\u0013\ni1L{h\u0011Uc;Pu*\u0000Bk@\u0010[e1\u0001C/3Kz1\rWn,J9(\r_j:\u001e{$\u001d\u0007g?Hse\rJ\u007f,Qf \u0016Kv~Js7\tNa?Js!DjF\u0013{6'\u000bCvp\t3Kz1\rWn,J\t8Qd(ICn*_\t8Qd(ICn*_F\u001d_x+\u000bS/._d6\u0001\u0007L1Pb \nS\"\u001aWe5\u000bTf*Wy+DHi~_6(\u0011K{7Nw7\u0010\bb7Fs!DTz<Nw7\u0010\t/\u001d_c6\u0001\u001d/G\u001d_x+\u000bS/._d6\u0001\u0007L1Pb \nS\"\u001aWe5\u000bTf*Wy+DHi~_6(\u0011K{7Nw7\u0010\bi1L{h\u0000F{?\u001ef$\u0016S!~}w0\u0017B5~\tr\u001e~ \u0005Cj,\u0003=\u0017Yx*\u0016Na9\u001ex*\n\ni7Rse\tRc*Wf$\u0016S 3Wn \u0000\u0007|+\\f$\u0016S!~\u0016e0\u0006Wn,J65\u000bTf*Wy+Yb\u001dQx1\u0001I{sz\u007f6\u0014H|7J\u007f*\n\u0007f0\u001ewe\tRc*Wf$\u0016S 8Qd(ICn*_65\u0005U{~Wee\tN|-Wx\"DSg;\u001e4+\u0005Jj|\u001ef$\u0016Fb;Js7J\u0007'._d1DW`-Wb,\u000bI2Q\u0013We6\rIh~}y+\u0010Ba*\u0013R,\u0017W`-Wb,\u000bI/6[w!\u0001U/7P6$DJz2J\u007f5\u0005U{qXy7\t\nk?Jwe\u0014F}*\u00106m\u0014F}*\u001ef*\u0017N{7Qxx\\\u0017Yx*\u0016Na9\u001ewe\tRc*Wf$\u0016S 3Wn \u0000\u0007i7Rse\u0017Rm._d1DPf*Vy0\u0010\u0007{6[6g\u0002Nc;Pw(\u0001\u0005/._d$\tB{;L8eLTz<Nw7\u0010\u0007\u007f1M\u007f1\rHac\tr\u001e~ \u0005Cj,\u0003$\b[d,\u0002Nj:\u00046\u0003\u000bUb~X\u007f \bC/2Qu$\u0010N`0\u001e>+\u0005JjcU\u001dQx1\u0001I{sz\u007f6\u0014H|7J\u007f*\n\u0007f0\u001ewe\tRc*Wf$\u0016S 8Qd(ICn*_65\u0005U{~Wee\nH{~\u001cp*\u0016J\":_b$F\t/vNw7\u0010\u0007\u007f1M\u007f1\rHac\u000b?Nf)\rDn*Wy+\fr\u001e{,\nhl=Kd6Y!\u001d_x+\u000bS/,[w!DJz2J\u007f5\u0005U{qXy7\t\nk?Jw\u007fD\u0013\u001dQx1\u0001I{sz\u007f6\u0014H|7J\u007f*\n%\b[d,\u0002Nj:\u00046\u0003\u000bUb~X\u007f \bC/:_b$DSv.[6m\nFb;\u0003.\u0017Pb \u0016In2\u001eS7\u0016H}d\u001e[,\u0017Tf0Y6-\u0005Ik2[de\u0002H}~Zw1\u0005\u0007{'Nse\fr\u001e{$\u001chl=Kd6Y".length();
                var1_4 = 19;
                var0_5 = -1;
lbl7:
                // 2 sources

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

                while (true) {
                    var5[var3_1++] = ServerHtmlFormDataAssertion.b(v0, ServerHtmlFormDataAssertion.a(v2));
                    if ((var0_5 += var1_4) < var4_3) {
                        var1_4 = var2_2.charAt(var0_5);
                        ** continue;
                    }
                    var2_2 = ":\u000f}.\u000f\u0016u-Pgt\rI\u007f'Li6\u001c^w'\u0014Gx0\u001eRv&\u0018*\u001f\u0017I~bDc<\u0014_3-Ai,\nIv,Ao*X\u0013}#Ood";
                    var4_3 = ":\u000f}.\u000f\u0016u-Pgt\rI\u007f'Li6\u001c^w'\u0014Gx0\u001eRv&\u0018*\u001f\u0017I~bDc<\u0014_3-Ai,\nIv,Ao*X\u0013}#Ood".length();
                    var1_4 = 21;
                    var0_5 = -1;
lbl22:
                    // 2 sources

                    while (true) {
                        v0 = 83;
                        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++] = ServerHtmlFormDataAssertion.b(v0, ServerHtmlFormDataAssertion.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;
            }
        }
        ServerHtmlFormDataAssertion.e = var5;
        ServerHtmlFormDataAssertion.d = Logger.getLogger(ServerHtmlFormDataAssertion.class.getName());
    }

    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] ^ 0x40);
        }
        return cArray;
    }

    /*
     * Handled impossible loop by duplicating code
     * Enabled aggressive block sorting
     */
    private static String b(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 -> 17;
                    case 1 -> 113;
                    case 2 -> 89;
                    case 3 -> 10;
                    case 4 -> 43;
                    case 5 -> 104;
                    default -> 64;
                })));
                ++n3;
                n4 = n4;
            } while (n4 > n3);
        }
        return new String(cArray2).intern();
    }
}

