text: /**
   * The main AWS namespace
   */
  var AWS = { util: require('./util') };
  
  /**
   * @api private
   * @!macro [new] nobrowser
   *   @note This feature is not supported in the browser environment of the SDK.
   */
  var _hidden = {}; _hidden.toString(); // hack to parse macro
  
  /**
   * @api private
   */
  module.exports = AWS;
  
  AWS.util.update(AWS, {
  
    /**
     * @constant
     */
    VERSION: '2.776.0',
  
    /**
     * @api private
     */
    Signers: {},
  
    /**
     * @api private
     */
    Protocol: {
      Json: require('./protocol/json'),
      Query: require('./protocol/query'),
      Rest: require('./protocol/rest'),
      RestJson: require('./protocol/rest_json'),
      RestXml: require('./protocol/rest_xml')
    },
  
    /**
     * @api private
     */
    XML: {
      Builder: require('./xml/builder'),
      Parser: null // conditionally set based on environment
    },
  
    /**
     * @api private
     */
    JSON: {
      Builder: require('./json/builder'),
      Parser: require('./json/parser')
    },
  
    /**
     * @api private
     */
    Model: {
      Api: require('./model/api'),
      Operation: require('./model/operation'),
      Shape: require('./model/shape'),
      Paginator: require('./model/paginator'),
      ResourceWaiter: require('./model/resource_waiter')
    },
  
    /**
     * @api private
     */
    apiLoader: require('./api_loader'),
  
    /**
     * @api private
     */
    EndpointCache: require('../vendor/endpoint-cache').EndpointCache
  });
  require('./sequential_executor');
  require('./service');
  require('./config');
  require('./http');
  require('./event_listeners');
  require('./request');
  require('./response');
  require('./resource_waiter');
  require('./signers/request_signer');
  require('./param_validator');
  
  /**
   * @readonly
   * @return [AWS.SequentialExecutor] a collection of global event listeners that
   *   are attached to every sent request.
   * @see AWS.Request AWS.Request for a list of events to listen for
   * @example Logging the time taken to send a request
   *   AWS.events.on('send', function startSend(resp) {
   *     resp.startTime = new Date().getTime();
   *   }).on('complete', function calculateTime(resp) {
   *     var time = (new Date().getTime() - resp.startTime) / 1000;
   *     console.log('Request took ' + time + ' seconds');
   *   });
   *
   *   new AWS.S3().listBuckets(); // prints 'Request took 0.285 seconds'
   */
  AWS.events = new AWS.SequentialExecutor();
  
  //create endpoint cache lazily
  AWS.util.memoizedProperty(AWS, 'endpointCache', function() {
    return new AWS.EndpointCache(AWS.config.endpointCacheSize);
  }, true);
  