<?php
    /**
     * This file is AUTOMATICALLY GENERATED. Do not edit manually. See thunderbirdDetails.class.php for details.
     */
    require_once dirname(__FILE__).'/productDetails.class.php';

    require_once("LATEST_THUNDERBIRD_VERSION.php");

    class thunderbirdBuildDetails extends productDetails {

        var $primary_builds = array(
            'ar' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.1), 'OS X' => array('filesize' => 50.8), 'Linux' => array('filesize' => 31.8))),
            'ast' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.1), 'OS X' => array('filesize' => 50.8), 'Linux' => array('filesize' => 31.7))),
            'be' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.1), 'OS X' => array('filesize' => 50.8), 'Linux' => array('filesize' => 31.8))),
            'bg' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.4), 'OS X' => array('filesize' => 51.1), 'Linux' => array('filesize' => 32.1))),
            'bn-BD' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.2), 'OS X' => array('filesize' => 50.9), 'Linux' => array('filesize' => 31.9))),
            'br' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.8), 'OS X' => array('filesize' => 52.0), 'Linux' => array('filesize' => 33.1))),
            'ca' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.4), 'OS X' => array('filesize' => 51.2), 'Linux' => array('filesize' => 32.2))),
            'cs' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.1), 'OS X' => array('filesize' => 50.8), 'Linux' => array('filesize' => 31.8))),
            'da' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.6), 'OS X' => array('filesize' => 51.4), 'Linux' => array('filesize' => 32.4))),
            'de' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.1), 'OS X' => array('filesize' => 50.8), 'Linux' => array('filesize' => 31.8))),
            'el' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.2), 'OS X' => array('filesize' => 50.8), 'Linux' => array('filesize' => 31.8))),
            'en-GB' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.1), 'OS X' => array('filesize' => 50.8), 'Linux' => array('filesize' => 31.8))),
            'en-US' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.2), 'OS X' => array('filesize' => 51.0), 'Linux' => array('filesize' => 32.0))),
            'es-AR' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.1), 'OS X' => array('filesize' => 50.8), 'Linux' => array('filesize' => 31.8))),
            'es-ES' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.0), 'OS X' => array('filesize' => 50.8), 'Linux' => array('filesize' => 31.7))),
            'et' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.7), 'OS X' => array('filesize' => 51.6), 'Linux' => array('filesize' => 32.5))),
            'eu' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.1), 'OS X' => array('filesize' => 50.8), 'Linux' => array('filesize' => 31.8))),
            'fi' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.1), 'OS X' => array('filesize' => 50.8), 'Linux' => array('filesize' => 31.8))),
            'fr' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.4), 'OS X' => array('filesize' => 51.2), 'Linux' => array('filesize' => 32.1))),
            'fy-NL' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.1), 'OS X' => array('filesize' => 50.8), 'Linux' => array('filesize' => 31.7))),
            'ga-IE' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.1), 'OS X' => array('filesize' => 50.8), 'Linux' => array('filesize' => 31.7))),
            'gd' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.1), 'OS X' => array('filesize' => 50.8), 'Linux' => array('filesize' => 31.7))),
            'gl' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.1), 'OS X' => array('filesize' => 50.8), 'Linux' => array('filesize' => 31.7))),
            'he' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.1), 'OS X' => array('filesize' => 50.8), 'Linux' => array('filesize' => 31.7))),
            'hr' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.1), 'OS X' => array('filesize' => 50.8), 'Linux' => array('filesize' => 31.7))),
            'hu' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.6), 'OS X' => array('filesize' => 51.4), 'Linux' => array('filesize' => 32.3))),
            'hy-AM' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.2), 'OS X' => array('filesize' => 50.9), 'Linux' => array('filesize' => 31.8))),
            'id' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.2), 'OS X' => array('filesize' => 50.9), 'Linux' => array('filesize' => 31.9))),
            'is' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.1), 'OS X' => array('filesize' => 50.8), 'Linux' => array('filesize' => 31.7))),
            'it' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.0), 'OS X' => array('filesize' => 50.8), 'Linux' => array('filesize' => 31.6))),
            'ja' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.3), 'OS X' => array('filesize' => 51.1), 'Linux' => array('filesize' => 32.1))),
            'ko' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.1), 'OS X' => array('filesize' => 50.8), 'Linux' => array('filesize' => 31.8))),
            'lt' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.4), 'OS X' => array('filesize' => 51.1), 'Linux' => array('filesize' => 32.1))),
            'nb-NO' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.1), 'OS X' => array('filesize' => 50.8), 'Linux' => array('filesize' => 31.7))),
            'nl' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.7), 'OS X' => array('filesize' => 51.5), 'Linux' => array('filesize' => 32.5))),
            'nn-NO' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.1), 'OS X' => array('filesize' => 50.8), 'Linux' => array('filesize' => 31.8))),
            'pa-IN' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.2), 'OS X' => array('filesize' => 50.9), 'Linux' => array('filesize' => 31.9))),
            'pl' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 26.0), 'OS X' => array('filesize' => 51.8), 'Linux' => array('filesize' => 32.8))),
            'pt-BR' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.2), 'OS X' => array('filesize' => 51.0), 'Linux' => array('filesize' => 31.9))),
            'pt-PT' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.3), 'OS X' => array('filesize' => 51.0), 'Linux' => array('filesize' => 31.9))),
            'rm' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.1), 'OS X' => array('filesize' => 50.8), 'Linux' => array('filesize' => 31.8))),
            'ro' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.6), 'OS X' => array('filesize' => 51.4), 'Linux' => array('filesize' => 32.4))),
            'ru' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.5), 'OS X' => array('filesize' => 51.3), 'Linux' => array('filesize' => 32.3))),
            'si' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.2), 'OS X' => array('filesize' => 50.9), 'Linux' => array('filesize' => 31.9))),
            'sk' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.8), 'OS X' => array('filesize' => 51.7), 'Linux' => array('filesize' => 32.7))),
            'sl' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.1), 'OS X' => array('filesize' => 50.8), 'Linux' => array('filesize' => 31.7))),
            'sq' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.1), 'OS X' => array('filesize' => 50.8), 'Linux' => array('filesize' => 31.7))),
            'sr' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 26.3), 'OS X' => array('filesize' => 52.6), 'Linux' => array('filesize' => 33.7))),
            'sv-SE' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.6), 'OS X' => array('filesize' => 51.4), 'Linux' => array('filesize' => 32.4))),
            'ta-LK' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.2), 'OS X' => array('filesize' => 50.9), 'Linux' => array('filesize' => 31.9))),
            'tr' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.1), 'OS X' => array('filesize' => 50.8), 'Linux' => array('filesize' => 31.7))),
            'uk' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.5), 'OS X' => array('filesize' => 51.3), 'Linux' => array('filesize' => 32.1))),
            'vi' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.2), 'OS X' => array('filesize' => 50.9), 'Linux' => array('filesize' => 31.8))),
            'zh-CN' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.1), 'OS X' => array('filesize' => 50.8), 'Linux' => array('filesize' => 31.7))),
            'zh-TW' => array(LATEST_THUNDERBIRD_VERSION  => array('Windows' => array('filesize'  => 25.3), 'OS X' => array('filesize' => 51.0), 'Linux' => array('filesize' => 31.9)))
        );

        var $beta_builds = array(
        );

        /**
         * Constructor.
         */
        function thunderbirdBuildDetails() {
            parent::productDetails();
        }
    }
?>
