code: func prepareTemplates(templatesPath string) *templates.Bundle {
  	return &templates.Bundle{
  		Loader:          templates.FileSystemLoader(templatesPath),
  		DebugMode:       info.IsDevAppServer,
  		DefaultTemplate: "base",
  		DefaultArgs: func(c context.Context, e *templates.Extra) (templates.Args, error) {
  			loginURL, err := auth.LoginURL(c, e.Request.URL.RequestURI())
  			if err != nil {
  				return nil, err
  			}
  			logoutURL, err := auth.LogoutURL(c, e.Request.URL.RequestURI())
  			if err != nil {
  				return nil, err
  			}
  			token, err := xsrf.Token(c)
  			if err != nil {
  				return nil, err
  			}
  			return templates.Args{
  				"AppVersion":  strings.Split(info.VersionID(c), ".")[0],
  				"IsAnonymous": auth.CurrentIdentity(c) == identity.AnonymousIdentity,
  				"User":        auth.CurrentUser(c),
  				"LoginURL":    loginURL,
  				"LogoutURL":   logoutURL,
  				"XsrfToken":   token,
  				"HandlerDuration": func() time.Duration {
  					return clock.Now(c).Sub(startTime(c))
  				},
  			}, nil
  		},
  	}
  }
docs: // prepareTemplates configures templates.Bundle used by all UI handlers.
  //
  // In particular it includes a set of default arguments passed to all templates.