public static void AddSettings(ConfigManager config, string key, string value, ServerSettings.Type type)
	{
		if (key.IsEmpty()) return;
		
		int duplicated = -1;
		
		ConfigManager.CachedServerSettings newSetting = new ConfigManager.CachedServerSettings();
		newSetting.key = key;
		newSetting.setting = new ServerSettings.Serializable(value, type);
		
		for(int i = 0; i < config.serverSettings.Length; i++)
		{
			ConfigManager.CachedServerSettings setting = config.serverSettings[i];
			if (setting.key == key)
			{
				duplicated = i;
				break;	
			}
		}
		
		if (!(duplicated >= 0))
		{
			Array.Resize(ref config.serverSettings, config.serverSettings.Length + 1);
			config.serverSettings[config.serverSettings.Length - 1] = newSetting;
			
			Array.Sort(config.serverSettings,
	    		delegate(ConfigManager.CachedServerSettings a, ConfigManager.CachedServerSettings b)
				{ return a.key.CompareTo(b.key); }
			);
			
			return;
		}
		
		config.serverSettings[duplicated] = newSetting;
	}
    public static void DeleteSettings(ConfigManager config, string key)
    {
        for (int i = 0; i < config.serverSettings.Length; i++)
        {
            ConfigManager.CachedServerSettings setting = config.serverSettings[i];
            if (setting.key == key)
            {
                setting.key = "z".Multiply(256);

                Array.Sort(config.serverSettings,
                           delegate(ConfigManager.CachedServerSettings a, ConfigManager.CachedServerSettings b)
                           { return(a.key.CompareTo(b.key)); }
                           );

                Array.Resize(ref config.serverSettings, config.serverSettings.Length - 1);

                return;
            }
        }
    }
    public static void AddSettings(ConfigManager config, string key, string value, ServerSettings.Type type)
    {
        if (key.IsEmpty())
        {
            return;
        }

        int duplicated = -1;

        ConfigManager.CachedServerSettings newSetting = new ConfigManager.CachedServerSettings();
        newSetting.key     = key;
        newSetting.setting = new ServerSettings.Serializable(value, type);

        for (int i = 0; i < config.serverSettings.Length; i++)
        {
            ConfigManager.CachedServerSettings setting = config.serverSettings[i];
            if (setting.key == key)
            {
                duplicated = i;
                break;
            }
        }

        if (!(duplicated >= 0))
        {
            Array.Resize(ref config.serverSettings, config.serverSettings.Length + 1);
            config.serverSettings[config.serverSettings.Length - 1] = newSetting;

            Array.Sort(config.serverSettings,
                       delegate(ConfigManager.CachedServerSettings a, ConfigManager.CachedServerSettings b)
                       { return(a.key.CompareTo(b.key)); }
                       );

            return;
        }

        config.serverSettings[duplicated] = newSetting;
    }