# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.


#
# Monitor - server side components
#

#
# NOI18N: none of these should be translated or localized,
#         and this file should not be listed in the l10n.list
#

# Exit Codes
sc100=100: Continue
sc101=101: Switching Protocols
sc200=200: OK
sc201=201: Created
sc202=202: Accepted
sc203=203: Non-Authoritative Information
sc204=204: No Content
sc205=205: Reset Content
sc206=206: Partial Content
sc300=300: Multiple Choices
sc301=301: Moved Permanently
sc302=302: Found
sc303=303: See Other
sc304=304: Not Modified
sc305=305: Use Proxy
sc307=307: Temporary Redirect
sc400=400: Bad Request
sc401=401: Unauthorized
sc402=402: Payment Required
sc403=403: Forbidden
sc404=404: Not Found
sc405=405: Method Not Allowed
sc406=406: Not Acceptable
sc407=407: Proxy Authentication Required
sc408=408: Request Timeout
sc409=409: Conflict
sc410=410: Gone
sc411=411: Length Required
sc412=412: Precondition Failed
sc413=413: Request Entity Too Large
sc414=414: Request-URI Too Long
sc415=415: Unsupported Media Type
sc416=416: Requested Range Not Satisfiable
sc417=417: Expectation Failed
sc500=500: Internal Server Error
sc501=501: Not Implemented
sc502=502: Bad Gateway
sc503=503: Service Unavailable
sc504=504: Gateway Timeout
sc505=505: HTTP Version Not Supported
