// Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

import 'dart:io';

void main() {
  print(FileMode.append);
  print(FileMode.read);
  print(FileMode.write);
  print(FileMode.writeOnly);
  print(FileMode.writeOnlyAppend);
  print(HttpStatus.continue_);
  print(HttpStatus.switchingProtocols);
  print(HttpStatus.ok);
  print(HttpStatus.created);
  print(HttpStatus.accepted);
  print(HttpStatus.nonAuthoritativeInformation);
  print(HttpStatus.noContent);
  print(HttpStatus.resetContent);
  print(HttpStatus.partialContent);
  print(HttpStatus.multipleChoices);
  print(HttpStatus.movedPermanently);
  print(HttpStatus.found);
  print(HttpStatus.movedTemporarily);
  print(HttpStatus.seeOther);
  print(HttpStatus.notModified);
  print(HttpStatus.useProxy);
  print(HttpStatus.temporaryRedirect);
  print(HttpStatus.badRequest);
  print(HttpStatus.unauthorized);
  print(HttpStatus.paymentRequired);
  print(HttpStatus.forbidden);
  print(HttpStatus.notFound);
  print(HttpStatus.methodNotAllowed);
  print(HttpStatus.notAcceptable);
  print(HttpStatus.proxyAuthenticationRequired);
  print(HttpStatus.requestTimeout);
  print(HttpStatus.conflict);
  print(HttpStatus.gone);
  print(HttpStatus.lengthRequired);
  print(HttpStatus.preconditionFailed);
  print(HttpStatus.requestEntityTooLarge);
  print(HttpStatus.requestUriTooLong);
  print(HttpStatus.unsupportedMediaType);
  print(HttpStatus.requestedRangeNotSatisfiable);
  print(HttpStatus.expectationFailed);
  print(HttpStatus.upgradeRequired);
  print(HttpStatus.internalServerError);
  print(HttpStatus.notImplemented);
  print(HttpStatus.badGateway);
  print(HttpStatus.serviceUnavailable);
  print(HttpStatus.gatewayTimeout);
  print(HttpStatus.httpVersionNotSupported);
  print(HttpStatus.networkConnectTimeoutError);
  print(systemEncoding);
  print(StdioType.terminal);
  print(StdioType.pipe);
  print(StdioType.file);
  print(StdioType.other);
  print(ProcessStartMode.normal);
  print(ProcessStartMode.inheritStdio);
  print(ProcessStartMode.detached);
  print(ProcessStartMode.detachedWithStdio);
  print(ProcessSignal.sighup);
  print(ProcessSignal.sigint);
  print(ProcessSignal.sigquit);
  print(ProcessSignal.sigill);
  print(ProcessSignal.sigtrap);
  print(ProcessSignal.sigabrt);
  print(ProcessSignal.sigbus);
  print(ProcessSignal.sigfpe);
  print(ProcessSignal.sigkill);
  print(ProcessSignal.sigusr1);
  print(ProcessSignal.sigsegv);
  print(ProcessSignal.sigusr2);
  print(ProcessSignal.sigpipe);
  print(ProcessSignal.sigalrm);
  print(ProcessSignal.sigterm);
  print(ProcessSignal.sigchld);
  print(ProcessSignal.sigcont);
  print(ProcessSignal.sigstop);
  print(ProcessSignal.sigtstp);
  print(ProcessSignal.sigttin);
  print(ProcessSignal.sigttou);
  print(ProcessSignal.sigurg);
  print(ProcessSignal.sigxcpu);
  print(ProcessSignal.sigxfsz);
  print(ProcessSignal.sigvtalrm);
  print(ProcessSignal.sigprof);
  print(ProcessSignal.sigwinch);
  print(ProcessSignal.sigpoll);
  print(ProcessSignal.sigsys);
  print(InternetAddressType.IPv4);
  print(InternetAddressType.IPv6);
  print(InternetAddressType.any);
  print(InternetAddress.loopbackIPv4);
  print(InternetAddress.loopbackIPv6);
  print(InternetAddress.anyIPv4);
  print(InternetAddress.anyIPv6);
  print(SocketDirection.receive);
  print(SocketDirection.send);
  print(SocketDirection.both);
  print(SocketOption.tcpNoDelay);
  print(RawSocketEvent.read);
  print(RawSocketEvent.write);
  print(RawSocketEvent.readClosed);
  print(RawSocketEvent.closed);
  print(FileSystemEntityType.file);
  print(FileSystemEntityType.directory);
  print(FileSystemEntityType.link);
  print(FileSystemEntityType.notFound);
  print(FileSystemEvent.create);
  print(FileSystemEvent.modify);
  print(FileSystemEvent.delete);
  print(FileSystemEvent.move);
  print(FileSystemEvent.all);
  print(ZLibOption.minWindowBits);
  print(ZLibOption.maxWindowBits);
  print(ZLibOption.defaultWindowBits);
  print(ZLibOption.minLevel);
  print(ZLibOption.maxLevel);
  print(ZLibOption.defaultLevel);
  print(ZLibOption.minMemLevel);
  print(ZLibOption.maxMemLevel);
  print(ZLibOption.defaultMemLevel);
  print(ZLibOption.strategyFiltered);
  print(ZLibOption.strategyHuffmanOnly);
  print(ZLibOption.strategyRle);
  print(ZLibOption.strategyFixed);
  print(ZLibOption.strategyDefault);
  print(zlib);
  print(gzip);
  print(FileMode.read);
  print(FileMode.write);
  print(FileMode.append);
  print(FileMode.writeOnly);
  print(FileMode.writeOnlyAppend);
  print(FileLock.shared);
  print(FileLock.exclusive);
  print(FileLock.blockingShared);
  print(FileLock.blockingExclusive);
  print(WebSocketStatus.normalClosure);
  print(WebSocketStatus.goingAway);
  print(WebSocketStatus.protocolError);
  print(WebSocketStatus.unsupportedData);
  print(WebSocketStatus.reserved1004);
  print(WebSocketStatus.noStatusReceived);
  print(WebSocketStatus.abnormalClosure);
  print(WebSocketStatus.invalidFramePayloadData);
  print(WebSocketStatus.policyViolation);
  print(WebSocketStatus.messageTooBig);
  print(WebSocketStatus.missingMandatoryExtension);
  print(WebSocketStatus.internalServerError);
  print(WebSocketStatus.reserved1015);
  print(CompressionOptions.compressionDefault);
  print(CompressionOptions.compressionOff);
  print(WebSocket.connecting);
  print(WebSocket.open);
  print(WebSocket.closing);
  print(WebSocket.closed);
  print(HttpHeaders.acceptHeader);
  print(HttpHeaders.acceptCharsetHeader);
  print(HttpHeaders.acceptEncodingHeader);
  print(HttpHeaders.acceptLanguageHeader);
  print(HttpHeaders.acceptRangesHeader);
  print(HttpHeaders.ageHeader);
  print(HttpHeaders.allowHeader);
  print(HttpHeaders.authorizationHeader);
  print(HttpHeaders.cacheControlHeader);
  print(HttpHeaders.connectionHeader);
  print(HttpHeaders.contentEncodingHeader);
  print(HttpHeaders.contentLanguageHeader);
  print(HttpHeaders.contentLengthHeader);
  print(HttpHeaders.contentLocationHeader);
  print(HttpHeaders.contentMD5Header);
  print(HttpHeaders.contentRangeHeader);
  print(HttpHeaders.contentTypeHeader);
  print(HttpHeaders.dateHeader);
  print(HttpHeaders.etagHeader);
  print(HttpHeaders.expectHeader);
  print(HttpHeaders.expiresHeader);
  print(HttpHeaders.fromHeader);
  print(HttpHeaders.hostHeader);
  print(HttpHeaders.ifMatchHeader);
  print(HttpHeaders.ifModifiedSinceHeader);
  print(HttpHeaders.ifNoneMatchHeader);
  print(HttpHeaders.ifRangeHeader);
  print(HttpHeaders.ifUnmodifiedSinceHeader);
  print(HttpHeaders.lastModifiedHeader);
  print(HttpHeaders.locationHeader);
  print(HttpHeaders.maxForwardsHeader);
  print(HttpHeaders.pragmaHeader);
  print(HttpHeaders.proxyAuthenticateHeader);
  print(HttpHeaders.proxyAuthorizationHeader);
  print(HttpHeaders.rangeHeader);
  print(HttpHeaders.refererHeader);
  print(HttpHeaders.retryAfterHeader);
  print(HttpHeaders.serverHeader);
  print(HttpHeaders.teHeader);
  print(HttpHeaders.trailerHeader);
  print(HttpHeaders.transferEncodingHeader);
  print(HttpHeaders.upgradeHeader);
  print(HttpHeaders.userAgentHeader);
  print(HttpHeaders.varyHeader);
  print(HttpHeaders.viaHeader);
  print(HttpHeaders.warningHeader);
  print(HttpHeaders.wwwAuthenticateHeader);
  print(HttpHeaders.cookieHeader);
  print(HttpHeaders.setCookieHeader);
  print(HttpHeaders.generalHeaders);
  print(HttpHeaders.entityHeaders);
  print(HttpHeaders.responseHeaders);
  print(HttpHeaders.requestHeaders);
  print(ContentType.text);
  print(ContentType.html);
  print(ContentType.json);
  print(ContentType.binary);
  print(HttpClient.defaultHttpPort);
  print(HttpClient.defaultHttpsPort);
}
