AUTHN_RETRY=You are already authenticated. Retry accessing the original document.
# The user's authentication session could not be found.
AUTHN_UNKNOWN_SESSION=Could not find session; please try again. If the problem continues, please enable session cookies in your browser.
AUTHN_NOT_STARTED=No authentication attempt started.
# The authorization request was invalid because it didn't contain a URL to
# check.
AUTHZ_BAD_QUERY_NO_RESOURCE=Queries need a resource.
# The authorization request was invalid because it didn't contain a user to
# check.
AUTHZ_BAD_QUERY_NO_SUBJECT=Queries need a subject.
# The authorization request could not be processed because it contained multiple
# queries, but they were not all for the same user.
AUTHZ_BAD_QUERY_NOT_SAME_USER=All queries must be for the same subject.
# The request was apparently invalid, because we were unable to parse the
# expected JavaScript Object Notation data.
HTTP_BAD_REQUEST_INVALID_JSON=Error 400: Bad Request. Could not parse JSON.
# The request could not be decoded.
HTTP_BAD_REQUEST_ERROR_DECODING=Error 400: Bad Request. Error decoding message.
# The request did not pass required security rules.
HTTP_BAD_REQUEST_SECURITY_ERROR=Error 400: Bad Request. Security error while \
  decoding message.
# The client is not allowed to access the requested URL.
HTTP_FORBIDDEN=Error 403: Forbidden
# The client is not allowed to access the requested URL since they could not be
# authenticated.
HTTP_FORBIDDEN_AUTHN_FAILURE=Error 403: Forbidden. You were not authenticated.
# The client is not allowed to access the requested URL since it will use the
# information in an unsupported way.
HTTP_FORBIDDEN_SECMGR=Error 403: Forbidden. Requests from the GSA's Security \
  Manager are always denied, since HEAD requests for checking authorization \
  are not supported.
HTTP_NOT_FOUND=Error 404: Not Found
# The HTTP request had an unsupported method for the URL requested. The method
# in HTTP is typically GET, POST, or HEAD, but others exist as well.
HTTP_BAD_METHOD=Error 405: Method Not Allowed
# The request was missing a header, or the expected header was invalid.
HTTP_CONFLICT_INVALID_HEADER=Error 409: Conflict. You must provide a valid {0} \
  HTTP header.
# The server encountered an error of some sort while processing the request.
HTTP_INTERNAL_ERROR=Error 500: Internal Server Error
# Shown when adaptor version is not known.
STATS_VERSION_UNKNOWN=Unknown
# The name of a status that monitors whether the GSA has made a request
# recently.
STATUS_CRAWLING=GSA Crawling
# There have been no requests from the GSA within the past day.
STATUS_CRAWLING_NO_ACCESSES_IN_PAST_DAY=No accesses within the past day
# The name of a status that monitors the error rate affecting the retriever,
# which responds with document contents when requested.
STATUS_ERROR_RATE=Retriever Error Rate
# The percentage of errors occuring. {0} is an integer.
STATUS_ERROR_RATE_RATE=Error rate: {0}%
# The name of a status that monitors whether the last data feed to the GSA was
# successful.
STATUS_FEED=Feed Pushing
# The last data feed was interrupted before completion.
STATUS_FEED_INTERRUPTED=Push was interrupted
