code: func (s *Server) getOrCreateAutopilotConfig() *autopilot.Config {
  	state := s.fsm.State()
  	_, config, err := state.AutopilotConfig()
  	if err != nil {
  		s.logger.Printf("[ERR] autopilot: failed to get config: %v", err)
  		return nil
  	}
  	if config != nil {
  		return config
  	}
  
  	if !ServersMeetMinimumVersion(s.LANMembers(), minAutopilotVersion) {
  		s.logger.Printf("[WARN] autopilot: can't initialize until all servers are >= %s", minAutopilotVersion.String())
  		return nil
  	}
  
  	config = s.config.AutopilotConfig
  	req := structs.AutopilotSetConfigRequest{Config: *config}
  	if _, err = s.raftApply(structs.AutopilotRequestType, req); err != nil {
  		s.logger.Printf("[ERR] autopilot: failed to initialize config: %v", err)
  		return nil
  	}
  
  	return config
  }
docs: // getOrCreateAutopilotConfig is used to get the autopilot config, initializing it if necessary