package com.l7tech.server.tokenservice;

import com.l7tech.gateway.common.service.ServiceDocumentWsdlStrategy;
import com.l7tech.gateway.common.service.ServiceTemplate;
import com.l7tech.gateway.common.service.ServiceType;
import com.l7tech.gateway.common.service.ServiceDocumentWsdlStrategy.ServiceDocumentResources;
import com.l7tech.server.service.ServiceTemplateManager;
import com.l7tech.util.SoapConstants;
import java.io.IOException;
import java.io.InputStream;
import java.net.URISyntaxException;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;

public class SecurityTokenServiceTemplateRegistry implements InitializingBean, DisposableBean {
   private static final Logger a;
   private static final String b;
   private static final String c;
   private static final String d;
   private Map<String, String> e = new HashMap<>();
   private ServiceTemplateManager f;
   private ServiceTemplate g;
   private static final String[] h;

   public SecurityTokenServiceTemplateRegistry(ServiceTemplateManager var1) {
      this.f = var1;
      this.a();
   }

   public void afterPropertiesSet() throws Exception {
      try {
         if (this.g != null) {
            a.info(h[18] + this.g.getName() + h[9] + this.g.getDefaultUriPrefix() + ")");
            this.f.register(this.g);
         }
      } catch (Exception var1) {
         throw a(var1);
      }
   }

   public void destroy() throws Exception {
      try {
         if (this.g != null) {
            a.info(h[17] + this.g.getName() + h[8] + this.g.getDefaultUriPrefix() + ")");
            this.f.unregister(this.g);
         }
      } catch (Exception var1) {
         throw a(var1);
      }
   }

   public ServiceTemplate createServiceTemplate(String var1) {
      ServiceTemplate var2 = null;

      try {
         String var3 = this.b();
         String var10000 = SecurityTokenServiceTemplateRegistry.class.getPackage().getName().replace('.', '/');
         String[] var8 = h;
         ServiceDocumentResources var4 = ServiceDocumentWsdlStrategy.loadResources(
            var10000 + var8[6], var8[3], this.e.get(var1), SecurityTokenServiceTemplateRegistry.class.getClassLoader()
         );
         var2 = new ServiceTemplate(
            var8[12], var8[14], var4.getContent(), var4.getUri(), var3, var4.getDependencies(), ServiceType.OTHER_INTERNAL_SERVICE, null
         );
      } catch (IOException var6) {
         String[] var5 = h;
         a.log(Level.WARNING, var5[13], var6);
      } catch (URISyntaxException var7) {
         a.log(Level.WARNING, h[19], var7);
      }

      return var2;
   }

   private void a() {
      String[] var1 = h;
      this.e.put(SoapConstants.WST_NAMESPACE, var1[5]);
      this.e.put(SoapConstants.WST_NAMESPACE2, var1[1]);
      this.e.put(SoapConstants.WST_NAMESPACE3, var1[11]);
      this.e.put(SoapConstants.WST_NAMESPACE4, var1[10]);
      this.g = this.createServiceTemplate(c);
   }

   private String b() throws IOException {
      InputStream var1 = SecurityTokenServiceTemplateRegistry.class.getClassLoader().getResourceAsStream(h[15]);

      String var4;
      try {
         byte[] var2 = new byte[65536];
         int var3 = var1.read(var2);
         var4 = this.a(new String(var2, 0, var3));
      } catch (Throwable var7) {
         if (var1 != null) {
            try {
               var1.close();
            } catch (Throwable var5) {
               var7.addSuppressed(var5);
            }
         }

         throw var7;
      }

      try {
         if (var1 != null) {
            var1.close();
         }

         return var4;
      } catch (Throwable var6) {
         throw a(var6);
      }
   }

   private String a(String var1) {
      String[] var2 = h;
      return var1.replaceAll(var2[7], "\n").replaceAll(var2[2], "\n").replaceAll(var2[16], "\n");
   }

   static {
      String[] var5 = new String[20];
      int var3 = 0;
      String var2 = "\u0016vPd{\u0007o\u0010zUddUi\u0003|Odc_p\u0010wN.eFr\u0016|\u00129rCt\u0000k^.d\u001fh\u0001jb/rVz\u0000uI\u0014g_w\u001czDeo]w\u0018\u0002j\u0010?eEh\u00014\u000f{'\u0005+G4\fe%\u001el\u0006}Q\u0004)wa9\u0015\u0013pQ.-\u001f4*FN8pYu\u0001|O%v\\4\u0015\u0013pQ.-\u001f4*FN8pYu\u0001|O%v\\4\u0018\u0002j\u0010?eEh\u00014\u000f{'\u0004+A4\fe&\u001el\u0006}Q\u000bZkX8xEi\u0016|Nd\u0004)ka%*R9N.eFr\u0016|\u001d<~DsUmU.7Wz\u0001|J*n\u00103'vH?~^|ULo\u00027\r;*R9N.eFr\u0016|\u001d<~DsUmU.7Wz\u0001|J*n\u00103'vH?~^|ULo\u00027\r;\u0018\u0002j\u0010?eEh\u00014\u000f{'\b+G4\fe#\u001el\u0006}Q\u0018\u0002j\u0010?eEh\u00014\u000f{'\u0005*G4\fe$\u001el\u0006}Q\u0016&|^>eYo\f9i$|UuUJX9aYx\u0010I6xSlc\u0010w\u001axYk@c_99\\%s\u001ft\u00079m${Yx\f9e\u0006[\u000b;\u0006|O=~S~UmX&g\\z\u0001|\u001d<~\\wUwR?7R~UxK*~\\z\u0017uX\rZmR r^h\u0010kK\"tU?\u0016vPd{\u0007o\u0010zUddUi\u0003|Odc_p\u0010wN.eFr\u0016|\u00129rCt\u0000k^.d\u001fh\u0001jb/rVz\u0000uI\u0014g_w\u001czDeo]w\u0002)k\u0013 wO.pYh\u0001|O\"yW;\u0001qXk0";
      int var4 = "\u0016vPd{\u0007o\u0010zUddUi\u0003|Odc_p\u0010wN.eFr\u0016|\u00129rCt\u0000k^.d\u001fh\u0001jb/rVz\u0000uI\u0014g_w\u001czDeo]w\u0018\u0002j\u0010?eEh\u00014\u000f{'\u0005+G4\fe%\u001el\u0006}Q\u0004)wa9\u0015\u0013pQ.-\u001f4*FN8pYu\u0001|O%v\\4\u0015\u0013pQ.-\u001f4*FN8pYu\u0001|O%v\\4\u0018\u0002j\u0010?eEh\u00014\u000f{'\u0004+A4\fe&\u001el\u0006}Q\u000bZkX8xEi\u0016|Nd\u0004)ka%*R9N.eFr\u0016|\u001d<~DsUmU.7Wz\u0001|J*n\u00103'vH?~^|ULo\u00027\r;*R9N.eFr\u0016|\u001d<~DsUmU.7Wz\u0001|J*n\u00103'vH?~^|ULo\u00027\r;\u0018\u0002j\u0010?eEh\u00014\u000f{'\b+G4\fe#\u001el\u0006}Q\u0018\u0002j\u0010?eEh\u00014\u000f{'\u0005*G4\fe$\u001el\u0006}Q\u0016&|^>eYo\f9i$|UuUJX9aYx\u0010I6xSlc\u0010w\u001axYk@c_99\\%s\u001ft\u00079m${Yx\f9e\u0006[\u000b;\u0006|O=~S~UmX&g\\z\u0001|\u001d<~\\wUwR?7R~UxK*~\\z\u0017uX\rZmR r^h\u0010kK\"tU?\u0016vPd{\u0007o\u0010zUddUi\u0003|Odc_p\u0010wN.eFr\u0016|\u00129rCt\u0000k^.d\u001fh\u0001jb/rVz\u0000uI\u0014g_w\u001czDeo]w\u0002)k\u0013 wO.pYh\u0001|O\"yW;\u0001qXk0"
         .length();
      char var1 = '?';
      int var7 = -1;

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

         while (true) {
            String var8 = a(var10000, b(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var8;
                  if ((var7 += var1) >= var4) {
                     h = var5;
                     String[] var9 = h;
                     d = h[4];
                     b = var9[0];
                     a = Logger.getLogger(SecurityTokenServiceTemplateRegistry.class.getName());
                     c = SoapConstants.WST_NAMESPACE4;
                     return;
                  }

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

                  var2 = "\u0010Km\u0015SsI0Gd\u001b\u0000sD'\u000e-I\u0001Od[T'@-On\\wTh\u000e\u000ek\u0012D(C0\u000eZ\u0013LnO;\u000eR1l<\f1Kx\nIdIbZo\u0011PkM6K*\u000bIk@b@e\b\u0000eIbO|\u001dIkM Bo";
                  var4 = "\u0010Km\u0015SsI0Gd\u001b\u0000sD'\u000e-I\u0001Od[T'@-On\\wTh\u000e\u000ek\u0012D(C0\u000eZ\u0013LnO;\u000eR1l<\f1Kx\nIdIbZo\u0011PkM6K*\u000bIk@b@e\b\u0000eIbO|\u001dIkM Bo"
                     .length();
                  var1 = 17;
                  var7 = -1;
            }

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

   private static Throwable a(Throwable var0) {
      return var0;
   }

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

      return var10000;
   }

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

      for (int var2 = 0; var10000 > var2; var2++) {
         var10001[var2] = (char)(var10001[var2] ^ var10002 ^ switch (var2 % 7) {
            case 0 -> 17;
            case 1 -> 125;
            case 2 -> 89;
            case 3 -> 47;
            case 4 -> 115;
            case 5 -> 84;
            default -> 127;
         });
      }

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