Revert r87635, r87637, r87639, r87643 (MW_MIN_PHP_VERSION etc.): breaks HipHop support.
authorTim Starling <tstarling@users.mediawiki.org>
Sun, 15 May 2011 13:21:16 +0000 (13:21 +0000)
committerTim Starling <tstarling@users.mediawiki.org>
Sun, 15 May 2011 13:21:16 +0000 (13:21 +0000)
22 files changed:
api.php
includes/DefaultSettings.php
includes/Defines.php
includes/Export.php
includes/Feed.php
includes/GlobalFunctions.php
includes/HttpFunctions.php
includes/OutputPage.php
includes/Setup.php
includes/installer/DatabaseUpdater.php
includes/installer/Installer.php
includes/installer/MysqlInstaller.php
includes/installer/OracleInstaller.php
includes/installer/WebInstallerOutput.php
includes/resourceloader/ResourceLoaderStartUpModule.php
includes/specials/SpecialVersion.php
index.php
load.php
maintenance/Maintenance.php
maintenance/install.php
maintenance/update.php
tests/parserTests.php

diff --git a/api.php b/api.php
index 1d12e03..f55f853 100644 (file)
--- a/api.php
+++ b/api.php
@@ -37,9 +37,6 @@
 // So extensions (and other code) can check whether they're running in API mode
 define( 'MW_API', true );
 
-// Include global constants, including MW_VERSION and MW_MIN_PHP_VERSION
-require_once( dirname( __FILE__ ) . '/includes/Defines.php' );
-
 // We want a plain message on catastrophic errors that machines can identify
 function wfDie( $msg = '' ) {
        header( $_SERVER['SERVER_PROTOCOL'] . ' 500 MediaWiki configuration Error', true, 500 );
@@ -48,10 +45,9 @@ function wfDie( $msg = '' ) {
 }
 
 // Die on unsupported PHP versions
-if( !function_exists( 'version_compare' ) || version_compare( phpversion(), MW_MIN_PHP_VERSION ) < 0 ){
-       $version = htmlspecialchars( MW_VERSION );
-       $phpversion = htmlspecialchars( MW_MIN_PHP_VERSION );
-       wfDie( "MediaWiki $version requires at least PHP version $phpversion." );
+if( !function_exists( 'version_compare' ) || version_compare( phpversion(), '5.2.3' ) < 0 ){
+       $version = htmlspecialchars( $wgVersion );
+       wfDie( "MediaWiki $version requires at least PHP version 5.2.3." );
 }
 
 // Initialise common code.
index a04550b..1a4ef30 100644 (file)
@@ -33,11 +33,8 @@ if ( !defined( 'MW_COMPILED' ) ) {
 $wgConf = new SiteConfiguration;
 /** @endcond */
 
-/**
- * MediaWiki version number
- * @deprecated use the constant MW_VERSION instead
- */
-$wgVersion = MW_VERSION;
+/** MediaWiki version number */
+$wgVersion = '1.19alpha';
 
 /** Name of the site. It must be changed in LocalSettings.php */
 $wgSitename         = 'MediaWiki';
@@ -4345,16 +4342,6 @@ $wgUseNPPatrol = true;
 /** Provide syndication feeds (RSS, Atom) for, e.g., Recentchanges, Newpages */
 $wgFeed = true;
 
-/**
- * Available feeds objects
- * Should probably only be defined when a page is syndicated ie when
- * $wgOut->isSyndicated() is true
- */
-$wgFeedClasses = array(
-       'rss' => 'RSSFeed',
-       'atom' => 'AtomFeed',
-);
-
 /** Set maximum number of results to return in syndication feeds (RSS, Atom) for
  * eg Recentchanges, Newpages. */
 $wgFeedLimit = 50;
index 770f569..b4a8d7b 100644 (file)
@@ -1,8 +1,6 @@
 <?php
 /**
- * Global constants declarations.  Do *NOT* include *anything* in this file which is
- * not a define() declaration; this file is included in all sorts of scopes and must
- * be parseable by PHP 4 without errors.
+ * A few constants that might be needed during LocalSettings.php.
  *
  * Note: these constants must all be resolvable at compile time by HipHop, 
  * since this file will not be executed during request startup for a compiled
  * @file
  */
 
-/**@{
+/**
  * Version constants for the benefit of extensions
  */
-define( 'MW_VERSION', '1.19alpha' );
 define( 'MW_SPECIALPAGE_VERSION', 2 );
 
-/**
- * Minimum version of PHP required to run; entry points will die
- * if they try to run on a version older than this
- */
-define( 'MW_MIN_PHP_VERSION', '5.2.3' );
-
-define( 'MW_MIN_MYSQL_VERSION', '4.0.14' );
-define( 'MW_MIN_ORACLE_VERSION', '9.0.1' );
-
-/**@}*/
-
 /**@{
  * Database related constants
  */
@@ -99,6 +85,16 @@ define( 'NS_IMAGE', NS_FILE );
 define( 'NS_IMAGE_TALK', NS_FILE_TALK );
 /**@}*/
 
+/**
+ * Available feeds objects
+ * Should probably only be defined when a page is syndicated ie when
+ * $wgOut->isSyndicated() is true
+ */
+$wgFeedClasses = array(
+       'rss' => 'RSSFeed',
+       'atom' => 'AtomFeed',
+);
+
 /**@{
  * Cache type
  */
index 2c8a748..0dbba91 100644 (file)
@@ -406,7 +406,8 @@ class XmlDumpWriter {
        }
 
        function generator() {
-               return Xml::element( 'generator', array(), "MediaWiki " . MW_VERSION );
+               global $wgVersion;
+               return Xml::element( 'generator', array(), "MediaWiki $wgVersion" );
        }
 
        function homelink() {
index 8535eaa..183b8e6 100644 (file)
@@ -301,6 +301,7 @@ class RSSFeed extends ChannelFeed {
         * Ouput an RSS 2.0 header
         */
        function outHeader() {
+               global $wgVersion;
 
                $this->outXmlHeader();
                ?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
@@ -309,7 +310,7 @@ class RSSFeed extends ChannelFeed {
                <link><?php print $this->getUrl() ?></link>
                <description><?php print $this->getDescription() ?></description>
                <language><?php print $this->getLanguage() ?></language>
-               <generator>MediaWiki <?php print MW_VERSION ?></generator>
+               <generator>MediaWiki <?php print $wgVersion ?></generator>
                <lastBuildDate><?php print $this->formatTime( wfTimestampNow() ) ?></lastBuildDate>
 <?php
        }
@@ -360,6 +361,8 @@ class AtomFeed extends ChannelFeed {
         * Outputs a basic header for Atom 1.0 feeds.
         */
        function outHeader() {
+               global $wgVersion;
+
                $this->outXmlHeader();
                ?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="<?php print $this->getLanguage() ?>">
                <id><?php print $this->getFeedId() ?></id>
@@ -368,7 +371,7 @@ class AtomFeed extends ChannelFeed {
                <link rel="alternate" type="text/html" href="<?php print $this->getUrl() ?>"/>
                <updated><?php print $this->formatTime( wfTimestampNow() ) ?>Z</updated>
                <subtitle><?php print $this->getDescription() ?></subtitle>
-               <generator>MediaWiki <?php print MW_VERSION ?></generator>
+               <generator>MediaWiki <?php print $wgVersion ?></generator>
 
 <?php
        }
index a38d5a7..f00ef39 100644 (file)
@@ -2500,8 +2500,10 @@ function wfUsePHP( $req_ver ) {
  *                 a float
  */
 function wfUseMW( $req_ver ) {
-       if ( version_compare( MW_VERSION, (string)$req_ver, '<' ) ) {
-               throw new MWException( "MediaWiki $req_ver required--this is only " . MW_VERSION );
+       global $wgVersion;
+
+       if ( version_compare( $wgVersion, (string)$req_ver, '<' ) ) {
+               throw new MWException( "MediaWiki $req_ver required--this is only $wgVersion" );
        }
 }
 
index 72def79..841b341 100644 (file)
@@ -112,7 +112,8 @@ class Http {
         * @return String
         */
        public static function userAgent() {
-               return "MediaWiki/" . MW_VERSION;
+               global $wgVersion;
+               return "MediaWiki/$wgVersion";
        }
 
        /**
index 432082c..6b079e6 100644 (file)
@@ -2672,7 +2672,7 @@ class OutputPage {
         */
        public function getHeadLinks( Skin $sk, $addContentType = false ) {
                global $wgUniversalEditButton, $wgFavicon, $wgAppleTouchIcon, $wgEnableAPI,
-                       $wgSitename, $wgHtml5, $wgMimeType,
+                       $wgSitename, $wgVersion, $wgHtml5, $wgMimeType,
                        $wgFeed, $wgOverrideSiteFeed, $wgAdvertisedFeedTypes,
                        $wgEnableDublinCoreRdf, $wgEnableCreativeCommonsRdf,
                        $wgDisableLangConversion, $wgCanonicalLanguageLinks, $wgContLang,
@@ -2699,7 +2699,7 @@ class OutputPage {
 
                $tags[] = Html::element( 'meta', array(
                        'name' => 'generator',
-                       'content' => "MediaWiki " . MW_VERSION,
+                       'content' => "MediaWiki $wgVersion",
                ) );
 
                $p = "{$this->mIndexPolicy},{$this->mFollowPolicy}";
index e3be061..3ca8b2c 100644 (file)
@@ -23,7 +23,6 @@ $fname = 'Setup.php';
 wfProfileIn( $fname );
 
 // Check to see if we are at the file scope
-// FIXME: use a different test here, maybe a constant defined at the top of DefaultSettings.php?
 if ( !isset( $wgVersion ) ) {
        echo "Error, Setup.php must be included from the file scope, after DefaultSettings.php\n";
        die( 1 );
index fa4d74a..01ff690 100644 (file)
@@ -191,6 +191,7 @@ abstract class DatabaseUpdater {
         * @param $what Array: what updates to perform
         */
        public function doUpdates( $what = array( 'core', 'extensions', 'purge' ) ) {
+               global $wgVersion;
 
                $what = array_flip( $what );
                if ( isset( $what['core'] ) ) {
@@ -201,7 +202,7 @@ abstract class DatabaseUpdater {
                        $this->runUpdates( $this->getExtensionUpdates(), true );
                }
 
-               $this->setAppliedUpdates( MW_VERSION, $this->updates );
+               $this->setAppliedUpdates( $wgVersion, $this->updates );
 
                if( isset( $what['purge'] ) ) {
                        $this->purgeCache();
index 50867bc..7cd2983 100644 (file)
@@ -24,8 +24,7 @@
 abstract class Installer {
 
        // This is the absolute minimum PHP version we can support
-       // @deprecated since 1.18
-       const MINIMUM_PHP_VERSION = MW_MIN_PHP_VERSION;
+       const MINIMUM_PHP_VERSION = '5.2.3';
 
        /**
         * @var array
@@ -379,11 +378,11 @@ abstract class Installer {
         */
        public function doEnvironmentChecks() {
                $phpVersion = phpversion();
-               if( version_compare( $phpVersion, MW_MIN_PHP_VERSION, '>=' ) ) {
+               if( version_compare( $phpVersion, self::MINIMUM_PHP_VERSION, '>=' ) ) {
                        $this->showMessage( 'config-env-php', $phpVersion );
                        $good = true;
                } else {
-                       $this->showMessage( 'config-env-php-toolow', $phpVersion, MW_MIN_PHP_VERSION );
+                       $this->showMessage( 'config-env-php-toolow', $phpVersion, self::MINIMUM_PHP_VERSION );
                        $good = false;
                }
 
index fb96e32..5046df3 100644 (file)
@@ -31,6 +31,8 @@ class MysqlInstaller extends DatabaseInstaller {
 
        public $supportedEngines = array( 'InnoDB', 'MyISAM' );
 
+       public $minimumVersion = '4.0.14';
+
        public $webUserPrivs = array(
                'DELETE',
                'INSERT',
@@ -102,8 +104,8 @@ class MysqlInstaller extends DatabaseInstaller {
 
                // Check version
                $version = $conn->getServerVersion();
-               if ( version_compare( $version, MW_MIN_MYSQL_VERSION ) < 0 ) {
-                       return Status::newFatal( 'config-mysql-old', MW_MIN_MYSQL_VERSION, $version );
+               if ( version_compare( $version, $this->minimumVersion ) < 0 ) {
+                       return Status::newFatal( 'config-mysql-old', $this->minimumVersion, $version );
                }
 
                return $status;
index 77442a6..8575830 100644 (file)
@@ -26,6 +26,8 @@ class OracleInstaller extends DatabaseInstaller {
                '_OracleDefTS' => 'USERS',
                '_OracleTempTS' => 'TEMP'
        );
+       
+       public $minimumVersion = '9.0.1'; // 9iR1
 
        protected $connError = null;
 
@@ -118,8 +120,8 @@ class OracleInstaller extends DatabaseInstaller {
 
                // Check version
                $version = $conn->getServerVersion();
-               if ( version_compare( $version, MW_MIN_ORACLE_VERSION ) < 0 ) {
-                       return Status::newFatal( 'config-oracle-old', MW_MIN_ORACLE_VERSION, $version );
+               if ( version_compare( $version, $this->minimumVersion ) < 0 ) {
+                       return Status::newFatal( 'config-oracle-old', $this->minimumVersion, $version );
                }
 
                return $status;
index 7366888..443cf5a 100644 (file)
@@ -270,7 +270,8 @@ class WebInstallerOutput {
        }
 
        public function outputTitle() {
-               echo htmlspecialchars( wfMsg( 'config-title', MW_VERSION ) );
+               global $wgVersion;
+               echo htmlspecialchars( wfMsg( 'config-title', $wgVersion ) );
        }
 
        public function getJQuery() {
index b63d4df..29c4645 100644 (file)
@@ -35,7 +35,7 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
        protected function getConfig( $context ) {
                global $wgLoadScript, $wgScript, $wgStylePath, $wgScriptExtension,
                        $wgArticlePath, $wgScriptPath, $wgServer, $wgContLang,
-                       $wgVariantArticlePath, $wgActionPaths, $wgUseAjax,
+                       $wgVariantArticlePath, $wgActionPaths, $wgUseAjax, $wgVersion, 
                        $wgEnableAPI, $wgEnableWriteAPI, $wgDBname, $wgEnableMWSuggest,
                        $wgSitename, $wgFileExtensions, $wgExtensionAssetsPath, $wgProto,
                        $wgCookiePrefix, $wgResourceLoaderMaxQueryLength, $wgLegacyJavaScriptGlobals;
@@ -71,7 +71,7 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
                        'wgServer' => $wgServer,
                        'wgUserLanguage' => $context->getLanguage(),
                        'wgContentLanguage' => $wgContLang->getCode(),
-                       'wgVersion' => MW_VERSION,
+                       'wgVersion' => $wgVersion,
                        'wgEnableAPI' => $wgEnableAPI,
                        'wgEnableWriteAPI' => $wgEnableWriteAPI,
                        'wgDefaultDateFormat' => $wgContLang->getDefaultDateFormat(),
index 3a8bdc2..53c5e87 100644 (file)
@@ -159,16 +159,16 @@ class SpecialVersion extends SpecialPage {
         * @return mixed
         */
        public static function getVersion( $flags = '' ) {
-               global $IP;
+               global $wgVersion, $IP;
                wfProfileIn( __METHOD__ );
 
                $info = self::getSvnInfo( $IP );
                if ( !$info ) {
-                       $version = MW_VERSION;
+                       $version = $wgVersion;
                } elseif( $flags === 'nodb' ) {
-                       $version = MW_VERSION . " (r{$info['checkout-rev']})";
+                       $version = "$wgVersion (r{$info['checkout-rev']})";
                } else {
-                       $version = MW_VERSION . ' ' .
+                       $version = $wgVersion . ' ' .
                                wfMsg(
                                        'version-svn-revision',
                                        isset( $info['directory-rev'] ) ? $info['directory-rev'] : '',
@@ -187,13 +187,11 @@ class SpecialVersion extends SpecialPage {
         * @return mixed
         */
        public static function getVersionLinked() {
-               global $IP;
+               global $wgVersion, $IP;
                wfProfileIn( __METHOD__ );
 
                $info = self::getSvnInfo( $IP );
 
-               $version = MW_VERSION;
-
                if ( isset( $info['checkout-rev'] ) ) {
                        $linkText = wfMsg(
                                'version-svn-revision',
@@ -202,10 +200,12 @@ class SpecialVersion extends SpecialPage {
                        );
 
                        if ( isset( $info['viewvc-url'] ) ) {
-                               $version .= " [{$info['viewvc-url']} $linkText]";
+                               $version = "$wgVersion [{$info['viewvc-url']} $linkText]";
                        } else {
-                               $version .= " $linkText";
+                               $version = "$wgVersion $linkText";
                        }
+               } else {
+                       $version = $wgVersion;
                }
 
                wfProfileOut( __METHOD__ );
@@ -681,10 +681,9 @@ class SpecialVersion extends SpecialPage {
 
        function showEasterEgg() {
                $rx = $rp = $xe = '';
-               $version = MW_VERSION;
                $alpha = array("", "kbQW", "\$\n()");
                $beta = implode( "', '", $alpha);
-               $juliet = 'echo $delta + strrev($foxtrot) - $alfa + $version . base64_decode($bravo) * $charlie';
+               $juliet = 'echo $delta + strrev($foxtrot) - $alfa + $wgVersion . base64_decode($bravo) * $charlie';
                for ( $i = 1; $i <= 4; $i++ ) {
                        $rx .= '([^j]*)J';
                        $rp .= "+(\\$i)";
index d203f75..ff50131 100644 (file)
--- a/index.php
+++ b/index.php
  * @file
  */
 
-// Load global constants, including MW_VERSION and MW_MIN_PHP_VERSION
-require_once( dirname( __FILE__ ) . '/includes/Defines.php' );
-
 // Bail on old versions of PHP.  Pretty much every other file in the codebase
 // has structures (try/catch, foo()->bar(), etc etc) which throw parse errors in PHP 4.
 // Setup.php and ObjectCache.php have structures invalid in PHP 5.0 and 5.1, respectively.
-if ( !function_exists( 'version_compare' ) || version_compare( phpversion(), MW_MIN_PHP_VERSION ) < 0 ) {
+if ( !function_exists( 'version_compare' ) || version_compare( phpversion(), '5.2.3' ) < 0 ) {
        $phpversion = htmlspecialchars( phpversion() );
-       $reqVersion = htmlspecialchars( MW_MIN_PHP_VERSION );
        $errorMsg = <<<ENDL
                <p>
-                       MediaWiki requires PHP $reqVersion or higher. You are running PHP $phpversion.
+                       MediaWiki requires PHP 5.2.3 or higher. You are running PHP $phpversion.
                </p>
                <p>
                        Please consider <a href="http://www.php.net/downloads.php">upgrading your copy of PHP</a>.
@@ -164,8 +160,11 @@ $mediaWiki->restInPeace();
  * @param $errorMsg String fully-escaped HTML
  */
 function wfDie( $errorMsg ){
-       global $wgLogo;
-       $version = htmlspecialchars( MW_VERSION );
+       // Use the version set in DefaultSettings if possible, but don't rely on it
+       global $wgVersion, $wgLogo;
+       $version = isset( $wgVersion ) && $wgVersion
+               ? htmlspecialchars( $wgVersion )
+               : '';
        $logo = isset( $wgLogo ) && $wgLogo
                ? $wgLogo
                : 'http://upload.wikimedia.org/wikipedia/commons/1/1c/MediaWiki_logo.png';
index ff6d9d7..7fff7c4 100644 (file)
--- a/load.php
+++ b/load.php
@@ -30,14 +30,10 @@ function wfDie( $msg = '' ) {
        die( 1 );
 }
 
-// Load global constants, including MW_VERSION and MW_MIN_PHP_VERSION
-require_once( dirname( __FILE__ ) . '/includes/Defines.php' );
-
 // Die on unsupported PHP versions
-if( !function_exists( 'version_compare' ) || version_compare( phpversion(), MW_MIN_PHP_VERSION ) < 0 ){
-       $version = htmlspecialchars( MW_VERSION );
-       $phpversion = htmlspecialchars( MW_MIN_PHP_VERSION );
-       wfDie( "MediaWiki $version requires at least PHP version $phpversion." );
+if( !function_exists( 'version_compare' ) || version_compare( phpversion(), '5.2.3' ) < 0 ){
+       $version = htmlspecialchars( $wgVersion );
+       wfDie( "MediaWiki $version requires at least PHP version 5.2.3." );
 }
 
 require ( dirname( __FILE__ ) . '/includes/WebStart.php' );
index db32201..9d4da81 100644 (file)
@@ -20,9 +20,6 @@
  * @defgroup Maintenance Maintenance
  */
 
-// Include global constants, including MW_VERSION and MW_MIN_PHP_VERSION
-require_once( dirname( dirname( __FILE__ ) ) . '/includes/Defines.php' );
-
 // Define this so scripts can easily find doMaintenance.php
 define( 'RUN_MAINTENANCE_IF_MAIN', dirname( __FILE__ ) . '/doMaintenance.php' );
 define( 'DO_MAINTENANCE', RUN_MAINTENANCE_IF_MAIN ); // original name, harmless
@@ -30,10 +27,10 @@ define( 'DO_MAINTENANCE', RUN_MAINTENANCE_IF_MAIN ); // original name, harmless
 $maintClass = false;
 
 // Make sure we're on PHP5 or better
-if ( version_compare( PHP_VERSION, MW_MIN_PHP_VERSION ) < 0 ) {
-       die ( "Sorry! This version of MediaWiki requires PHP " . MW_MIN_PHP_VERSION . "; you are running " .
+if ( version_compare( PHP_VERSION, '5.2.3' ) < 0 ) {
+       die ( "Sorry! This version of MediaWiki requires PHP 5.2.3; you are running " .
                PHP_VERSION . ".\n\n" .
-               "If you are sure you already have PHP " . MW_MIN_PHP_VERSION . " or higher installed, it may be\n" .
+               "If you are sure you already have PHP 5.2.3 or higher installed, it may be\n" .
                "installed in a different path from PHP " . PHP_VERSION . ". Check with your system\n" .
                "administrator.\n" );
 }
index a1ac9f0..57e669d 100644 (file)
  * @see wfWaitForSlaves()
  */
 
-// Include global constants, including MW_VERSION and MW_MIN_PHP_VERSION
-require_once( dirname( dirname( __FILE__ ) ) . '/includes/Defines.php' );
-
-if ( !function_exists( 'version_compare' ) || ( version_compare( phpversion(), MW_MIN_PHP_VERSION ) < 0 ) ) {
-       echo "You are using PHP version " . phpversion() . " but MediaWiki needs PHP " .
-               MW_MIN_PHP_VERSION . " or higher. ABORTING.\n" .
-               "Check if you have a newer php executable with a different name, such as php5.\n";
+if ( !function_exists( 'version_compare' ) || ( version_compare( phpversion(), '5.2.3' ) < 0 ) ) {
+       echo "You are using PHP version " . phpversion() . " but MediaWiki needs PHP 5.2.3 or higher. ABORTING.\n" .
+       "Check if you have a newer php executable with a different name, such as php5.\n";
        die( 1 );
 }
 
index 9f7b93c..ede6ebe 100644 (file)
  * @ingroup Maintenance
  */
 
-// Include global constants, including MW_VERSION and MW_MIN_PHP_VERSION
-require_once( dirname( dirname( __FILE__ ) ) . '/includes/Defines.php' );
-
-if ( !function_exists( 'version_compare' ) || ( version_compare( phpversion(), MW_MIN_PHP_VERSION ) < 0 ) ) {
-       echo "You are using PHP version " . phpversion() . " but MediaWiki needs PHP " .
-               MW_MIN_PHP_VERSION . "or higher. ABORTING.\n" .
+if ( !function_exists( 'version_compare' ) || ( version_compare( phpversion(), '5.2.3' ) < 0 ) ) {
+       echo "You are using PHP version " . phpversion() . " but MediaWiki needs PHP 5.2.3 or higher. ABORTING.\n" .
        "Check if you have a newer php executable with a different name, such as php5.\n";
        die( 1 );
 }
index 761ba49..580f6fb 100644 (file)
@@ -30,9 +30,8 @@ $optionsWithArgs = array( 'regex', 'seed', 'setversion' );
 require_once( dirname( __FILE__ ) . '/../maintenance/commandLine.inc' );
 
 if ( isset( $options['help'] ) ) {
-       $version = MW_VERSION;
        echo <<<ENDS
-MediaWiki $version parser test suite
+MediaWiki $wgVersion parser test suite
 Usage: php parserTests.php [options...]
 
 Options: