class CloudConfigServiceLocalImpl implements CloudConfigService {
    static final String DEFAULT_GROUP = "DEFAULT_GROUP";
    static final String CONFIG_KEY_FORMAT = "config/%s_%s";

    private final Map<String, Config> configMap = new HashMap<>();

    private final String server;

    private final ReentrantLock SYNC_LOCK = new ReentrantLock();

    public CloudConfigServiceLocalImpl(CloudProps cloudProps) {
        this.server = cloudProps.getServer();
    }

    @Override
    public Config pull(String group, String name) {<FILL_FUNCTION_BODY>}

    @Override
    public boolean push(String group, String name, String value) {
        if (Utils.isEmpty(group)) {
            group = Solon.cfg().appGroup();

            if (Utils.isEmpty(group)) {
                group = DEFAULT_GROUP;
            }
        }

        String configKey = String.format(CONFIG_KEY_FORMAT, group, name);
        Config configVal = pull(group, name);

        SYNC_LOCK.lock();
        try {
            if (configVal == null) {
                configVal = new Config(group, name, value, 0);
                configMap.put(configKey, configVal);
            }

            if (configVal != null) {
                configVal.updateValue(value, configVal.version() + 1);
            }
        } finally {
            SYNC_LOCK.unlock();
        }

        return true;
    }

    @Override
    public boolean remove(String group, String name) {
        if (Utils.isEmpty(group)) {
            group = Solon.cfg().appGroup();

            if (Utils.isEmpty(group)) {
                group = DEFAULT_GROUP;
            }
        }

        String configKey = String.format(CONFIG_KEY_FORMAT, group, name);
        configMap.remove(configKey);
        return true;
    }

    @Override
    public void attention(String group, String name, CloudConfigHandler observer) {

    }
}

        if (Utils.isEmpty(group)) {
            group = Solon.cfg().appGroup();

            if (Utils.isEmpty(group)) {
                group = DEFAULT_GROUP;
            }
        }


        String configKey = String.format(CONFIG_KEY_FORMAT, group, name);
        Config configVal = configMap.get(configKey);

        SYNC_LOCK.lock();
        try {
            if (configVal == null) {
                configVal = configMap.get(configKey);

                if (configVal == null) {
                    try {
                        String value2 = CloudLocalUtils.getValue(server, configKey);

                        configVal = new Config(group, name, value2, 0);
                        configMap.put(configKey, configVal);
                    } catch (IOException e) {
                        throw new CloudConfigException(e);
                    }
                }
            }
        } finally {
            SYNC_LOCK.unlock();
        }

        return configVal;
    
<no_super_class>