package com.l7tech.server.pm2;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.l7tech.common.http.HttpConstants;
import com.l7tech.gateway.common.security.rbac.Role;
import com.l7tech.gateway.common.security.rbac.Role.Tag;
import com.l7tech.gateway.common.transport.SsgConnector.Endpoint;
import com.l7tech.identity.FailAttemptsExceededException;
import com.l7tech.identity.FailInactivityPeriodExceededException;
import com.l7tech.identity.User;
import com.l7tech.identity.UserDisabledException;
import com.l7tech.objectmodel.ObjectModelException;
import com.l7tech.policy.assertion.credential.LoginCredentials;
import com.l7tech.server.AuthenticatableHttpServlet;
import com.l7tech.server.ServerConfig;
import com.l7tech.server.identity.AuthenticationResult;
import com.l7tech.server.oauth2.OAuth2VerifierResult;
import com.l7tech.server.oauth2.SSGOAuth2Issuer;
import com.l7tech.server.security.rbac.RoleManager;
import jakarta.servlet.ServletConfig;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.Cookie;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Map;
import javax.security.auth.login.LoginException;
import org.apache.commons.lang3.StringUtils;

public abstract class PM2AbstractServlet extends AuthenticatableHttpServlet {
   public static final String L7_SESSION_ID;
   protected ServerConfig serverConfig;
   protected RoleManager roleManager;
   protected SSGOAuth2Issuer ssgOAuth2Issuer;
   protected ObjectMapper objectMapper;
   static final long serialVersionUID = 5534419228757305689L;
   private static final String[] b;

   @Override
   protected String getFeature() {
      return b[18];
   }

   @Override
   protected Endpoint getRequiredEndpoint() {
      return Endpoint.ADMIN_REMOTE_SSM;
   }

   @Override
   public void init(ServletConfig var1) throws ServletException {
      super.init(var1);
      String[] var2 = b;
      this.serverConfig = this.getBean(var2[15], ServerConfig.class);
      this.roleManager = (RoleManager)this.getBean(var2[1]);
      this.ssgOAuth2Issuer = (SSGOAuth2Issuer)this.getBean(var2[10]);
      this.objectMapper = new ObjectMapper();
   }

   protected PM2AbstractServlet.PM2AuthContext authenticate(HttpServletRequest var1, HttpServletResponse var2, PM2AbstractServlet.PM2AuthType var3) throws IOException {
      PM2AbstractServlet.PM2AuthContext var4 = new PM2AbstractServlet.PM2AuthContext();

      label31: {
         try {
            if (PM2AbstractServlet.PM2AuthType.BASIC.equals(var3)) {
               this.findBasicCredentials(var1, var4);
               break label31;
            }
         } catch (IOException var6) {
            throw a(var6);
         }

         try {
            if (PM2AbstractServlet.PM2AuthType.TOKEN.equals(var3)) {
               this.findTokenCredentials(var1, var4);
               break label31;
            }
         } catch (IOException var5) {
            throw a(var5);
         }

         this.findCookieCredentials(var1, var4);
      }

      this.verifyCredentials(var2, var4, var3);
      return var4;
   }

   protected PM2AbstractServlet.PM2AuthContext authenticate(HttpServletRequest var1, HttpServletResponse var2) throws IOException {
      PM2AbstractServlet.PM2AuthContext var3 = new PM2AbstractServlet.PM2AuthContext();
      this.findAnyCredentials(var1, var3);
      this.verifyCredentials(var2, var3);
      return var3;
   }

   private void findBasicCredentials(HttpServletRequest var1, PM2AbstractServlet.PM2AuthContext var2) {
      var2.a = this.findCredentialsBasic(var1);
   }

   private void findTokenCredentials(HttpServletRequest var1, PM2AbstractServlet.PM2AuthContext var2) {
      String[] var4 = b;
      String var3 = var1.getHeader(var4[7]);
      if (var3 != null && var3.startsWith(var4[13])) {
         var2.b = var3.substring(7);
      }
   }

   private void findCookieCredentials(HttpServletRequest var1, PM2AbstractServlet.PM2AuthContext var2) {
      Cookie[] var3 = var1.getCookies();
      if (var3 != null) {
         for (Cookie var7 : var3) {
            if (var7.getName().equalsIgnoreCase(b[11])) {
               var2.b = var7.getValue();
               break;
            }
         }
      }
   }

   private void findAnyCredentials(HttpServletRequest var1, PM2AbstractServlet.PM2AuthContext var2) {
      String[] var4 = b;
      String var3 = var1.getHeader(var4[14]);
      if (var3 != null) {
         if (var3.startsWith(var4[12])) {
            var2.a = this.findCredentialsBasic(var1);
         } else if (var3.startsWith(b[13])) {
            var2.b = var3.substring(7);
         }
      } else {
         this.findCookieCredentials(var1, var2);
      }
   }

   private void verifyCredentials(HttpServletResponse param1, PM2AbstractServlet.PM2AuthContext param2, PM2AbstractServlet.PM2AuthType param3) throws IOException {
      // $VF: Couldn't be decompiled
      // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
      // java.lang.RuntimeException: parsing failure!
      //   at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211)
      //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174)
      //
      // Bytecode:
      // 00: getstatic com/l7tech/server/pm2/PM2AbstractServlet$PM2AuthType.BASIC Lcom/l7tech/server/pm2/PM2AbstractServlet$PM2AuthType;
      // 03: aload 3
      // 04: invokevirtual com/l7tech/server/pm2/PM2AbstractServlet$PM2AuthType.equals (Ljava/lang/Object;)Z
      // 07: ifeq 2d
      // 0a: aload 2
      // 0b: getfield com/l7tech/server/pm2/PM2AbstractServlet$PM2AuthContext.a Lcom/l7tech/policy/assertion/credential/LoginCredentials;
      // 0e: ifnull 25
      // 11: goto 18
      // 14: invokestatic com/l7tech/server/pm2/PM2AbstractServlet.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 17: athrow
      // 18: aload 0
      // 19: aload 1
      // 1a: aload 2
      // 1b: invokevirtual com/l7tech/server/pm2/PM2AbstractServlet.authenticateUsingLoginCredentials (Ljakarta/servlet/http/HttpServletResponse;Lcom/l7tech/server/pm2/PM2AbstractServlet$PM2AuthContext;)V
      // 1e: goto 7c
      // 21: invokestatic com/l7tech/server/pm2/PM2AbstractServlet.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 24: athrow
      // 25: aload 0
      // 26: aload 1
      // 27: invokevirtual com/l7tech/server/pm2/PM2AbstractServlet.doHttpBasicChallenge (Ljakarta/servlet/http/HttpServletResponse;)V
      // 2a: goto 7c
      // 2d: getstatic com/l7tech/server/pm2/PM2AbstractServlet$PM2AuthType.TOKEN Lcom/l7tech/server/pm2/PM2AbstractServlet$PM2AuthType;
      // 30: aload 3
      // 31: invokevirtual com/l7tech/server/pm2/PM2AbstractServlet$PM2AuthType.equals (Ljava/lang/Object;)Z
      // 34: ifeq 5a
      // 37: aload 2
      // 38: getfield com/l7tech/server/pm2/PM2AbstractServlet$PM2AuthContext.b Ljava/lang/String;
      // 3b: ifnull 52
      // 3e: goto 45
      // 41: invokestatic com/l7tech/server/pm2/PM2AbstractServlet.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 44: athrow
      // 45: aload 0
      // 46: aload 1
      // 47: aload 2
      // 48: invokevirtual com/l7tech/server/pm2/PM2AbstractServlet.authenticateUsingToken (Ljakarta/servlet/http/HttpServletResponse;Lcom/l7tech/server/pm2/PM2AbstractServlet$PM2AuthContext;)V
      // 4b: goto 7c
      // 4e: invokestatic com/l7tech/server/pm2/PM2AbstractServlet.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 51: athrow
      // 52: aload 0
      // 53: aload 1
      // 54: invokevirtual com/l7tech/server/pm2/PM2AbstractServlet.doHttpBearerChallenge (Ljakarta/servlet/http/HttpServletResponse;)V
      // 57: goto 7c
      // 5a: aload 2
      // 5b: getfield com/l7tech/server/pm2/PM2AbstractServlet$PM2AuthContext.b Ljava/lang/String;
      // 5e: ifnull 6e
      // 61: aload 0
      // 62: aload 1
      // 63: aload 2
      // 64: invokevirtual com/l7tech/server/pm2/PM2AbstractServlet.authenticateUsingToken (Ljakarta/servlet/http/HttpServletResponse;Lcom/l7tech/server/pm2/PM2AbstractServlet$PM2AuthContext;)V
      // 67: goto 7c
      // 6a: invokestatic com/l7tech/server/pm2/PM2AbstractServlet.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 6d: athrow
      // 6e: aload 0
      // 6f: aload 1
      // 70: sipush 401
      // 73: getstatic com/l7tech/server/pm2/PM2AbstractServlet.b [Ljava/lang/String;
      // 76: bipush 25
      // 78: aaload
      // 79: invokevirtual com/l7tech/server/pm2/PM2AbstractServlet.respondError (Ljakarta/servlet/http/HttpServletResponse;ILjava/lang/String;)V
      // 7c: return
      // try (0 -> 7): 8 java/io/IOException
      // try (4 -> 15): 15 java/io/IOException
      // try (21 -> 28): 29 java/io/IOException
      // try (25 -> 36): 36 java/io/IOException
      // try (42 -> 50): 50 java/io/IOException
   }

   private void verifyCredentials(HttpServletResponse var1, PM2AbstractServlet.PM2AuthContext var2) throws IOException {
      try {
         if (var2.a != null) {
            this.authenticateUsingLoginCredentials(var1, var2);
            return;
         }
      } catch (IOException var4) {
         throw a(var4);
      }

      try {
         if (var2.b != null) {
            this.authenticateUsingToken(var1, var2);
            return;
         }
      } catch (IOException var3) {
         throw a(var3);
      }

      this.doHttpBasicChallenge(var1);
   }

   private void authenticateUsingToken(HttpServletResponse var1, PM2AbstractServlet.PM2AuthContext var2) throws IOException {
      var2.d = this.ssgOAuth2Issuer.getVerifier().verify(var2.b);
      if (!var2.d.isValid()) {
         String var3 = var2.d.getErrorDescription();

         PM2AbstractServlet var10000;
         HttpServletResponse var10001;
         short var10002;
         String var10003;
         label19: {
            try {
               var10000 = this;
               var10001 = var1;
               var10002 = 401;
               if (var3.endsWith(".")) {
                  var10003 = var3;
                  break label19;
               }
            } catch (IOException var4) {
               throw a(var4);
            }

            var10003 = var3 + ".";
         }

         var10000.respondError(var10001, var10002, var10003);
      } else {
         var2.f = this.getUser(var2.d.getResult());
         var2.e = true;
      }
   }

   private void authenticateUsingLoginCredentials(HttpServletResponse var1, PM2AbstractServlet.PM2AuthContext var2) throws IOException {
      String var3 = var2.a.getLogin();
      String var4 = "";

      try {
         var2.c = this.adminSessionManager.authenticate(var2.a, false);
      } catch (LoginException var8) {
         var1.setStatus(401);
         String[] var17 = b;
         var4 = var17[21];
      } catch (ObjectModelException var9) {
         var1.setStatus(401);
         String[] var16 = b;
         var4 = var16[22];
      } catch (UserDisabledException var10) {
         var1.setStatus(403);
         String[] var15 = b;
         var4 = "'" + var3 + var15[24];
      } catch (FailAttemptsExceededException var11) {
         var1.setStatus(403);
         String[] var14 = b;
         var4 = "'" + var3 + var14[19];
      } catch (FailInactivityPeriodExceededException var12) {
         var1.setStatus(403);
         String[] var6 = b;
         var4 = "'" + var3 + var6[23];
      }

      try {
         if (StringUtils.isNotEmpty(var4)) {
            var1.setContentType(b[0]);
            var1.getWriter().println(var4);
            return;
         }
      } catch (LoginException var7) {
         throw a(var7);
      }

      try {
         if (var2.c == null) {
            this.respondError(var1, 401, b[16]);
            return;
         }
      } catch (LoginException var13) {
         throw a(var13);
      }

      var2.f = var2.c.getUser();
      var2.e = true;
   }

   private User getUser(Map<String, Object> var1) {
      String[] var5 = b;
      String var2 = (String)var1.get(var5[17]);
      String var3 = (String)var1.get(var5[6]);
      String var4 = (String)var1.get(var5[4]);
      return this.ssgOAuth2Issuer.getUser(var3, var2, var4);
   }

   protected boolean verifyRBAC(PM2AbstractServlet.PM2AuthContext param1) {
      // $VF: Couldn't be decompiled
      // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
      // java.lang.RuntimeException: parsing failure!
      //   at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211)
      //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174)
      //
      // Bytecode:
      // 00: aload 1
      // 01: invokevirtual com/l7tech/server/pm2/PM2AbstractServlet$PM2AuthContext.getAuthenticatedUser ()Lcom/l7tech/identity/User;
      // 04: astore 2
      // 05: bipush 0
      // 06: istore 3
      // 07: aload 0
      // 08: getfield com/l7tech/server/pm2/PM2AbstractServlet.roleManager Lcom/l7tech/server/security/rbac/RoleManager;
      // 0b: new com/l7tech/util/Pair
      // 0e: dup
      // 0f: aload 2
      // 10: invokeinterface com/l7tech/identity/User.getProviderId ()Lcom/l7tech/objectmodel/Goid; 1
      // 15: aload 2
      // 16: invokeinterface com/l7tech/identity/User.getId ()Ljava/lang/String; 1
      // 1b: invokespecial com/l7tech/util/Pair.<init> (Ljava/lang/Object;Ljava/lang/Object;)V
      // 1e: aload 2
      // 1f: invokeinterface com/l7tech/server/security/rbac/RoleManager.isAdministrativeUser (Lcom/l7tech/util/Pair;Lcom/l7tech/identity/User;)Z 3
      // 24: ifeq 3e
      // 27: aload 0
      // 28: aload 2
      // 29: invokevirtual com/l7tech/server/pm2/PM2AbstractServlet.isUserAdmin (Lcom/l7tech/identity/User;)Z
      // 2c: ifeq 3e
      // 2f: goto 36
      // 32: invokestatic com/l7tech/server/pm2/PM2AbstractServlet.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 35: athrow
      // 36: bipush 1
      // 37: goto 3f
      // 3a: invokestatic com/l7tech/server/pm2/PM2AbstractServlet.a (Ljava/lang/Exception;)Ljava/lang/Exception;
      // 3d: athrow
      // 3e: bipush 0
      // 3f: istore 3
      // 40: goto 45
      // 43: astore 4
      // 45: iload 3
      // 46: ireturn
      // try (17 -> 26): 26 java/lang/Exception
      // try (5 -> 21): 22 java/lang/Exception
      // try (5 -> 30): 31 java/lang/Exception
   }

   private boolean isUserAdmin(User var1) {
      try {
         for (Role var4 : this.roleManager.getAssignedRoles(var1)) {
            if (Tag.ADMIN.equals(var4.getTag())) {
               return true;
            }
         }

         return false;
      } catch (Exception var5) {
         this.logger.warning(b[2] + var5.getMessage());
         return false;
      }
   }

   private void doHttpBearerChallenge(HttpServletResponse var1) throws IOException {
      var1.setStatus(401);
      String[] var2 = b;
      var1.setHeader(HttpConstants.HEADER_WWW_AUTHENTICATE, var2[5]);
      var1.setContentType(var2[0]);
      var1.getWriter().println(var2[9]);
   }

   protected void respondError(HttpServletResponse var1, int var2, String var3) throws IOException {
      var1.setStatus(var2);
      var1.setContentType(b[20]);
      PrintWriter var4 = var1.getWriter();
      var4.print(var2);
      var4.print(" ");
      var4.print(var3);
      var4.close();
   }

   protected void respondSuccess(HttpServletResponse var1, String var2) throws IOException {
      this.respondSuccess(var1, var2, b[8]);
   }

   protected void respondSuccess(HttpServletResponse var1, String var2, String var3) throws IOException {
      var1.setContentType(var3);
      var1.getWriter().print(var2);
   }

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

   static {
      String[] var5 = new String[26];
      int var3 = 0;
      String var2 = "t\u0018|5~s<a\u0014jzq`8a\u000fw$%>%t\u001b)y\u000br\u0012h$\u001cb>a\u001aa3\u001cE\u000fv.##4e\ta3<j>i\u0013ca$p5r]v.=fp\u0007LJW\u0012\u0016J\u0014\ts\bf+4`$D\u0013\u0006B\u0018e34q\np\u000fk78g5r4`\rA\bp)>q9z\u001cp(>m\u001fa\rt-8`1t\u0014k/~i#o\u0013?a2k1r\u000ea5lv$fP<\u0018A\bp)4m$i\u001ee58l> /a0$j\"e\u0019*\u000fs\u000ec\u000e\u0010v$hOM2\"v5r\u0007LJW\u0012\u0016J\u0014\u0005B\u001cw(2\u0006B\u0018e34q\rA\bp)>q9z\u001cp(>m\fs\u0018v74q\u0013o\u0013b(6\u0016A\bp)4m$i\u001ee58l> \u001be(=f4.\u0005l\u0012c(?\rs\u0018v78`5:<`,8m%']a92f5d\u0018`a<b( \u001be(=f4 \u0011k&>mpa\tp$<s$sS\u0019t\u0018|5~s<a\u0014jzq`8a\u000fw$%>%t\u001b)y\rL\u0012c(?#6a\u0014h$5-\u001eA\bp)4m$i\u001ee58l> \rv.'j4e\u000f$$#q?rS\u001d']a92f5d\u0018`a8m1c\tm78w) \ra38l4.";
      int var4 = "t\u0018|5~s<a\u0014jzq`8a\u000fw$%>%t\u001b)y\u000br\u0012h$\u001cb>a\u001aa3\u001cE\u000fv.##4e\ta3<j>i\u0013ca$p5r]v.=fp\u0007LJW\u0012\u0016J\u0014\ts\bf+4`$D\u0013\u0006B\u0018e34q\np\u000fk78g5r4`\rA\bp)>q9z\u001cp(>m\u001fa\rt-8`1t\u0014k/~i#o\u0013?a2k1r\u000ea5lv$fP<\u0018A\bp)4m$i\u001ee58l> /a0$j\"e\u0019*\u000fs\u000ec\u000e\u0010v$hOM2\"v5r\u0007LJW\u0012\u0016J\u0014\u0005B\u001cw(2\u0006B\u0018e34q\rA\bp)>q9z\u001cp(>m\fs\u0018v74q\u0013o\u0013b(6\u0016A\bp)4m$i\u001ee58l> \u001be(=f4.\u0005l\u0012c(?\rs\u0018v78`5:<`,8m%']a92f5d\u0018`a<b( \u001be(=f4 \u0011k&>mpa\tp$<s$sS\u0019t\u0018|5~s<a\u0014jzq`8a\u000fw$%>%t\u001b)y\rL\u0012c(?#6a\u0014h$5-\u001eA\bp)4m$i\u001ee58l> \rv.'j4e\u000f$$#q?rS\u001d']a92f5d\u0018`a8m1c\tm78w) \ra38l4."
         .length();
      char var1 = 25;
      int var7 = -1;

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

         while (true) {
            String var8 = b(var10000, b(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var8;
                  if ((var7 += var1) >= var4) {
                     b = var5;
                     L7_SESSION_ID = b[3];
                     return;
                  }

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

                  var2 = "#Yi6uc=w\u0018b)0cz W\u001cs6<h:$\u000ea6ui;pYe6!f6h\u0010s-0ct}\u001ctk";
                  var4 = "#Yi6uc=w\u0018b)0cz W\u001cs6<h:$\u000ea6ui;pYe6!f6h\u0010s-0ct}\u001ctk".length();
                  var1 = 14;
                  var7 = -1;
            }

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

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

      return var10000;
   }

   private static String b(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 -> 21;
            case 1 -> 104;
            case 2 -> 17;
            case 3 -> 84;
            case 4 -> 68;
            case 5 -> 22;
            default -> 69;
         });
      }

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

   public static class PM2AuthContext {
      private LoginCredentials a;
      private String b;
      private AuthenticationResult c;
      private OAuth2VerifierResult d;
      private boolean e;
      private User f;

      public boolean hasCredentials() {
         return this.a != null || this.b != null;
      }

      public boolean isAuthenticated() {
         return this.e;
      }

      public AuthenticationResult getAuthResult() {
         return this.c;
      }

      public OAuth2VerifierResult getOAuthResult() {
         return this.d;
      }

      public User getAuthenticatedUser() {
         return this.f;
      }
   }

   public enum PM2AuthType {
      BASIC,
      COOKIE,
      TOKEN;

      // $VF: Failed to inline enum fields
      // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
      static {
         String[] var0 = new String[3];
         int var4 = 0;
         String var3 = "' -+k\u001b\u0005&.1)a\u00050 )%l";
         int var5 = "' -+k\u001b\u0005&.1)a\u00050 )%l".length();
         char var2 = 6;
         int var1 = -1;

         while (true) {
            String var10002 = a(101, a(var3.substring(++var1, var1 + var2)));
            byte var10001 = -1;
            var0[var4++] = var10002;
            if ((var1 += var2) >= var5) {
               BASIC = new PM2AbstractServlet.PM2AuthType();
               COOKIE = new PM2AbstractServlet.PM2AuthType();
               TOKEN = new PM2AbstractServlet.PM2AuthType();
               return;
            }

            var2 = var3.charAt(var1);
         }
      }

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

         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 -> 1;
               case 1 -> 10;
               case 2 -> 7;
               case 3 -> 5;
               case 4 -> 71;
               case 5 -> 59;
               default -> 124;
            });
         }

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