// Path: ip-filter-core/src/main/java/org/chimi/ipfilter/IpFilter.java
// public interface IpFilter {
//     boolean accept(String ip);
// }
// 
// Path: ip-filter-core/src/main/java/org/chimi/ipfilter/IpFilters.java
// public class IpFilters {
//     public static IpFilter create(Config config) {
//         return new ConfigIpFilter(config);
//     }
// 
//     public static IpFilter createCached(Config config) {
//         return new CachedIpFilter(create(config));
//     }
// }
// 
// Path: ip-filter-web-api/src/main/java/org/chimi/ipfilter/web/IpBlocker.java
// public interface IpBlocker {
//     boolean accept(String remoteAddr);
// 
//     void reload();
// }


import org.chimi.ipfilter.IpFilter;
import org.chimi.ipfilter.IpFilters;
import org.chimi.ipfilter.web.IpBlocker;
import java.util.Map;
import java.util.concurrent.atomic.AtomicReference;
package org.chimi.ipfilter.web.impl;



public class IpBlockerImpl implements IpBlocker {

    private AtomicReference<IpFilter> ipFilter = new AtomicReference<IpFilter>();
// Path: ip-filter-core/src/main/java/org/chimi/ipfilter/IpFilter.java
// public interface IpFilter {
//     boolean accept(String ip);
// }
// 
// Path: ip-filter-core/src/main/java/org/chimi/ipfilter/IpFilters.java
// public class IpFilters {
//     public static IpFilter create(Config config) {
//         return new ConfigIpFilter(config);
//     }
// 
//     public static IpFilter createCached(Config config) {
//         return new CachedIpFilter(create(config));
//     }
// }
// 
// Path: ip-filter-web-api/src/main/java/org/chimi/ipfilter/web/IpBlocker.java
// public interface IpBlocker {
//     boolean accept(String remoteAddr);
// 
//     void reload();
// }


// Path: ip-filter-web-simple/src/main/java/org/chimi/ipfilter/web/impl/IpBlockerImpl.java
import org.chimi.ipfilter.IpFilter;
import org.chimi.ipfilter.IpFilters;
import org.chimi.ipfilter.web.IpBlocker;
import java.util.Map;
import java.util.concurrent.atomic.AtomicReference;

package org.chimi.ipfilter.web.impl;



public class IpBlockerImpl implements IpBlocker {

    private AtomicReference<IpFilter> ipFilter = new AtomicReference<IpFilter>();
    private ConfigFactory configFactory;