// Path: src/main/java/com/cipherdyne/jfwknop/EnumFwknopRcType.java
// public enum EnumFwknopRcType {
// 
//     PORT_LIST,
//     IP_ADDRESS,
//     LOCAL_IP_ADDRESS,
//     Y_N,
//     DIGEST_ALGORITHM,
//     ENCRYPT_MODE,
//     PASSPHRASE,
//     BASE64_PASSPHRASE,
//     GPG_KEY_ID,
//     DIRECTORY_PATH,
//     FILE_PATH,
//     IP_PLUS_PORT,
//     SINGLE_PORT,
//     PROTOCOL,
//     PROTOCOL_PLUS_PORT,
//     SECONDS,
//     URL,
//     STRING,
//     TIME;
// 
//     private EnumFwknopRcType() {
//     }
// }
// 
// Path: src/main/java/com/cipherdyne/utils/InternationalizationHelper.java
// public class InternationalizationHelper {
// 
//     static private ResourceBundle messages;
//     private static final Logger LOGGER = LogManager.getLogger(InternationalizationHelper.class.getName());
//     private static InternationalizationHelper instance = null;
// 
//     /**
//      * Hidden constructor
//      *
//      * @param language
//      * @param country
//      */
//     private InternationalizationHelper(final String language, final String country) {
// 
//         messages = ResourceBundle.getBundle("messages", new Locale(language, country));
//     }
// 
//     public static String getMessage(final String i18nKey) {
// 
//         String translation = i18nKey;
// 
//         if (instance == null) {
//             instance = new InternationalizationHelper("en", "EN");
//         }
// 
//         try {
//             translation = messages.getString(i18nKey);
//         } catch (final MissingResourceException e) {
//             LOGGER.warn("No translation found for key " + i18nKey);
//         }
// 
//         return translation;
//     }
// 
//     public static String getMessageOrNull(final String i18nKey) {
// 
//         String translation = null;
// 
//         if (instance == null) {
//             instance = new InternationalizationHelper("en", "EN");
//         }
// 
//         try {
//             translation = messages.getString(i18nKey);
//         } catch (final MissingResourceException e) {
// 
//         }
// 
//         return translation;
//     }
// 
//     public static void configure(final String locale) {
//         String[] localeArray = locale.split("_");
//         instance = new InternationalizationHelper(localeArray[0], localeArray[1]);
//     }
// }


import static com.cipherdyne.jfwknop.EnumFwknopRcType.*;
import com.cipherdyne.utils.InternationalizationHelper;
    SPOOF_USER(STRING, "i18n.spa.spoof.user"),
    SPOOF_SOURCE_IP(IP_ADDRESS, "i18n.spa.spoof.source.ip"),
    RAND_PORT(Y_N, "i18n.spa.random.source.port"),
    KEY_FILE(FILE_PATH, ""),
    HTTP_USER_AGENT(STRING, ""),

    NAT_ACCESS(IP_PLUS_PORT, "i18n.nat.access.ip"),
    NAT_LOCAL(Y_N, "i18n.nat.local"),
    NAT_PORT(SINGLE_PORT, "i18n.nat.port"),
    NAT_RAND_PORT(Y_N, "i18n.nat.rand.port"),

    SPA_SERVER(IP_ADDRESS, "i18n.spa.server.ip"),
    SPA_SERVER_PORT(SINGLE_PORT, "i18n.spa.server.port"),
    SPA_SERVER_PROTO(PROTOCOL, "i18n.spa.client.proto"),
    KEY(PASSPHRASE, "i18n.rijndael.key", EnumFwknopdRcKey.KEY),
    KEY_BASE64(BASE64_PASSPHRASE, "i18n.rijndael.keybase64", EnumFwknopdRcKey.KEY_BASE64),

    USE_HMAC(Y_N, "i18n.hmac.use"),
    HMAC_KEY(PASSPHRASE, "i18n.hmac.key", EnumFwknopdRcKey.HMAC_KEY),
    HMAC_KEY_BASE64(BASE64_PASSPHRASE, "i18n.hmac.key.base64", EnumFwknopdRcKey.HMAC_KEY_BASE64),
    HMAC_DIGEST_TYPE(DIGEST_ALGORITHM, "i18n.hmac.digest.type", EnumFwknopdRcKey.HMAC_DIGEST_TYPE),

    SPA_SOURCE_PORT(SINGLE_PORT, "i18n.spa.client.sourceport"),
    FW_TIMEOUT(SECONDS, "i18n.misc.timeout"),
    RESOLVE_IP_HTTPS(Y_N, "i18n.resolve.ip.https"),
    RESOLVE_HTTP_ONLY(Y_N, "i18n.resolve.ip.http.only"),
    RESOLVE_URL(URL, "i18n.spa.client.resolveurl"),
    SERVER_RESOLVE_IPV4(Y_N, "i18n.spa.server.resolve.ipv4"),
    TIME_OFFSET(TIME, "i18n.misc.timeoffset");

// Path: src/main/java/com/cipherdyne/jfwknop/EnumFwknopRcType.java
// public enum EnumFwknopRcType {
// 
//     PORT_LIST,
//     IP_ADDRESS,
//     LOCAL_IP_ADDRESS,
//     Y_N,
//     DIGEST_ALGORITHM,
//     ENCRYPT_MODE,
//     PASSPHRASE,
//     BASE64_PASSPHRASE,
//     GPG_KEY_ID,
//     DIRECTORY_PATH,
//     FILE_PATH,
//     IP_PLUS_PORT,
//     SINGLE_PORT,
//     PROTOCOL,
//     PROTOCOL_PLUS_PORT,
//     SECONDS,
//     URL,
//     STRING,
//     TIME;
// 
//     private EnumFwknopRcType() {
//     }
// }
// 
// Path: src/main/java/com/cipherdyne/utils/InternationalizationHelper.java
// public class InternationalizationHelper {
// 
//     static private ResourceBundle messages;
//     private static final Logger LOGGER = LogManager.getLogger(InternationalizationHelper.class.getName());
//     private static InternationalizationHelper instance = null;
// 
//     /**
//      * Hidden constructor
//      *
//      * @param language
//      * @param country
//      */
//     private InternationalizationHelper(final String language, final String country) {
// 
//         messages = ResourceBundle.getBundle("messages", new Locale(language, country));
//     }
// 
//     public static String getMessage(final String i18nKey) {
// 
//         String translation = i18nKey;
// 
//         if (instance == null) {
//             instance = new InternationalizationHelper("en", "EN");
//         }
// 
//         try {
//             translation = messages.getString(i18nKey);
//         } catch (final MissingResourceException e) {
//             LOGGER.warn("No translation found for key " + i18nKey);
//         }
// 
//         return translation;
//     }
// 
//     public static String getMessageOrNull(final String i18nKey) {
// 
//         String translation = null;
// 
//         if (instance == null) {
//             instance = new InternationalizationHelper("en", "EN");
//         }
// 
//         try {
//             translation = messages.getString(i18nKey);
//         } catch (final MissingResourceException e) {
// 
//         }
// 
//         return translation;
//     }
// 
//     public static void configure(final String locale) {
//         String[] localeArray = locale.split("_");
//         instance = new InternationalizationHelper(localeArray[0], localeArray[1]);
//     }
// }


// Path: src/main/java/com/cipherdyne/jfwknop/EnumFwknopRcKey.java
import static com.cipherdyne.jfwknop.EnumFwknopRcType.*;
import com.cipherdyne.utils.InternationalizationHelper;

    SPOOF_USER(STRING, "i18n.spa.spoof.user"),
    SPOOF_SOURCE_IP(IP_ADDRESS, "i18n.spa.spoof.source.ip"),
    RAND_PORT(Y_N, "i18n.spa.random.source.port"),
    KEY_FILE(FILE_PATH, ""),
    HTTP_USER_AGENT(STRING, ""),

    NAT_ACCESS(IP_PLUS_PORT, "i18n.nat.access.ip"),
    NAT_LOCAL(Y_N, "i18n.nat.local"),
    NAT_PORT(SINGLE_PORT, "i18n.nat.port"),
    NAT_RAND_PORT(Y_N, "i18n.nat.rand.port"),

    SPA_SERVER(IP_ADDRESS, "i18n.spa.server.ip"),
    SPA_SERVER_PORT(SINGLE_PORT, "i18n.spa.server.port"),
    SPA_SERVER_PROTO(PROTOCOL, "i18n.spa.client.proto"),
    KEY(PASSPHRASE, "i18n.rijndael.key", EnumFwknopdRcKey.KEY),
    KEY_BASE64(BASE64_PASSPHRASE, "i18n.rijndael.keybase64", EnumFwknopdRcKey.KEY_BASE64),

    USE_HMAC(Y_N, "i18n.hmac.use"),
    HMAC_KEY(PASSPHRASE, "i18n.hmac.key", EnumFwknopdRcKey.HMAC_KEY),
    HMAC_KEY_BASE64(BASE64_PASSPHRASE, "i18n.hmac.key.base64", EnumFwknopdRcKey.HMAC_KEY_BASE64),
    HMAC_DIGEST_TYPE(DIGEST_ALGORITHM, "i18n.hmac.digest.type", EnumFwknopdRcKey.HMAC_DIGEST_TYPE),

    SPA_SOURCE_PORT(SINGLE_PORT, "i18n.spa.client.sourceport"),
    FW_TIMEOUT(SECONDS, "i18n.misc.timeout"),
    RESOLVE_IP_HTTPS(Y_N, "i18n.resolve.ip.https"),
    RESOLVE_HTTP_ONLY(Y_N, "i18n.resolve.ip.http.only"),
    RESOLVE_URL(URL, "i18n.spa.client.resolveurl"),
    SERVER_RESOLVE_IPV4(Y_N, "i18n.spa.server.resolve.ipv4"),
    TIME_OFFSET(TIME, "i18n.misc.timeoffset");

    final private EnumFwknopRcType type;