package com.l7tech.gateway.api.impl;

import com.l7tech.gateway.api.ManagementRuntimeException;
import com.l7tech.util.CollectionUtils;
import com.l7tech.util.IOUtils;
import com.l7tech.util.ResourceUtils;
import com.l7tech.util.CollectionUtils.MapBuilder;
import jakarta.xml.bind.JAXBContext;
import jakarta.xml.bind.JAXBException;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.io.StringReader;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import org.xml.sax.SAXException;

public class ValidationUtils {
   private static Schema a;
   private static Map<String, String> b;
   private static final Map<String, String> c;
   private static final String[] d;

   public static Source[] getSchemaSources() {
      ArrayList var0 = new ArrayList();
      Map var1 = b;
      if (var1 == null) {
         try {
            Map var2 = var1 = new LinkedHashMap();
            JAXBContext var3 = MarshallingUtils.getJAXBContext();
            var3.generateSchema(new a(var2));
         } catch (IOException var5) {
            String[] var4 = d;
            throw new ManagementRuntimeException(var4[11], var5);
         } catch (JAXBException var6) {
            throw new ManagementRuntimeException(d[3], var6);
         }

         b = Collections.unmodifiableMap(var1);
      }

      for (Entry var8 : var1.entrySet()) {
         var0.add(new StreamSource(new StringReader((String)var8.getValue()), (String)var8.getKey()));
      }

      return var0.toArray(new Source[var0.size()]);
   }

   public static Schema getSchema() {
      Schema var0 = a;
      if (var0 == null) {
         String[] var3 = d;
         SchemaFactory var1 = SchemaFactory.newInstance(var3[17]);

         try {
            var0 = a = var1.newSchema(getSchemaSources());
         } catch (SAXException var4) {
            throw new ManagementRuntimeException(d[0], var4);
         }
      }

      return var0;
   }

   public static Map<String, String> getOidKeywordMap() {
      return c;
   }

   public static void main(String[] var0) throws IOException {
      try {
         if (var0.length < 1) {
            throw new IllegalArgumentException(d[7]);
         }
      } catch (IOException var18) {
         throw var18;
      }

      File var1 = new File(var0[0]);

      try {
         if (!var1.isDirectory()) {
            throw new IllegalArgumentException(d[25] + var1.getAbsolutePath());
         }
      } catch (IOException var17) {
         throw var17;
      }

      Source[] var2 = getSchemaSources();

      for (Source var6 : var2) {
         String var10000;
         label75: {
            try {
               if (d[16].equals(var6.getSystemId())) {
                  var10000 = d[10];
                  break label75;
               }
            } catch (IOException var16) {
               throw var16;
            }

            var10000 = var6.getSystemId();
         }

         String var7 = var10000;
         File var8 = new File(var1, var7);
         OutputStreamWriter var9 = null;

         try {
            var9 = new OutputStreamWriter(new FileOutputStream(var8));
            IOUtils.copyStream(((StreamSource)var6).getReader(), var9);
         } finally {
            ResourceUtils.closeQuietly(var9);
         }
      }
   }

   private static String a(String var0) {
      InputStream var1 = null;

      try {
         TransformerFactory var2 = TransformerFactory.newInstance();
         String[] var14 = d;
         Transformer var3 = var2.newTransformer(new StreamSource(var1 = ValidationUtils.class.getResourceAsStream(var14[20])));
         StringWriter var4 = new StringWriter();
         var3.transform(new StreamSource(new StringReader(var0)), new StreamResult(var4));
         return var4.toString();
      } catch (TransformerConfigurationException var11) {
         String[] var7 = d;
         throw new ManagementRuntimeException(var7[4], var11);
      } catch (TransformerException var12) {
         throw new ManagementRuntimeException(d[5], var12);
      } finally {
         ResourceUtils.closeQuietly(var1);
      }
   }

   static {
      String[] var5 = new String[26];
      int var3 = 0;
      String var2 = "m4\t\u001572ZZ#\u001a\u000e,|^\b5\u0018\u0012 \u007fX\b/\u0015\t1sWK#\ba\b2.\fSu{\u0007\u001ahNTq<\r\u001bm4\t\u001572^M(\u001e\b$fPF![\"\b^\u0019{%\u0013\u001f(s\u001d}(\u001a\u0018)w\u0019\\)[\u001d |\\Z'\u000f\u001feJtdf(\u0019-wTI\u001d}(\u001a\u0018)w\u0019\\)[\u001d |\\Z'\u000f\u001feJtdf(\u0019-wTI\b\u001ahNTq<\r\u001c\u001eg3\u000f\n0f\u0019L/\t\u001f&fVZ?[\u0014*f\u0019[6\u001e\u0019,tPM\"\b\u001ahNTq<\b\u001a\to\u000f-?\u000b\\xe\u0003\u0016O'\u000f\u001f2s@\u0005+\u001a\u0014$u\\E#\u0015\u000ekjJL\u001bm4\t\u001572^M(\u001e\b$fPF![\"\b^\u0019{%\u0013\u001f(s\b\u001ahNTq<\r\u001a\b\u001ahNTq<\r\u001b\u0007{\u0013)4\u0004_|\u0007\u001ahNTq<\f\u000b[%\u0013\u001f(s\b\u0006>\b\u001e @2\u000f\n\u007f=\u0016_1\fT2!\u0017G4\u001cUw\"\t\u0019i#7\tAZ@#\u0016\u001b\fm\u000b:3\tS}l\u0014>)\u0016\no\u00035?\u0017Sma\t5\u0014[%\u0013\u001f(s\u0014\\4\u001a\u00146tVZ+U\u00026~\f{\u0003)3\u0004^w}\u000b9?\u0017\u0014\u0019hIT}&\t\u0006wJIp&\u0000\u0006wUCk#\b\u001ahNTq<\r\u001e";
      int var4 = "m4\t\u001572ZZ#\u001a\u000e,|^\b5\u0018\u0012 \u007fX\b/\u0015\t1sWK#\ba\b2.\fSu{\u0007\u001ahNTq<\r\u001bm4\t\u001572^M(\u001e\b$fPF![\"\b^\u0019{%\u0013\u001f(s\u001d}(\u001a\u0018)w\u0019\\)[\u001d |\\Z'\u000f\u001feJtdf(\u0019-wTI\u001d}(\u001a\u0018)w\u0019\\)[\u001d |\\Z'\u000f\u001feJtdf(\u0019-wTI\b\u001ahNTq<\r\u001c\u001eg3\u000f\n0f\u0019L/\t\u001f&fVZ?[\u0014*f\u0019[6\u001e\u0019,tPM\"\b\u001ahNTq<\b\u001a\to\u000f-?\u000b\\xe\u0003\u0016O'\u000f\u001f2s@\u0005+\u001a\u0014$u\\E#\u0015\u000ekjJL\u001bm4\t\u001572^M(\u001e\b$fPF![\"\b^\u0019{%\u0013\u001f(s\b\u001ahNTq<\r\u001a\b\u001ahNTq<\r\u001b\u0007{\u0013)4\u0004_|\u0007\u001ahNTq<\f\u000b[%\u0013\u001f(s\b\u0006>\b\u001e @2\u000f\n\u007f=\u0016_1\fT2!\u0017G4\u001cUw\"\t\u0019i#7\tAZ@#\u0016\u001b\fm\u000b:3\tS}l\u0014>)\u0016\no\u00035?\u0017Sma\t5\u0014[%\u0013\u001f(s\u0014\\4\u001a\u00146tVZ+U\u00026~\f{\u0003)3\u0004^w}\u000b9?\u0017\u0014\u0019hIT}&\t\u0006wJIp&\u0000\u0006wUCk#\b\u001ahNTq<\r\u001e"
         .length();
      char var1 = 30;
      int var7 = -1;

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

         while (true) {
            String var14 = a(b(var10000));
            switch (var10001) {
               case 0:
                  var5[var3++] = var14;
                  if ((var7 += var1) >= var4) {
                     d = var5;
                     MapBuilder var10 = CollectionUtils.mapBuilder();
                     String[] var8 = d;
                     c = var10.put(var8[22], var8[18])
                        .put(var8[2], var8[14])
                        .put(var8[15], var8[21])
                        .put(var8[8], "T")
                        .put(var8[12], var8[9])
                        .put(var8[13], var8[1])
                        .put(var8[6], var8[19])
                        .put(var8[23], var8[24])
                        .map();
                     return;
                  }

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

                  var2 = "l\b*\u001aa(\r\u001b){]\b)\u000e\u000e5gM\b\"\u0012\b qMG4\u0002@e";
                  var4 = "l\b*\u001aa(\r\u001b){]\b)\u000e\u000e5gM\b\"\u0012\b qMG4\u0002@e".length();
                  var1 = 3;
                  var7 = -1;
            }

            var10000 = var2.substring(++var7, var7 + var1);
            var10001 = 0;
         }
      }
   }

   private static char[] b(String var0) {
      char[] var10000 = var0.toCharArray();
      if (var10000.length < 2) {
         var10000[0] = (char)(var10000[0] ^ 57);
      }

      return var10000;
   }

   private static String a(char[] var0) {
      int var10002 = var0.length;
      char[] var10001 = var0;
      int var10000 = var10002;

      for (int var1 = 0; var10000 > var1; var1++) {
         var10001[var1] = (char)(var10001[var1] ^ switch (var1 % 7) {
            case 0 -> 40;
            case 1 -> 70;
            case 2 -> 123;
            case 3 -> 122;
            case 4 -> 69;
            case 5 -> 18;
            default -> 57;
         });
      }

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