func (c DatafileProjectConfig) GetAudienceList() (audienceList []entities.Audience) {
	for _, audience := range c.audienceMap {
		audienceList = append(audienceList, audience)
	}
	return audienceList
}
GetAudienceList returns an array of all the audiences
package datafileprojectconfig
import (
	"errors"
	"fmt"
	"github.com/optimizely/go-sdk/pkg/config/datafileprojectconfig/mappers"
	"github.com/optimizely/go-sdk/pkg/entities"
	"github.com/optimizely/go-sdk/pkg/logging"
)
var datafileVersions = map[string]struct{}{
	"4": {},
}
type DatafileProjectConfig struct {
	datafile             string
	accountID            string
	projectID            string
	revision             string
	experimentKeyToIDMap map[string]string
	audienceMap          map[string]entities.Audience
	attributeMap         map[string]entities.Attribute
	eventMap             map[string]entities.Event
	attributeKeyToIDMap  map[string]string
	experimentMap        map[string]entities.Experiment
	featureMap           map[string]entities.Feature
	groupMap             map[string]entities.Group
	rollouts             []entities.Rollout
	rolloutMap           map[string]entities.Rollout
	anonymizeIP          bool
	botFiltering         bool
	sendFlagDecisions    bool
	sdkKey               string
	environmentKey       string
	flagVariationsMap map[string][]entities.Variation
}
func (c DatafileProjectConfig) GetDatafile() string {
	return c.datafile
}
func (c DatafileProjectConfig) GetProjectID() string {
	return c.projectID
}
func (c DatafileProjectConfig) GetRevision() string {
	return c.revision
}
func (c DatafileProjectConfig) GetAccountID() string {
	return c.accountID
}
func (c DatafileProjectConfig) GetAnonymizeIP() bool {
	return c.anonymizeIP
}
func (c DatafileProjectConfig) GetAttributes() (attributeList []entities.Attribute) {
	for _, attribute := range c.attributeMap {
		attributeList = append(attributeList, attribute)
	}
	return attributeList
}
func (c DatafileProjectConfig) GetAttributeID(key string) string {
	return c.attributeKeyToIDMap[key]
}
func (c DatafileProjectConfig) GetBotFiltering() bool {
	return c.botFiltering
}
func (c DatafileProjectConfig) GetSdkKey() string {
	return c.sdkKey
}
func (c DatafileProjectConfig) GetEnvironmentKey() string {
	return c.environmentKey
}
func (c DatafileProjectConfig) GetEvents() (eventList []entities.Event) {
	for _, event := range c.eventMap {
		eventList = append(eventList, event)
	}
	return eventList
}
func (c DatafileProjectConfig) GetEventByKey(eventKey string) (entities.Event, error) {
	if event, ok := c.eventMap[eventKey]; ok {
		return event, nil
	}
	return entities.Event{}, fmt.Errorf(`event with key "%s" not found`, eventKey)
}
func (c DatafileProjectConfig) GetFeatureByKey(featureKey string) (entities.Feature, error) {
	if feature, ok := c.featureMap[featureKey]; ok {
		return feature, nil
	}
	return entities.Feature{}, fmt.Errorf(`feature with key "%s" not found`, featureKey)
}
func (c DatafileProjectConfig) GetVariableByKey(featureKey, variableKey string) (entities.Variable, error) {
	var variable entities.Variable
	var err = fmt.Errorf(`variable with key "%s" not found`, featureKey)
	if feature, ok := c.featureMap[featureKey]; ok {
		if v, ok := feature.VariableMap[variableKey]; ok {
			variable = v
			err = nil
		}
	}
	return variable, err
}
func (c DatafileProjectConfig) GetAttributeByKey(key string) (entities.Attribute, error) {
	if attributeID, ok := c.attributeKeyToIDMap[key]; ok {
		if attribute, ok := c.attributeMap[attributeID]; ok {
			return attribute, nil
		}
	}
	return entities.Attribute{}, fmt.Errorf(`attribute with key "%s" not found`, key)
}
func (c DatafileProjectConfig) GetFeatureList() (featureList []entities.Feature) {
	for _, feature := range c.featureMap {
		featureList = append(featureList, feature)
	}
	return featureList
}
func (c DatafileProjectConfig) GetExperimentList() (experimentList []entities.Experiment) {
	for _, experiment := range c.experimentMap {
		experimentList = append(experimentList, experiment)
	}
	return experimentList
}
func (c DatafileProjectConfig) GetRolloutList() (rolloutList []entities.Rollout) {
	return c.rollouts
}