package com.l7tech.gateway.api;

import com.l7tech.gateway.api.impl.AccessorSupport;
import com.l7tech.gateway.api.impl.AttributeExtensibleType;
import com.l7tech.gateway.api.impl.ElementExtendableAccessibleObject;
import com.l7tech.gateway.api.impl.PropertiesMapType;
import com.l7tech.util.CollectionUtils;
import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlRootElement;
import jakarta.xml.bind.annotation.XmlType;
import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import java.util.Map;
import javax.xml.namespace.QName;

@XmlRootElement(name = "StoredPassword")
@XmlType(name = "StoredPasswordType", propOrder = {"nameValue", "passwordValue", "properties", "extension", "extensions"})
@AccessorSupport.AccessibleResource(name = "storedPasswords")
public class StoredPasswordMO extends ElementExtendableAccessibleObject {
   private AttributeExtensibleType.AttributeExtensibleString h;
   private AttributeExtensibleType.AttributeExtensibleString i;
   private Map<String, Object> j;
   private static final String[] k;

   StoredPasswordMO() {
   }

   public String getName() {
      return AttributeExtensibleType.get(this.h);
   }

   public void setName(String var1) {
      this.h = AttributeExtensibleType.set(this.h, var1);
   }

   public String getPassword() {
      return AttributeExtensibleType.get(this.i);
   }

   public void setPassword(String var1) {
      this.i = AttributeExtensibleType.set(this.i, var1);
   }

   public void setPassword(String var1, String var2) {
      this.i = new AttributeExtensibleType.AttributeExtensibleString();
      this.i.setValue(var1);
      this.i.setAttributeExtensions(CollectionUtils.mapBuilder().put(new QName(k[1]), var2).map());
   }

   public String getPasswordBundleKey() {
      return this.i.getAttributeExtensions() != null ? (String)this.i.getAttributeExtensions().get(new QName(k[0])) : null;
   }

   @XmlElement(name = "Properties")
   @XmlJavaTypeAdapter(PropertiesMapType.PropertiesMapTypeAdapter.class)
   public Map<String, Object> getProperties() {
      return this.j;
   }

   public void setProperties(Map<String, Object> var1) {
      this.j = var1;
   }

   @XmlElement(name = "Name", required = true)
   protected AttributeExtensibleType.AttributeExtensibleString getNameValue() {
      return this.h;
   }

   protected void setNameValue(AttributeExtensibleType.AttributeExtensibleString var1) {
      this.h = var1;
   }

   @XmlElement(name = "Password")
   protected AttributeExtensibleType.AttributeExtensibleString getPasswordValue() {
      return this.i;
   }

   protected void setPasswordValue(AttributeExtensibleType.AttributeExtensibleString var1) {
      this.i = var1;
   }

   static {
      String[] var5 = new String[2];
      int var3 = 0;
      String var2 = "}B~Q\u0007qszN\t}B~Q\u0007qszN";
      int var4 = "}B~Q\u0007qszN\t}B~Q\u0007qszN".length();
      char var1 = '\t';
      int var0 = -1;

      while (true) {
         String var10002 = b(b(var2.substring(++var0, var0 + var1)));
         byte var10001 = -1;
         var5[var3++] = var10002;
         if ((var0 += var1) >= var4) {
            k = var5;
            return;
         }

         var1 = var2.charAt(var0);
      }
   }

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

      return var10000;
   }

   private static String b(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 -> 31;
            case 1 -> 55;
            case 2 -> 16;
            case 3 -> 53;
            case 4 -> 107;
            case 5 -> 20;
            default -> 56;
         });
      }

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