// Path: services/google/api/src/main/java/eu/hlavki/identity/services/google/NoPrivateKeyException.java
// public class NoPrivateKeyException extends RuntimeException {
// 
//     private static final long serialVersionUID = 2712920621905135028L;
// 
//     public NoPrivateKeyException() {
//         super();
//     }
// 
// 
//     public NoPrivateKeyException(String message) {
//         super(message);
//     }
// 
// 
//     public NoPrivateKeyException(String message, Throwable cause) {
//         super(message, cause);
//     }
// 
// 
//     public NoPrivateKeyException(Throwable cause) {
//         super(cause);
//     }
// }
// 
// Path: services/google/api/src/main/java/eu/hlavki/identity/services/google/config/Configuration.java
// public interface Configuration {
// 
//     String getGSuiteDomain();
// 
// 
//     String getGSuiteImplicitGroup();
// 
// 
//     boolean isSetGSuiteImplicitGroup();
// 
// 
//     String getServiceAccountEmail();
// 
// 
//     String getServiceAccountSubject();
// 
// 
//     Set<String> getServiceAccountScopes();
// 
// 
//     PrivateKey readServiceAccountKey() throws NoPrivateKeyException;
// 
// 
//     void setServiceAccount(String clientEmail, String privateKey, String subject, String tokenUri);
// 
// 
//     void resetServiceAccount();
// 
// 
//     String getServiceAccountTokenUri();
// 
// 
//     long getServiceAccountTokenLifetime();
// 
// 
//     String getPushServiceHostname();
// 
// 
//     void setPushServiceHostname(String hostname);
// 
// 
//     File getPushChannelFile();
// 
// 
//     boolean isPushEnabled();
// 
// 
//     void setPushEnabled(boolean value);
// 
// 
//     Duration getPushRefreshInterval();
// }


import eu.hlavki.identity.services.google.NoPrivateKeyException;
import eu.hlavki.identity.services.google.config.Configuration;
import java.io.File;
import java.io.IOException;
import java.math.BigDecimal;
import java.security.*;
import java.security.spec.InvalidKeySpecException;
import java.security.spec.PKCS8EncodedKeySpec;
import java.time.Duration;
import java.util.*;
import java.util.function.Consumer;
import org.osgi.service.cm.ConfigurationAdmin;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
    public String getGSuiteImplicitGroup() {
        return get(GSUITE_IMPLICIT_GROUP);
    }


    @Override
    public boolean isSetGSuiteImplicitGroup() {
        return isSet(GSUITE_IMPLICIT_GROUP);
    }


    @Override
    public String getServiceAccountEmail() {
        return get(SERVICE_ACCOUNT_EMAIL_PROP);
    }


    @Override
    public String getServiceAccountSubject() {
        return get(SERVICE_ACCOUNT_SUBJECT_PROP);
    }


    @Override
    public Set<String> getServiceAccountScopes() {
        return getSet(SERVICE_ACCOUNT_SCOPES_PROP);
    }


    @Override
// Path: services/google/api/src/main/java/eu/hlavki/identity/services/google/NoPrivateKeyException.java
// public class NoPrivateKeyException extends RuntimeException {
// 
//     private static final long serialVersionUID = 2712920621905135028L;
// 
//     public NoPrivateKeyException() {
//         super();
//     }
// 
// 
//     public NoPrivateKeyException(String message) {
//         super(message);
//     }
// 
// 
//     public NoPrivateKeyException(String message, Throwable cause) {
//         super(message, cause);
//     }
// 
// 
//     public NoPrivateKeyException(Throwable cause) {
//         super(cause);
//     }
// }
// 
// Path: services/google/api/src/main/java/eu/hlavki/identity/services/google/config/Configuration.java
// public interface Configuration {
// 
//     String getGSuiteDomain();
// 
// 
//     String getGSuiteImplicitGroup();
// 
// 
//     boolean isSetGSuiteImplicitGroup();
// 
// 
//     String getServiceAccountEmail();
// 
// 
//     String getServiceAccountSubject();
// 
// 
//     Set<String> getServiceAccountScopes();
// 
// 
//     PrivateKey readServiceAccountKey() throws NoPrivateKeyException;
// 
// 
//     void setServiceAccount(String clientEmail, String privateKey, String subject, String tokenUri);
// 
// 
//     void resetServiceAccount();
// 
// 
//     String getServiceAccountTokenUri();
// 
// 
//     long getServiceAccountTokenLifetime();
// 
// 
//     String getPushServiceHostname();
// 
// 
//     void setPushServiceHostname(String hostname);
// 
// 
//     File getPushChannelFile();
// 
// 
//     boolean isPushEnabled();
// 
// 
//     void setPushEnabled(boolean value);
// 
// 
//     Duration getPushRefreshInterval();
// }


// Path: services/google/api/src/main/java/eu/hlavki/identity/services/google/config/impl/ConfigurationImpl.java
import eu.hlavki.identity.services.google.NoPrivateKeyException;
import eu.hlavki.identity.services.google.config.Configuration;
import java.io.File;
import java.io.IOException;
import java.math.BigDecimal;
import java.security.*;
import java.security.spec.InvalidKeySpecException;
import java.security.spec.PKCS8EncodedKeySpec;
import java.time.Duration;
import java.util.*;
import java.util.function.Consumer;
import org.osgi.service.cm.ConfigurationAdmin;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

    public String getGSuiteImplicitGroup() {
        return get(GSUITE_IMPLICIT_GROUP);
    }


    @Override
    public boolean isSetGSuiteImplicitGroup() {
        return isSet(GSUITE_IMPLICIT_GROUP);
    }


    @Override
    public String getServiceAccountEmail() {
        return get(SERVICE_ACCOUNT_EMAIL_PROP);
    }


    @Override
    public String getServiceAccountSubject() {
        return get(SERVICE_ACCOUNT_SUBJECT_PROP);
    }


    @Override
    public Set<String> getServiceAccountScopes() {
        return getSet(SERVICE_ACCOUNT_SCOPES_PROP);
    }


    @Override
    public PrivateKey readServiceAccountKey() throws NoPrivateKeyException {